有条件地在group_vars / all中设置变量

时间:2019-02-28 12:44:59

标签: ansible

我正在尝试设置对所有剧本有效的全局变量

我正在尝试在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”以获取不同的值

2 个答案:

答案 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