Я хочу запустить роль Ansible условно, т. Е. Только когда не существует какого-либо бинарного файла (что для меня подразумевает отсутствие какой-либо конкретной установки приложения).Условное включение роли не работает в Ansible
Что-то вроде шаблона here.
Используя следующий код в моем PlayBook:
- hosts: my_host
tasks:
- name: check app existence
command: /opt/my_app/somebinary
register: myapp_exists
ignore_errors: yes
roles:
- { role: myconditional_role, when: myapp_exists|failed }
- another_role_to_be_included_either_way
Вот результат:
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [my_host ]
TASK [ myconditional_role : create temporary installation directory] ***********************
fatal: [my_host]: FAILED! => {"failed": true, "msg": "ERROR! The conditional check 'myapp_exists|failed' failed. The error was: ERROR! |failed expects a dictionary"}
Почему не удается условная проверка?
Использование ansible 2.0.0.2
на Ubuntu 16.04.01
КСТАТИ: «создать временный каталог установки» это имя первой основной задачи условно включенной роли.
так что любой предложенный шаблон для условного включения роли для конкретного варианта использования? – pkaramol
Я бы переместил файл задач main.yml внутри своей основной задачи и включил install.yml, если это необходимо. –