通常,您可以使用vagrant ssh
ssh进入Vagrant管理的VM。有两种选择:
insecure_private_key
认证。 config.ssh.forward_agent
设置为true
,虚拟机为vagrant ssh
正确配置我使用第二个选项。当我运行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}
进行搜索没有问题,而上述操作无法运行。
我们非常感谢任何建议。
答案 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
答案 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