在Vagrant中运行ad hoc Ansible命令?

joe*_*ler 15 vagrant ansible ansible-ad-hoc

在构建Vagrant项目时,运行临时Ansible任务而不是将测试命令添加到剧本中会很有帮助.我已经尝试了几种针对VM的方法,但不断收到此错误:

default | FAILED => SSH encountered an unknown error during the connection. We 
recommend you re-run the command using -vvvv, which will enable SSH debugging
output to help diagnose the issue
Run Code Online (Sandbox Code Playgroud)

我正在使用Vagrant生成的Ansible清单文件,该框有一个工作主机名.如何使用单个Ansible任务来定位我的Vagrant VM?

joe*_*ler 14

我错过了Vagrant的私人密钥.在这里找到:stackoverflow.com/a/18943360/503463

有几种方法可以做到这一点,但这是我正在使用的:

ansible all -i vagrant_ansible_inventory_default -u vagrant --private-key ~/.vagrant.d/insecure_private_key -m ping
Run Code Online (Sandbox Code Playgroud)

之前的一切-m基本上都是样板.我正在使用默认用户名'vagrant'的标准框.该标志-i vagrant_ansible_inventory_default告诉Ansible使用Vagrant生成的库存文件; 它包含一个主机,因此定位all是安全的('默认'也可以).最后,我们传递Vagrant私钥来验证ssh连接:--private-key ~/.vagrant.d/insecure_private_key

  • 此外,您可以使用`ansible_ssh_user`和`ansible_ssh_private_key_file`参数将用户和私钥直接添加到清单文件中,因此您无需一直输入这些参数.参见[行为库存参数列表](http://docs.ansible.com/intro_inventory.html#list-of-behavioral-inventory-parameters) (3认同)