25

在我的剧本中,我经常引用用户名(仅是它的“ubuntu”)。

是否有一种内置方式可以说“从命令行中传递的值中获取它”?

我知道我能做到

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

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

4

2 回答 2

36

正如 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
于 2014-06-09T13:20:27.870 回答
2

我相信执行此操作的标准方法是在清单文件中定义 ansible_ssh_user ,然后您可以在 playbook 中将其引用为 {{ ansible_ssh_user }} 。

于 2014-06-07T12:55:17.923 回答