将SSH配置文件与Vagrantfile放置在同一目录中,并使用Ansible进行ping操作
我正在做令人感激的Ansible日本語教程(http://yteraoka.github.io/ansible-tutorial/),然后在ping命令中突然遇到了问题。
$ ansible -i hosts 192.168.33.12 -m ping
192.168.33.12 | FAILED => SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue
添加-vvvv选项后,似乎ssh config并不会读取预期的位置,而是读取~/.ssh/config文件。我想要将vagrant创建的vm的ssh配置文件与Vagrantfile放在同一个位置,所以我进行了一些调查。似乎可以通过ansible.cfg文件进行设置:
http://docs.ansible.com/intro_configuration.html#ssh-args
下面是设定的结果。
各个文件的内容
由于Vagrantfile仍然保持着教程中的原样,因此可以省略。
[ssh_connection]
ssh_args = -F ssh.config
Host node1
HostName 127.0.0.1
User vagrant
Port 2001
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/yoccola/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
Host node2
HostName 127.0.0.1
User vagrant
Port 2002
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/yoccola/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
[vagrant]
node1
node2
确认
我试着用主机设置的名称来进行ping操作。
$ ansible -i hosts node1 -m ping
node1 | success >> {
"changed": false,
"ping": "pong"
}
这样也行。
$ ansible -i hosts all -m ping
node1 | success >> {
"changed": false,
"ping": "pong"
}
node2 | success >> {
"changed": false,
"ping": "pong"
}
请参考
Ansible 教程 | 以日文为主的 Ansible 教程
http://yteraoka.github.io/ansible-tutorial/
Ansible配置文件
http://docs.ansible.com/intro_configuration.html