如何在命令行上覆盖 ansible_user?

Mac*_*eek 1 ansible

group_vars/all.yml我定义了一个默认的远程用户:

ansible_user: blackknight
Run Code Online (Sandbox Code Playgroud)

但在某些情况下,我喜欢在命令行上覆盖它:

% ansible-playbook -u kingarthur test.yml

test.yml 是一个简单的调试手册

- hosts: localhost
  tasks:
    - debug: var=ansible_user
Run Code Online (Sandbox Code Playgroud)

执行时它告诉我"ansible_user": "blackknight"

我应该如何更改我的变量或剧本以具有非标准ansible_user,但仍允许它在命令行上指定(以便命令行选项优先于我在变量中的默认值)?

mur*_*uru 6

文档

在命令行使用 -e 额外变量

要覆盖所有其他类别中的所有其他设置,您可以使用额外变量:--extra-vars-e在命令行中。传递的值-e是变量,而不是命令行选项,它们将覆盖配置设置、命令行选项和剧本关键字以及其他地方设置的变量。例如,此任务将连接brian不为carol

ansible -u carol -e 'ansible_user=brian' -a whoami all
Run Code Online (Sandbox Code Playgroud)

您必须使用 指定变量名称和值 --extra-vars

  • 我应该更好地阅读文档。https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable (2认同)