Есть ли способ запустить роль, только если указан тег? - PullRequest
0 голосов
/ 21 марта 2019

Меня попросили написать две роли для подготовительного и рабочего сервера, который будет устанавливать некоторые программы (Memcached, его расширение PHP и т. Д.), А также настраивать их.

Ну, вчера я немного запутался, потому что используются две другие роли, а моя еще не совсем закончена. А вчера проект, над которым работает наша команда, был запущен в производство. На каждом из них запускается игровая книга со всеми ролями, и она начинает выполнять и мои роли. К счастью, руководитель моей команды увидел это вовремя и удалил мои роли из сборника пьес.

Итак, как смотрел мои роли в пьесе до того, как они были удалены:

- hosts: was
  roles:
    - { role: cron, become: yes, tags: [ was, cron ] }
    - { role: app, when: type == 'master', become: yes, become_user: "{{become_user}}", become_flags: '-i', tags: [ was ] }
    - { role: memcacheExtension, become: yes, become_user: ansible, tags: ['memcache'] }
    - { role: gitlabRunner, become: yes, become_user: "{{become_user}}", tags: ['gitlab'] }

Мои роли - последние две. Я думал, что при такой конфигурации они будут срабатывать только в том случае, если команда запускалась с использованием одного из установленных мной тегов. Спойлер: Я был не прав.

Я слышал о теге 'never' , но он работает только в пределах tasks, поэтому мне придется устанавливать его для каждой задачи, а это не то, что я ищу .

Есть ли другая возможность?

Заранее спасибо

1 Ответ

2 голосов
/ 21 марта 2019

Да, есть возможность import_role или include_role , которая является задачей и может быть помечена.

- hosts: was
  roles:
    - { role: cron, become: yes, tags: [ was, cron ] }
    - { role: app, when: type == 'master', become: yes, become_user: "{{become_user}}", become_flags: '-i', tags: [ was ] }
  tasks:
    - import_role:
        name: memcacheExtension
      become: yes
      become_user: ansible
      tags: memcache
    - import_role:
        name: gitlabRunner
      become: yes
      become_user: "{{become_user}}"
      tags: gitlab
...