我正在尝试设置对所有剧本有效的全局变量
我正在尝试在group_vars /所有文件中设置此全局变量
我想设置一个变量,该变量可以根据条件具有多个值
我曾尝试使用以下条件:
kdump_nfs: 'nfs1'
when: ansible_local.default_gateway.site == "site1"
kdump_nfs: 'nfs2'
when: ansible_local.default_gateway.site == "site2"
但得到: [警告]:从/ group_vars / all的第1行第1列构造映射时,发现重复的字典键(kdump_nfs)。仅使用最后定义的值。
如何根据条件设置变量“ kdump_nfs”以获取不同的值
答案 0 :(得分:0)
在组vars上设置变化的变量不是一个好的选择。您可以使用额外的var来传递将更加动态的变量值。
例如。
-额外变量“ var_name = $ {var_value}”
答案 1 :(得分:0)
$ cat group_vars/all/main.yml
my_variable: "{% if condition1 %}foo{% else %}bar{% endif %}"
$ cat site.yml
- hosts: all
gather_facts: false
tasks:
- name: site.yml --> Print debug variable
debug:
msg: "{{ my_variable }}"
$ ansible-playbook --connection=local --inventory 127.0.0.1, site.yml --extra-vars "condition1=True"
PLAY [all] ********************************************************************************************************************************************************************************************************
TASK [site.yml --> Print debug variable] **************************************************************************************************************************************************************************
ok: [127.0.0.1] => {
"msg": "foo"
}
PLAY RECAP ********************************************************************************************************************************************************************************************************
127.0.0.1 : ok=2 changed=0 unreachable=0 failed=0