ssh - Ansible 和 Vagrant 开发环境

标签 ssh vagrant ansible

我刚刚发现了 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/

相关文章:

ssh - MySQLDump 从通过 SSH 连接的远程服务器到本地机器

bash - Bash Grep Quiet SSH输出

macos - GitHub Mac 应用程序不断添加 SSH key ?

file - 如何使用 Ansible 创建空文件?

ubuntu - 可以以 root 身份而不是 ubuntu 用户身份 SSH 到 EC2 ubuntu 服务器

vagrant - 用于开发的 Docker - 监视/自动构建?

laravel - 在MAC上安装Laravel Homestead时出现问题

mysql - 使用 mysql Workbench 备份 Vagrant Mysql

ansible - 使用 "bracket notation"索引变量并不总是在 ansible 中工作

Ansible playbook 中的 Mongodb 查找错误