使用Ansible将SSH连接到Vagrant机器

时间:2015-09-23 20:08:26

标签: ssh vagrant ansible

通常,您可以使用vagrant ssh ssh进入Vagrant管理的VM。有两种选择:

  1. 您可以使用Vagrant生成的insecure_private_key 认证。
  2. 使用您自己的私钥 - 只要这样 config.ssh.forward_agent设置为true,虚拟机为vagrant ssh 正确配置
  3. 我使用第二个选项。当我运行Vagrantfile时,我使用自定义私钥ssh进入计算机。

    现在我需要让Ansible SSH进入我的Vagrant机器,我不想使用ansible-playbook -i hosts/development --private-key=~/.ssh/id_rsa -u vagrant dev.yml

    所以我执行了:

    hosts/inventory

    我发现了这个错误:

      

    致命:[192.168.50.5] => SSH错误:权限被拒绝(publickey)。   连接到192.168.50.5:22

    vagrant文件只包含我的Vagrant VM的IP(192.168.50.5)。

    我不知道为什么Ansible不能进入虚拟机。在执行id_rsa时,它使用完全相同的用户(vagrant ssh)和密钥(vagrant ssh)。

    但是,使用{categories show_group="4"}data-category="{category_id "{/categories}进行搜索没有问题,而上述操作无法运行。

    我们非常感谢任何建议。

2 个答案:

答案 0 :(得分:20)

问题可能在您的hosts/inventory文件中。您需要在其中为Ansible添加正确的连接配置,保存并重新运行。

192.168.50.5 ansible_ssh_port=22 ansible_ssh_user=vagrant ansible_ssh_private_key_file=~/.ssh/id_rsa 

如果您没有使用端口22,请相应地调整主机文件中的ansible_ssh_port

你也可能没有在Vagrant中设置你的pubkey,因此这也行不通。要对此进行测试,请运行:

vagrant ssh-config | grep IdentityFile
# result should be your private key and not
#   .vagrant/machines/default/virtualbox/private_key

如果您尚未将pubkey放入Vagrant虚拟机中,则需要在尝试使用私钥之前先添加{。}}。

参考:http://docs.ansible.com/ansible/intro_inventory.html#list-of-behavioral-inventory-parameters

参考:https://docs.vagrantup.com/v2/cli/ssh_config.html

答案 1 :(得分:0)

我认为您应该尝试使用无业游民生成的广告资源。 这样可以避免您除了Vagrantfile之外还需要维护Ansible库存。

例如,您应该找到用于vagrant ssh的类似清单:

cat .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
>>>
# Generated by Vagrant

default ansible_host=127.0.0.1 ansible_port=2222 ansible_user='vagrant' ansible_ssh_private_key_file='/home/someone/coding-in-a-project/.vagrant/machines/default/virtualbox/private_key'

您将能够运行ansible临时命令和ansible-playbook命令。 (请根据您的需要指定此名称:--private-key=~/.ssh/your_private_key

ansible default -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory -m ansible.builtin.shell -a 'echo foobar'
ansible-playbook -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml

源:https://docs.ansible.com/ansible/latest/scenario_guides/guide_vagrant.html