如何在命令行上覆盖ansible_user?

如何在命令行上覆盖ansible_user?

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

ansible_user: blackknight

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

% ansible-playbook -u kingarthur test.yml

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

- hosts: localhost
  tasks:
    - debug: var=ansible_user

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

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

答案1

文档:

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

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

ansible -u carol -e 'ansible_user=brian' -a whoami all

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

相关内容