Фон
Я экспериментирую с роли Ansible (1.9.4), и я пытаюсь получить зависание зависимостей роли.Зависимая роль не запущена
Я создал следующие роли:
- Роль, которая устанавливает Oracle JDK (анзибль-java8)
- Роль, которая устанавливает Tomcat (анзибль-tomcat7)
г. Второго роль определяет первый как зависимость в /ansible-tomcat7/meta/main.yml
:
dependencies:
- { role: java8 }
I также включен requirements.yml файл со следующим:
- name: java8
src: 'https://github.com/gregwhitaker/ansible-java8'
я добавил следующую конфигурацию, чтобы мой /etc/ansible/ansible.cfg
настроить мой roles_path на место в моем домашнем каталоге:
roles_path = ~/ansible/roles
Я тогда установлена ansible-java8
роль в java8
с помощью следующей команды:
ansible-galaxy install -r requirements.yml
После того, как команда пробежалась я могу видеть роль java8 в каталоге ~/ansible/role.
Однако, когда я запускаю playbook, который вызывает роль tomcat7, выполняется только эта роль. Роль java8 не выполняется до роли tomcat7.
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [default]
TASK: [Install Tomcat7 (Ubuntu)] **********************************************
changed: [default] => (item=tomcat7,libtcnative-1,libapr1)
TASK: [Install Tomcat7 (Debian)] **********************************************
skipping: [default]
TASK: [Install Tomcat7 (Amazon Linux)] ****************************************
skipping: [default]
PLAY RECAP ********************************************************************
default
Вопросы
- Является ли это правильный способ определить зависимые роли или я полностью пропустил что-то?
- Правильно ли я считаю, что, поскольку я обозначил роль tomcat7 как зависящую от java8, то роль java8 должна была быть расположена из role_path и запускалась первым?
- Какую ошибку я делаю, что приводит к тому, что роль java8 не запускается до роли tomcat7?
Это прекрасно работает для меня, можете ли вы подтвердить, есть ли у вашего ansible.cfg это?'[defaults] role_path = ~/ansible/role' –
также, ваша роль java8' meta/main.yml' отсутствует 'dependencies: []'. это приводит к тому, что 'ansible-galaxy' бросает некритическую ошибку. –