Я хочу создать переменную на основе условия, поэтому я создал следующее:
хозяева: тест
vars: vtarget_backup_folder_in_progress: "{{ "{{ folder }}/{{ target }}/test{{ hostvars['localhost']['tstamp'].stdout }}{{ type }}" if node_type == "master " else "{{ папка }}/{{ target }}/prod{{ hostvars['localhost']['tstamp'].stdout }}_{{ type }}" }}"
но у меня это не получается с ошибкой ниже:
Мы можем ошибаться, но это похоже на проблему с отсутствующими кавычками. Всегда заключайте скобки выражения шаблона в кавычки, когда они начинают значение. Например:
with_items:
- {{фу}}
Должно быть написано как:
with_items:
- "{{фу}}"
не могли бы вы помочь мне с этим?
РЕДАКТИРОВАТЬ
Я пробовал следующее:
задачи:
- имя: установить папку резервного копирования IN_PROGRESS
set_fact:
v_target_backup_folder_in_progress: >-
{% если node_type == "мастер" %}
"{{ папка }}/{{ target }}/test_{{ hostvars['localhost']['tstamp'].stdout }}_{{ type }}"
{% еще %}
"{{ папка }}/{{ target }}/prod_{{ hostvars['localhost']['tstamp'].stdout }}_{{ type }}"
{% конец%}
- имя: убедитесь, что целевая папка в процессе существует
файл:
путь: "{{ v_target_backup_folder_in_progress }}"
состояние: каталог
владелец: "{{ app_user }}"
группа: "{{ app_user_group }}"
режим: u=rwx,g=rwx
он получает правильные значения переменной, когда я отлаживаю книгу воспроизведения, НО когда я проверяю v_target_backup_folder_in_progress на каждом узле из 3 узлов, на которых работает игра, я нахожу что-то странное:
на одном узле v_target_backup_folder_in_progress не создается, хотя кажется, что он создается в режиме отладки, но когда я иду по тому же пути, я не могу найти каталог!
на двух других узлах создается v_target_backup_folder_in_progress, но в виде файла! не каталог, хотя он создается в режиме отладки как каталог.
так почему это происходит?