質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

解決済

vagrantにansibleでSSHしようとすると失敗する

ryuuinn
ryuuinn

総合スコア75

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

1回答

0評価

1クリップ

5041閲覧

投稿2016/09/03 14:53

編集2016/09/04 01:47

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" }

なぜこれでうまく言ってしまうのでしょうか。。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

issei.

2016/09/03 18:32

エラーメッセージにあるとおり、まずはSSHコマンドに -vvvv をつけてデバッグ表示してみてください。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。