Fórum Root.cz
Hlavní témata => Software => Téma založeno: kolega 24. 08. 2018, 09:40:18
-
Ahoj mam takovy problem s Ansible
Defacto hledam neco jako "this" z OOP.
Jde mi o to, ze tento inventory variable file prozenu pres template, a chci abych nemusel vsechno vypisovat, tak aby se to predalo z objektu '.domain' vzdycky do jeho 'challenge.http_dir'. Toliko teorie.
benocs_certificates:
- domain: 'foo.bar'
#...
challenge:
# O tohle misto mi jde :] Item je /definovany/ diky loop v template file.
# Ale to asi nedava smysl protoze promenne se vyhodnocuji drive.
# Jak to vyresit?
http_dir: '{{item.domain}}'
http_path: '/var/www/{{item.challenge.http_dir}}'
- domain: 'anotherfoo.bar'
# ...
challenge:
# What the directory of the webserver is
# Default item.domain
http_dir: '{{item.domain}}'
# Whole path to the web folder
# default: '/var/www/{{item.challenge.http_dir}}'
http_path: '/var/www/{{item.challenge.http_dir}}'
Vystup:
benocs.com;/var/www/{{item.challenge.http_dir}};dummy_web1
Chtel bych
benocs.com;/var/www/benocs.com;dummy_web1
Pro sichr prikladam sablonu:
{% for host in groups['benocs_certificates'] %}
{% for item in hostvars[host].benocs_certificates %}
{{item.domain}};{{item.challenge.http_path}};{{host}}
{% endfor %}
{% endfor %}
a odpovidajici task:
- name: 'Build the http challenge config file on controller'
template:
src: templates/benocs_certificates/challenge_paths.csv.j2
dest: '{{benocs_certificates_master_dehydrated_path}}/challenge_paths.csv'
Mozna uvazuju naprosto mimo, diky za hinty smerem k reseni.
Ondra
-
Vymyslel jsem řešení, že jsem do proměnné dosadil by default: False, což v šabloně ošetřuje podmínka if, která udělá to, že se tam použije item.domain. Nevím jestli to je košér, nelíbí se mi to, ale možná to je správně