在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
是变量,而不是命令行选项,它们将覆盖配置设置、命令行选项、剧本关键字以及其他地方设置的变量。例如,此任务将连接brian
为carol
:ansible -u carol -e 'ansible_user=brian' -a whoami all
您必须使用 指定变量名称和值
--extra-vars
。