vagrantホストからゲストへansibleで接続する
vagrantゲストを2台作成して、1台からもう1台へansibleコマンドで操作するサンプルは結構あったのだが、ゲスト1台のみを構築する手順が見当たらなかったのでメモしておきます。
ssh接続情報の確認
vagrantゲストへssh接続するにはvagrantユーザーを使用すると、ゲストへ直接接続するのではなく、一度localhostを経由してポートフォワーディングしてゲストに接続するようです。
sshの接続の確認方法はvagrant ssh-config
で確認できます。
$ vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile "PATH_TO_DIRECTORY/.vagrant/machines/default/virtualbox/private_key" IdentitiesOnly yes LogLevel FATAL
この例だと、ホストの2222ポートを使用してゲストにssh接続しています。
ansible hostsファイルの編集
ansibleで操作するサーバーの情報をhostsファイルに設定しておく必要があります。 これにはssh接続に関する情報も設定できるので、ssh-configで調べた情報を元に以下のように設定しておきます。
[db-server] db1 ansible_port=2222 ansible_host=127.0.0.1 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key
ansibleコマンドの実行
以下のようにpingを実行し、正常に実行されればansibleでゲストを操作できることになります。
$ ansible db-server -i hosts -m ping db1 | SUCCESS => { "changed": false, "ping": "pong" }