Применение фильтра default
здесь не имеет смысла
owner: "{{ ansible_user|default('ec2-user') }}"
Переменная ansible_user всегда определяется.
Чтобы ответить на ваш вопрос:
Q: «Могу ли я добавить if / else в 'Download_role', окружающий владельца и группу? В роли или любой другой Ansible magi c method? "
A: Доступны как if / else , так и метод magi c. Можно использовать if / else
owner: "{{ 'userA' if my_condition else 'userB' }}"
или тернарный фильтр
owner: "{{ my_condition|ternary('userA', 'userB') }}"
Это ограничивает выбор только двумя вариантами. Замените my_condition
логической переменной или логическим выражением.
Лучше всего определить значения роли по умолчанию в
defaults / main.yml . Например, значения по умолчанию для роли могут выглядеть как
shell> cat roles/utilities/defaults/main.yml
my_user: user_A
Тогда значение параметра owner
в роли utilities
по умолчанию равно user_A
owner: "{{ my_user }}"
А вот и волхвы c. Можно выбрать файл со значениями по умолчанию defaults_from , если роль включена include_role
. Например, давайте создадим дополнительные файлы по умолчанию
shell> cat roles/utilities/defaults/opt_B.yml
my_user: user_B
shell> cat roles/utilities/defaults/opt_C.yml
my_user: user_C
Затем, например, давайте использовать значения по умолчанию из файла opt_B.yml
во включенной роли
- name: Download
include_role:
name: utilities
tasks_from: download
defaults_from: opt_B.yml
См. Приоритет переменной: где мне поместить переменную?