Импортировать только тегированные блоки из роли Ansible - PullRequest
0 голосов
/ 30 мая 2020

Я хочу импортировать в playbook (и выполнить) только часть Ansible роли, определенной в помеченном блоке.

Например, у меня есть роль some_role, содержащая 3 блока задач, помеченных как tag1, tag2 и tag3. Я мог бы создать playbook, который импортирует всю роль:

---
- hosts: some_host
  roles:
    - role: roles/some_role

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

$ ansible-playbook -i hosts.yml playbook.yml --tags tag1

Но я хочу переместить часть --tags tag1 в сам playbook чтобы иметь возможность запускать этот отдельный блок без предоставления тегов для ansible-playbook.

Ответы [ 3 ]

1 голос
/ 30 мая 2020

Я не мог найти простого способа выполнить часть роли с указанным тегом c из playbook .

Можно разбить задачи на несколько файлов и использовать файл из playbook, используя import_role или include_role. Скажем, если вы создаете два файла в каталоге задач роли с именами main.yml и other.yml, тогда вы можете использовать другие задачи, как показано ниже.

- import_role:
     name: myrole
     tasks_from: other
1 голос
/ 30 мая 2020
- import_role: 
      name: myrole 
  tags: [ web, foo ] 

- import_tasks: foo.yml 
  tags: [ web, foo ]

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

Ссылка: ansible do c

0 голосов
/ 30 мая 2020

Неважно. ЭТО НЕ РАБОТАЕТ. - Джек

Полезное обсуждение в комментариях, поэтому я оставляю это.

Никогда не пробовал, но дайте apply шанс с помощью include_role:

---
- hosts: some_host
  tasks:
  - include_role:
      name: roles/some_role
    apply:
      tags:
      - tag1

https://docs.ansible.com/ansible/latest/modules/include_role_module.html

...