Ansible 在 Vagrant 中使用的难点在于获取 ssh 登录需要的配置信息。

在默认 Vagrantfile 中我们找不到这些信息,此时需要通过 vagrant ssh-config 命令查看

1
2
3
4
5
6
7
8
9
10
11
$ vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/wxnacy/.vagrant.d/boxes/wxnacy-VAGRANTSLASH-ubuntu1804/0/virtualbox/vagrant_private_key
IdentitiesOnly yes
LogLevel FATAL

啊,让我费解的 IdentityFile 文件终于露出来,关键就是这个文件。

接下来我们只需要配置 Ansible 的 hosts 文件,/etc/ansible/hosts 中添加,或者创建独立的 hosts 文件

1
2
[vagrant]
127.0.0.1 ansible_ssh_user=vagrant ansible_ssh_port=2222 ansible_ssh_private_key_file=/Users/wxnacy/.vagrant.d/boxes/wxnacy-VAGRANTSLASH-ubuntu1804/0/virtualbox/vagrant_private_key

最后查看是否能正常连接

1
2
3
4
$ ansible all -m command -a 'who' --inventory-file=hosts
127.0.0.1 | CHANGED | rc=0 >>
vagrant pts/0 Jul 30 07:35 (10.0.2.2)
vagrant pts/1 Jul 30 06:19 (10.0.2.2)

如果新建其他位置的 hosts 文件,需要 --inventory-file, -i 指定文件。

03-16 13:12