Vreau să creez un var bazat pe condiție, așa că am creat mai jos:
gazde: test
vars: vtarget_backup_folder_in_progress: "{{ "{{ folder }}/{{ target }}/test{{ hostvars['localhost']['tstamp'].stdout }}{{ type }}" dacă node_type == "master " else "{{ folder }}/{{ target }}/prod{{ hostvars['localhost']['tstamp'].stdout }}_{{ type }}" }}"
dar eșuează cu mine cu eroarea de mai jos:
Am putea greși, dar acesta pare să fie o problemă cu ghilimele lipsă. Indicați întotdeauna parantezele expresiei șablonului când încep o valoare. De exemplu:
cu_articole:
- {{ foo }}
Ar trebui scris ca:
cu_articole:
- „{{ foo }}”
ma poti ajuta te rog cu asta?
EDITAȚI | ×
Am incercat mai jos:
sarcini:
- nume: setați folderul de rezervă IN_PROGRESS
set_fact:
v_target_backup_folder_in_progress: >-
{% if node_type == „master” %}
„{{ folder }}/{{ target }}/test_{{ hostvars['localhost']['tstamp'].stdout }}_{{ type }}”
{% altfel %}
„{{ folder }}/{{ target }}/prod_{{ hostvars['localhost']['tstamp'].stdout }}_{{ type }}”
{% endif %}
- nume: asigurați-vă că folderul țintă în curs există
fişier:
cale: „{{ v_target_backup_folder_in_progress }}”
stare: director
proprietar: „{{ app_user }}”
grup: „{{ app_user_group }}”
mod: u=rwx,g=rwx
primește valorile corecte ale variabilei când depanez playbook-ul DAR când verific v_target_backup_folder_in_progress pe fiecare nod din cele 3 noduri pe care rulează jocul, găsesc ceva ciudat:
pe un nod, v_target_backup_folder_in_progress nu este creat, deși pare a fi creat în modul de depanare, dar când merg pe aceeași cale, nu găsesc directorul!
pe celelalte 2 noduri se creează v_target_backup_folder_in_progress, dar ca fișier! nu este un director, deși pare a fi creat în modul de depanare ca director.
deci de ce se intampla asta?