created: 2022-08-24T06:45:49.240Z

Linux に ansible を走らせる用の ssh できるユーザを追加して疎通確認

こちらの作業で ansible を走らせる際に使うユーザを追加したときのメモ。

ユーザ追加のスクリプト

# /var/log配下のログが閲覧できるようadmグループもつける
export CSV_GROUPS=sudo,adm
export USERNAME=myuser

sudo useradd --create-home --shell /bin/bash $USERNAME
sudo usermod -aG $CSV_GROUPS $USERNAME
echo "$USERNAME ALL=NOPASSWD: ALL" | sudo tee -a /etc/sudoers

# ssh
sudo mkdir -p /home/$USERNAME/.ssh/
# ここはなんとかして公開鍵(rsa.pub)をコピペしておく
sudo vi /home/$USERNAME/.ssh/authorized_keys
sudo chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh
sudo -u $USERNAME chmod 600 authorized_keys

参考

接続情報

ansible の実行には2ファイルが必要。

  • プレイブック
    • eg: playbook.yml
    • 実行するスクリプトを記述するファイル
  • インベントリファイル
    • eg: hosts.yml
    • プロビジョニング先との接続情報を管理するファイル

インベントリファイルは yaml で書ける。

# ./hosts.yml
raspberrypi:
  hosts:
    raspberrypi.local
  vars:
    ansible_connection: ssh
    ansible_ssh_user: myuser
    ansible_ssh_private_key_file: ~/.ssh/myuser_raspberrypi_rsa

疎通の確認だけなら hosts.yml だけでできる。

疎通確認

--module-name ping でつながるかどうかが確認できる。

$ export HOST=raspberrypi
$ ansible -vvv --inventory ./hosts.yml $HOST --module-name ping
ansible [core 2.12.2]
  config file = None

...(中略)...

raspberrypi.local | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3.9"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "data": "pong"
        }
    },
    "ping": "pong"
}

その他

sshpass を入れないと、ansibleはパスフレーズ付きのssh鍵をつかって実行できないので入れておく。

$ brew install hudochenkov/sshpass/sshpass
Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考
[ad] Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考
Tom Long, 秋勇紀 (単行本(ソフトカバー))