Ansible 从命令行获取用户名

标签 ansible

在我的剧本中,我经常引用用户名(仅指“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/

相关文章:

git - 如何让 Ansible 检查在剧本中只运行一次?

Ansible:如何从另一个剧本调用剧本?

python - 如何使用 Ansible 在 Ubuntu 上禁用 SELinux?

ansible - 我如何通过 Ansible 在气隙系统上安装 snap 包

Ansible 2.4主机文件警告

vagrant - 使用 ansible_local 时 playbook 的路径错误

asynchronous - Ansible 显示任务已更改但任务有条件(创建 : ) and does not actually execute

ansible - 为什么我的 Ansible 任务挂起?

docker - 使用 Docker 管理开发/测试/生产环境

ruby - 将 ansible 与 rvm 和 rvmrc 结合使用