vagrantで作ったゲストOSに対し、ansibleを使ってprovisioningしようとしています。
ただ、ansibleからsshでゲストOSへ接続が出来ません。
ansible servers -m ping -i hosts -u vagrant --private-key .vagrant/machines/default/virtualbox/private_key
このようにしても、下記エラーがでてしまします。
192.168.33.12 | FAILED => SSH Error: ssh: connect to host 192.168.33.12 port 22: Operation timed out while connecting to 192.168.33.12:22 It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
- Vagrantfile
Vagrant.configure("2") do |config| config.vm.box = "centos7" config.vm.network "public_network", ip: "192.168.33.12" end
なぜこうなってしまうのか、よく分かっておりません。
解決方法をご教示いただけないでしょうか。
-vvvvをつけた結果
$ ansible -vvvv servers -m ping -i hosts -u vagrant --private-key .vagrant/machines/default/virtualbox/private_key <192.168.33.12> ESTABLISH CONNECTION FOR USER: vagrant <192.168.33.12> REMOTE_MODULE ping <192.168.33.12> EXEC ssh -C -tt -vvv -F ssh.config -o IdentityFile=".vagrant/machines/default/virtualbox/private_key" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 192.168.33.12 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1472951291.76-279065967329050 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1472951291.76-279065967329050 && echo $HOME/.ansible/tmp/ansible-tmp-1472951291.76-279065967329050' 192.168.33.12 | FAILED => SSH Error: Can't open user config file ssh.config: No such file or directory It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
↑ なぜかエラーの内容が変わっているみたいです。。
Vagrantfileと同じディレクトリのssh.configを消してしまってたようです
昨日まで、同じディレクトリに下記のような、ssh.config
ファイルを配置してましたが、
消してしまった結果、↑のようなエラーに変っていたようです。
vagrant ssh-config > ssh.config
して、再度作りなおしてみました。
- sssh.config
Host default HostName 127.0.0.1 User vagrant Port 2201 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /path/to/vagrant/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL
※ /path/to/vagrant
は、Vagrantfileが置いてあるディレクトリへのパスです。
再度-vvvvをつけて実行してみる
$ ansible -vvvv servers -m ping -i hosts -u vagrant --private-key .vagrant/machines/default/virtualbox/private_key <192.168.33.12> ESTABLISH CONNECTION FOR USER: vagrant <192.168.33.12> REMOTE_MODULE ping <192.168.33.12> EXEC ssh -C -tt -vvv -F ssh.config -o IdentityFile=".vagrant/machines/default/virtualbox/private_key" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 192.168.33.12 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1472952616.32-169524910825345 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1472952616.32-169524910825345 && echo $HOME/.ansible/tmp/ansible-tmp-1472952616.32-169524910825345' 192.168.33.12 | FAILED => SSH Error: ssh: connect to host 192.168.33.12 port 22: Operation timed out while connecting to 192.168.33.12:22 It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
やはり昨日と同じエラーになってしまいました。
vagrant ssh-configの結果と同じ内容で試すと成功した
vagrant ssh-config
の結果を見ると、HostName 127.0.0.1
/ Port 2201
となっていたので、hosts
を下記のように修正してみました。
- 修正前
[servers] 192.168.33.12 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key
- 修正後
[servers] 127.0.0.1 ansible_ssh_port=2201 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key
リトライ
$ ansible -vvvv servers -m ping -i hosts -u vagrant --private-key .vagrant/machines/default/virtualbox/private_key <127.0.0.1> ESTABLISH CONNECTION FOR USER: vagrant <127.0.0.1> REMOTE_MODULE ping <127.0.0.1> EXEC ssh -C -tt -vvv -F ssh.config -o Port=2201 -o IdentityFile=".vagrant/machines/default/virtualbox/private_key" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 127.0.0.1 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1472953608.71-173719564609049 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1472953608.71-173719564609049 && echo $HOME/.ansible/tmp/ansible-tmp-1472953608.71-173719564609049' <127.0.0.1> PUT /var/folders/f5/7mxqmyw53m1fh1nbxnp_v5vr0000gn/T/tmpwB1h2C TO /home/vagrant/.ansible/tmp/ansible-tmp-1472953608.71-173719564609049/ping <127.0.0.1> EXEC ssh -C -tt -vvv -F ssh.config -o Port=2201 -o IdentityFile=".vagrant/machines/default/virtualbox/private_key" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 127.0.0.1 /bin/sh -c 'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1472953608.71-173719564609049/ping; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1472953608.71-173719564609049/ >/dev/null 2>&1' 127.0.0.1 | success >> { "changed": false, "ping": "pong" }
なぜこれでうまく言ってしまうのでしょうか。。
回答1件
あなたの回答
tips
プレビュー