在我的剧本中,我经常引用用户名(仅是它的“ubuntu”)。
是否有一种内置方式可以说“从命令行中传递的值中获取它”?
我知道我能做到
ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"
然后我可以{{user}}
在剧本中使用,但是两次定义用户感觉很奇怪。
在我的剧本中,我经常引用用户名(仅是它的“ubuntu”)。
是否有一种内置方式可以说“从命令行中传递的值中获取它”?
我知道我能做到
ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"
然后我可以{{user}}
在剧本中使用,但是两次定义用户感觉很奇怪。
正如 Woodham 所说,代表连接用户的 ansible 变量是
{{ ansible_user }} (Ansible < 2.0 was {{ ansible_ssh_user }} )
但是您不必在清单文件本身中定义它。
您可以在以下位置定义它:
1. 你的剧本,如果你使用 ansible-playbook: 见手册上的剧本
- name: Some play
hosts: all
remote_user: ubuntu
2.在库存文件中: 参见库存手册
[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
指令。
请参阅配置文件的手册
ansible 配置文件可以放在当前文件夹ansible.cfg
、你的 homedir.ansible.cfg
或/etc/ansible/ansbile.cfg
.
[defaults]
remote_user=ubuntu
我相信执行此操作的标准方法是在清单文件中定义 ansible_ssh_user ,然后您可以在 playbook 中将其引用为 {{ ansible_ssh_user }} 。