Ubuntu環境でAnsibleを使い、複数のサーバーにSSH鍵認証で接続しながら一括操作できるようにした手順をまとめました。
📆 環境
- 管理端末:Ubuntu(Proxmox上のVM)
- 対象サーバー:複数のLinuxマシン
- Ansibleバージョン:core 2.16.3
1. Ansibleのインストール
sudo apt update
sudo apt install ansible
2. SSH鍵ペアの作成(初回のみ)
ssh-keygen -t rsa -b 4096
Enter連打でOK(~/.ssh/id_rsa
と ~/.ssh/id_rsa.pub
が作成されます)
3. 対象サーバーに公開鍵をコピー
対象の各サーバーに対して以下を実行します:
ssh-copy-id admin@192.168.10.235
ssh-copy-id admin@192.168.10.236
ssh-copy-id admin@192.168.10.237
同じ公開鍵を複数のサーバーにコピーできます。
4. インベントリファイルの作成
/etc/ansible/hosts
に以下のように記述:
[web]
192.168.10.235
192.168.10.236
[db]
192.168.10.237
[all:vars]
ansible_user=admin
ansible_ssh_private_key_file=~/.ssh/id_rsa
5. 接続確認(ping)
ansible all -i /etc/ansible/hosts -m ping
以下のような出力が出れば成功:
192.168.10.235 | SUCCESS => { "ping": "pong" }
📆 トラブルシューティング
❌ Permission denied (publickey,password)
- 接続ユーザーの指定が必要:
-u admin
- またはパスワード認証用に
--ask-pass
を使う
❌ you must install the sshpass program
- パスワード認証を使う場合、
sshpass
のインストールが必要:
sudo apt install sshpass
❌ Unable to parse ... as an inventory source
- hostsファイルのパス指定 or フォーマットのミスが原因
✨ まとめ
- Ansibleは鍵認証とインベントリで超効率化できる
- pingで疎通確認 → Playbookで実践へステップアップ可能
- SSHの基本をおさえておけば、複数台管理がとても楽になる
以上、どなたかの参考になれば幸いです!