2015-12-31 3 views
1

Фон

Я экспериментирую с роли Ansible (1.9.4), и я пытаюсь получить зависание зависимостей роли.Зависимая роль не запущена

Я создал следующие роли:

  1. Роль, которая устанавливает Oracle JDK (анзибль-java8)
  2. Роль, которая устанавливает 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 

Вопросы

  1. Является ли это правильный способ определить зависимые роли или я полностью пропустил что-то?
  2. Правильно ли я считаю, что, поскольку я обозначил роль tomcat7 как зависящую от java8, то роль java8 должна была быть расположена из role_path и запускалась первым?
  3. Какую ошибку я делаю, что приводит к тому, что роль java8 не запускается до роли tomcat7?
+0

Это прекрасно работает для меня, можете ли вы подтвердить, есть ли у вашего ansible.cfg это?'[defaults] role_path = ~/ansible/role' –

+1

также, ваша роль java8' meta/main.yml' отсутствует 'dependencies: []'. это приводит к тому, что 'ansible-galaxy' бросает некритическую ошибку. –

ответ

1

Это оказалось проблемой с тем, как я тестировал эту роль.

Я говорил Vagrant для предоставления моего тестового ящика, используя следующий site.yml файл:

- hosts: all 
    sudo: yes 
    tasks: 
    - include: tasks/main.yml 

Это было, очевидно, вызывает анзибль только выполнять задачи Tomcat и не принимать во внимание, что это было на самом деле роль а не только учебник с некоторыми задачами в нем.

Плей-лист site.yml, который я использую для тестирования, находится в корне репозитория, поэтому, как только я изменил его, чтобы ссылаться на репозиторий как на роль, все начало работать.

- hosts: all 
    sudo: yes 
    roles: 
    - { role: '../ansible-tomcat7' } 
Смежные вопросы