在我的剧本中,我引用了很多用户名(仅限于#34; ubuntu")。
是否有内置的方式来说明"从命令行传递的值中获取它"?
我知道我能做到
ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"
然后我可以在剧本中使用{{user}}
,但定义用户两次感觉很奇怪。
答案 0 :(得分:31)
正如Woodham所说,代表连接用户的ansible变量是
{{ ansible_user }} (Ansible < 2.0 was {{ ansible_ssh_user }} )
但您不必在库存文件中对其进行定义。
您可以在以下位置定义:
<强> 1。你的游戏,如果你使用ansible-playbook: See the manual on Playbooks
- name: Some play
hosts: all
remote_user: ubuntu
<强> 2。在库存文件中: See the manual on inventory
[all]
other1.example.com ansible_user=ubuntu (Ansible < 2.0 was ansible_ssh_user)
第3。正如您所说,在命令行上:
ansible-playbook -i inventory -u ubuntu playbook.yml
<强> 4。一个ansible配置文件作为remote_user
指令。
See the manual on a config file
ansible配置文件可以放在当前文件夹ansible.cfg
,您的homedir .ansible.cfg
或/etc/ansible/ansbile.cfg
。
[defaults]
remote_user=ubuntu
答案 1 :(得分:2)
我认为执行此操作的标准方法是在库存文件中定义ansible_ssh_user,然后您可以在剧本中将其引用为{{ansible_ssh_user}}。