Ansible从命令行获取用户名

时间:2014-06-07 09:31:22

标签: ansible ansible-playbook

在我的剧本中,我引用了很多用户名(仅限于#34; ubuntu")。

是否有内置的方式来说明"从命令行传递的值中获取它"?

我知道我能做到

ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"

然后我可以在剧本中使用{{user}},但定义用户两次感觉很奇怪。

2 个答案:

答案 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}}。