Fórum Root.cz
Hlavní témata => Software => Téma založeno: czechsys 20. 06. 2019, 10:07:34
-
Ahoj,
mam takovouhle syntaxi:
group_vars/groupname
parameter:
option1: "value"
option2: "value"
host_vars/hostname
parameter:
option3: "value"
V cem je problem - playbook nespoji tyto parametry, defakto pokud dobre chapu, tak definovanim "parameter" na urovni host_vars zmizela option1 a option2. Rad bych, kdyby to slo nejak takhle doplnovat, jinak musim mit ruzne nazvy promennych pro to same.
Jde to nejak?
-
V tomhle konkrétním případě půjde upravit kód asi nějak takhle
group_vars/groupname
group_parameter:
option1: "value"
option2: "value"
host_vars/hostname
host_parameter:
option3: "value"
a pak na začátek playbooku:
- name: Merge parametr
set_fact:
parametr: '{{ group_parameter + item }}'
loop:
- '{{ host_parameter | default(null) }}'
-
Celý problém je v tom zanoření do parameter. Ansible nadefinuje a přepíše vždy celé proměnné. Proto je typické použití podtržítek místo slovníku:
group_vars/groupname
parameter_option1: "value"
parameter_option2: "value"
host_vars/hostname
parameter_option3: "value"
-
Prvni metoda je prilis komplikovana, druha zase komplikuje cykly. No, aspon uz nebudu ztracet cas hledanim neceho, co neni.
-
Možná hledáte konfigurační parametr hash_behaviour, který určuje chování při předefinování proměnné typu hash/dictionary. Výchozí nastavení má hodnotu "replace". Se změnou na "merge" bude vícenásobné definice stejné proměnné slučovat dohromady.
Krom toho je možné používat u použití proměnné filtr "combine", který dělá totéž pro konkrétní proměnnou na konkrétním místě a je autory Ansbile více doporučované.
Viz: https://docs.ansible.com/ansible/latest/reference_appendices/config.html?highlight=hash_behaviour#default-hash-behaviour
-
Možná hledáte konfigurační parametr hash_behaviour, který určuje chování při předefinování proměnné typu hash/dictionary. Výchozí nastavení má hodnotu "replace". Se změnou na "merge" bude vícenásobné definice stejné proměnné slučovat dohromady.
Krom toho je možné používat u použití proměnné filtr "combine", který dělá totéž pro konkrétní proměnnou na konkrétním místě a je autory Ansbile více doporučované.
Viz: https://docs.ansible.com/ansible/latest/reference_appendices/config.html?highlight=hash_behaviour#default-hash-behaviour
Dik, ten combine by sel, ted uz to mam prepsane, zvazim pozdeji, zda se mi vyplati to zmenit zpatky.
-
Da sa urobit merge dvoch poli napr takto:
- name: merging hash_a and hash_b into hash_c
set_fact: hash_c="{{ hash_a|combine(hash_b) }}"