我刚刚发现了 Ansible,它太棒了!我写了一些很酷的剧本来管理服务器上的 0 停机 docker 部署,但由于有时我不得不在互联网连接较差的情况下工作,所以我浪费了相当多的时间来等待事情发生。所以我想,我也许可以针对 boot2docker 运行 Ansible,但没有成功,在做了一些研究后,我意识到它太 hacky 了,而且它的行为永远不会像我实际的 Ubuntu 服务器一样。所以在这里我试图让它与 Vagrant 一起工作。
我想要实现类似笔记本电脑> Ansible > Vagrant Box的功能;不想从 Vagrant Box 运行 playbook!
Vagrant 文件
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.ssh.forward_agent = true
end
Vagrant ssh 配置
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile "/Users/cesco/Code/vagrant/.vagrant/machines/default/virtualbox/private_key"
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
感谢一些问题,我能够做到这一点:
$ vagrant ssh-config > vagrant-ssh
$ ssh -F vagrant-ssh default
$ vagrant@vagrant-ubuntu-trusty-64:~$
但我不断收到localhost | FAILED => SSH 错误:权限被拒绝(公钥、密码)。
每次我尝试在 Vagrant 盒上运行 Ansible ping 时。
Ansible 库存
[staging]
vagrant@localhost
Ansible 配置
[ssh_connection]
ssh_args = -o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \
-o PasswordAuthentication=no \
-o IdentityFile=/Users/cesco/.vagrant.d/insecure_private_key \
-o IdentitiesOnly=yes \
-o LogLevel=FATAL \
-p 2222
如何将 ssh 文件转换为 ansible 配置? 它在命令行上也不起作用!
ssh -vvv vagrant@localhost -p 2222 -i /Users/cesco/.vagrant.d/insecure_private_key -o IdentitiesOnly=yes -o LogLevel=FATAL -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
最佳答案
要将 vagrant 与经典 ssh 连接一起使用,请首先将另一个私有(private) IP 添加到您的 Vagrant 文件中。
config.vm.network "private_network", ip: "192.168.1.2"
重新加载您的实例
vagrant reload
然后您可以使用私钥通过 ssh 进行连接。
ssh -vvv <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="790f181e0b18170d3948404b57484f415748574b" rel="noreferrer noopener nofollow">[email protected]</a> -p 2222 -i /Users/cesco/.vagrant.d/insecure_private_key
这是最好的办法。
关于ssh - Ansible 和 Vagrant 开发环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34655854/