所以我有这个剧本,在这本剧本中我有一个变量,让我们称之为the_var
现在,此变量应始终具有相同的值default
,但某些库存应为not_default
这就是我在group_vars/all.yml
the_var: default
inventories/my_special_inv
下the_var=not_default
下[all:vars]
ansible-playbook -i inventories/my_special_inv
not_default
下default
当我运行awk '
{
name = text = $0
sub(/:.*/,"",name)
sub(/[^:]+:/,"",text)
cmd = "trans args \"" text "\""
if ( (cmd | getline rslt) > 0 ) {
print name ":" rslt
}
close(cmd)
}
' file
时,我希望变量值为void f(int unused) {
unused = unused;
}
(因为我用库存文件覆盖了默认行为)。但它设置为-W{all,extra,pedantic}
如何正确实现此行为?
答案 0 :(得分:0)
我给你的工作示例将帮助你更好地理解它:
.
|-- default
| |-- group_vars
| | `-- server.yml
| `-- inventory
|-- site.yml
|-- special
| |-- group_vars
| | `-- server.yml
| `-- inventory
在这个例子中,我刚刚对localhost主机进行了测试,所以在special/inventory
和default/inventory
内,我有这个组,但你可以根据需要放置任何东西:
[server]
localhost
重要的是组名称,它应该匹配default/group_vars
和special/group_vars
文件名(在我的情况下它是server
但在你的情况下它可以是任何东西):< / p>
所以在default/group_vars
,我已经放置了:
---
the_var: default
并在special/group_vars
中,我放置了:
---
the_var: not_default
在我的测试手册中(在这种情况下为site.yml
)有:
---
- hosts: all
gather_facts: no
tasks:
- debug:
msg: "{{ the_var }}"
现在,当我针对默认库存调用playbook时,得到了这个值:
anansible-playbook -i default site.yml -c local
PLAY [all] *********************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "default"
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
当我针对特殊库存调用剧本时,得到了这个值:
ansible-playbook -i special site.yml -c local
PLAY [all] *********************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "not_default"
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
-c local
用于您在实时环境中不需要的localhost连接,我确信您正在使用ssh连接的远程主机,这是默认设置。希望对你有所帮助。