将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

广告
将在 10 秒后关闭
bannerAds