我有一个vagrant
盒子,里面有precise32
启动并运行。
我在~/Workspace/vagrans/ansible
文件夹中,其中有一个文件ansible.cfg
,其中包含以下条目:
[defaults]
inventory = ./dms/dev
private_key_file = /home/pkaramol/Workspace/vagrans/vagrant/precise32/.vagrant/machines/default/virtualbox/private_key
这有效:
ansible -m ping all --private-key=/home/pkaramol/Workspace/vagrans/vagrant/precise32/.vagrant/machines/default/virtualbox/private_key -u vagrant
tsrv1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
这不会:
ansible-playbook playbooks/testplay.yml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
fatal: [tsrv1]: UNREACHABLE! => {"changed": false, "msg": "ERROR! 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", "unreachable": true}
PLAY RECAP *********************************************************************
tsrv1 : ok=0 changed=0 unreachable=1 failed=0
这是剧本:
- hosts: testservers
tasks:
- name: just pinging
ping:
这是库存文件
[testservers]
tsrv1
我一定是想念(?
无需像您建议的那样在配置文件和剧本之间拆分凭据。
您可以在private_key_file
旁边的ansible.cfg
中使用remote-user
参数:
[defaults]
inventory = ./dms/dev
remote-user = vagrant
private_key_file = /home/pkaramol/Workspace/vagrans/vagrant/precise32/.vagrant/machines/default/virtualbox/private_key
只需要在剧本中明确设置remote_user
即可vagrant
- hosts: testservers
remote_user: vagrant
tasks:
- name: just pinging
ping: