Итак, я использую независимую роль, в которой есть файл main.yml в папке defaults/role. Содержимое этого файла таково:
---
API_секреты:
'API_PROFILE': "{{ API_profile }}"
'SERVER_ADDRESS': "{{ server_address }}"
'MGMT_SERVER_ADDRESS': "{{ management_server_address }}"
Теперь я хочу включить в блок api_secrets, после MGMT_SERVER_АДРЕС что-то вроде этого:
{% если '"порт" в mgmt_ports' %}
'MGMT_SERVER_PORT': "{{ management_server_port1 }}"
'MGMT_SERVER_USER': "{{ пользователь1 }}"
{% еще %}
'MGMT_SERVER_PORT': "{{ management_server_port2 }}"
'MGMT_SERVER_USER': "{{ пользователь2 }}"
{% конец%}
Со всем этим на сервере создается файл с указанным выше содержимым и, конечно же, заменой переменных их фактическими значениями.
Как бы я ни пытался, это всегда приводит к различным ошибкам. Я пробовал с "{% if ... endif %}", а также с ''
Ошибка будет такой:
ОШИБКА! Синтаксическая ошибка при загрузке YAML.
найден персонаж, который не может запустить ни один токен
Ошибка, по-видимому, находится в «/opt/ansible/roles/api/defaults/main.yml»: строка 55, столбец 2, но может
быть в другом месте файла в зависимости от конкретной проблемы синтаксиса.
Оскорбительная строка выглядит так:
{% если '"порт" в mgmt_ports' %}
^ здесь
Я также пробовал так:
"{% if (порт в mgmt_ports) %}
'MGMT_SERVER_PORT': "{{ management_server_port1 }}"
{% еще %}
'MGMT_SERVER_PORT': "{{ management_server_port2 }}"
{% endif%}"
В этом случае ошибка:
ОШИБКА! Синтаксическая ошибка при загрузке YAML.
не удалось найти ожидаемый ':'
Ошибка, по-видимому, находится в «/opt/ansible/roles/api/defaults/main.yml»: строка 56, столбец 24, но может
быть в другом месте файла в зависимости от конкретной проблемы синтаксиса.
Оскорбительная строка выглядит так:
"{% if (порт в mgmt_ports) %}
'MGMT_SERVER_PORT': "{{ management_server_port1 }}"
^ здесь
Мы можем ошибаться, но это похоже на проблему с
недостающие кавычки. Всегда заключайте скобки выражения шаблона в кавычки, когда они
начать значение. Например:
with_items:
- {{фу}}
Должно быть написано как:
with_items:
- "{{фу}}"
Как правильно это сделать?
Я знаю, что было бы проще использовать шаблон jinja2, но книги создаются таким образом, и я должен придерживаться этого метода.