Deci, rulez un rol ansible care are un fișier main.yml în folderul defaults/rol. Conținutul acelui fișier este următorul:
---
api_secrets:
„API_PROFILE”: „{{ api_profile }}”
„SERVER_ADDRESS”: „{{ server_address }}”
„MGMT_SERVER_ADDRESS”: „{{ management_server_address }}”
Acum vreau să includ în blocul api_secrets, după MGMT_SERVER_ADDRESS ceva de genul:
{% if '"port" in mgmt_ports' %}
„MGMT_SERVER_PORT”: „{{ management_server_port1 }}”
„MGMT_SERVER_USER”: „{{ user1 }}”
{% altfel %}
„MGMT_SERVER_PORT”: „{{ management_server_port2 }}”
„MGMT_SERVER_USER”: „{{ user2 }}”
{% endif %}
Cu totul de aici, pe server este creat un fișier având conținutul de mai sus și, desigur, înlocuind variabilele cu valorile lor reale.
Indiferent cum aș încerca, întotdeauna rezultă diferite erori. Am încercat cu „{% if ... endif %}”, tot cu „”
Eroarea ar fi aceasta:
EROARE! Eroare de sintaxă la încărcarea YAML.
a găsit un caracter care nu poate începe niciun simbol
Eroarea pare să fie în „/opt/ansible/roles/api/defaults/main.yml”: rândul 55, coloana 2, dar poate
fi în altă parte în fișier, în funcție de problema exactă de sintaxă.
Linia ofensiva pare a fi:
{% if '"port" in mgmt_ports' %}
^ aici
Am incercat si eu asa:
„{% if (port în mgmt_ports) %}
„MGMT_SERVER_PORT”: „{{ management_server_port1 }}”
{% altfel %}
„MGMT_SERVER_PORT”: „{{ management_server_port2 }}”
{% endif %}"
In acest caz eroarea este:
EROARE! Eroare de sintaxă la încărcarea YAML.
nu a putut găsi așteptat „:”
Eroarea pare să fie în „/opt/ansible/roles/api/defaults/main.yml”: rândul 56, coloana 24, dar poate
fi în altă parte în fișier, în funcție de problema exactă de sintaxă.
Linia ofensiva pare a fi:
„{% if (port în mgmt_ports) %}
„MGMT_SERVER_PORT”: „{{ management_server_port1 }}”
^ aici
Am putea greși, dar acesta pare că ar putea fi o problemă cu
ghilimele lipsă. Citați întotdeauna parantezele de expresie șablon atunci când acestea
începe o valoare. De exemplu:
cu_articole:
- {{ foo }}
Ar trebui scris ca:
cu_articole:
- „{{ foo }}”
Care este modalitatea corectă de a face asta?
Știu că ar fi fost mai ușor folosind un șablon jinja2, dar cărțile de joc sunt create astfel și trebuie să rămân la această metodă.