Можно ли объединить анисовые group_vars, если возможно, вы можете мне помочь, как решить - PullRequest
0 голосов
/ 22 июня 2019

На самом деле у меня есть group_vars, мне нужно объединить эти переменные, вы можете мне помочь.

group_vars/eu/main.yaml
mgmt_routes:
 Tok:
  -  ip: 172.22.203.253
     netmask: 255.255.255.255 

group_vars/all/main.yaml     
mgmt_routes:
 all:
  -  ip: 172.18.0.70
     netmask: 255.255.255.255 
  -  ip: 172.18.3.50
     netmask: 255.255.255.255 

Как мне интегрировать эти переменные и Как я могу вызвать объединенные переменные в playbook

Ответы [ 2 ]

1 голос
/ 22 июня 2019

Упростим данные

$ cat group_vars/all/main.yml 
mgmt_routes:
 all: ALL ROUTES
$ cat group_vars/eu/main.yml 
mgmt_routes:
 Tok: TOK ROUTES

С файлом инвентаря

[eu]
test_01

[us]
test_02

пьесы ниже

- hosts: test_01
  tasks:
    - debug:
        var: mgmt_routes

- hosts: test_02
  tasks:
    - debug:
        var: mgmt_routes
    - set_fact:
        all_routes_list: "{{ hostvars|
                             json_query('*.mgmt_routes')|
                             unique }}"
    - set_fact:
        all_routes_dict: "{{ all_routes_dict|
                             default({})|
                             combine(item) }}"
      loop: "{{ all_routes_list }}"
    - debug:
        var: all_routes_dict

дать (сокращенно)

ok: [test_01] => {
    "mgmt_routes": {
        "Tok": "TOK ROUTES"
    }
}

ok: [test_02] => {
    "mgmt_routes": {
        "all": "ALL ROUTES"
    }
}

ok: [test_02] => {
    "all_routes_dict": {
        "Tok": "TOK ROUTES", 
        "all": "ALL ROUTES"
    }
}

Это то, что вы ищете?

0 голосов
/ 24 июня 2019

Спасибо, что ответили на мой пост, но на самом деле мне нужно работать с group_vars, а не с host vars.

...