在我的剧本中,我经常引用用户名(仅指“ubuntu”)。
是否有内置的方式来表示“从命令行中传递的值获取它”?
我知道我能做到
ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"
然后我可以在剧本中使用{{user}}
,但定义用户两次感觉很奇怪。
最佳答案
正如 Woodham 所说,代表连接用户的 ansible 变量是
{{ ansible_user }} (Ansible < 2.0 was {{ ansible_ssh_user }} )
但您不必在 list 文件本身中定义它。
您可以在以下位置定义它:
<强>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。作为 remote_user
指令的 ansible 配置文件。
See the manual on a config file
ansible 配置文件可以放置在当前文件夹 ansible.cfg
、您的 homedir .ansible.cfg
或 /etc/ansible/ansbile.cfg
.
[defaults]
remote_user=ubuntu
关于Ansible 从命令行获取用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095807/