Ansible从命令行获取用户名

ric*_*ier 21 ansible ansible-playbook

在我的剧本中,我引用了很多用户名(仅限其"ubuntu").

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

我知道我能做到

ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"
Run Code Online (Sandbox Code Playgroud)

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

Ram*_*nte 33

正如Woodham所说,代表连接用户的ansible变量是

{{ ansible_user }} (Ansible < 2.0 was {{ ansible_ssh_user }} )
Run Code Online (Sandbox Code Playgroud)

但您不必在库存文件中定义它本身.

您可以在以下位置定义它:

1.您的游戏,如果您使用ansible-playbook: 请参阅Playbooks上的手册

- name: Some play
  hosts: all
  remote_user: ubuntu
Run Code Online (Sandbox Code Playgroud)

2.在库存文件中: 请参阅库存手册

[all]
other1.example.com     ansible_user=ubuntu (Ansible < 2.0 was ansible_ssh_user)
Run Code Online (Sandbox Code Playgroud)

正如你所说,在命令行上:

ansible-playbook -i inventory -u ubuntu playbook.yml
Run Code Online (Sandbox Code Playgroud)

4.一个ansible配置文件作为remote_user指令. 请参阅配置文件中的手册

ansible配置文件可以放在当前文件夹ansible.cfg,homedir .ansible.cfg/etc/ansible/ansbile.cfg.

[defaults]
remote_user=ubuntu
Run Code Online (Sandbox Code Playgroud)