В то время как многим может понравиться ansible, мне кажется, что с ним довольно смешанные и несколько избыточные понятия, такие как tags
, roles
, inventory/hosts files
, hostgroups
, playbooks
, tasks
"when" conditionals
, довольно сложно определить, что в конечном итоге будет выполнено. Суть этого вопроса заключается в tags
.
Насколько я понимаю, если у меня есть playbook, в котором есть роль, содержащая список тегов, они добавляются (наследуются) всеми содержащимися задачами.
Пример:
[----./playbook.yml----]
---
- hosts: all
roles:
- {role: role01, tags: ['tag01', 'tag02']}
- {role: role02, tags: ['tag01', 'tag03']}
означало бы, что все задачи, найденные в ./roles/role01/tasks/main.yml
, будут неявно помечены тегами tag01
и tag02
. Подтверждение этого было бы частью ответа на этот вопрос
Таким образом, все задачи в ./roles/role02/tasks/main.yml
помечены tag01
и tag03
, верно?
Теперь проблема в том, что, глядя на файл ./roles/role01/tasks/main.yml
, я вижу это содержимое
[----./roles/role01/tasks/main.yml----]
---
- block:
- name: "upgrade all packages"
yum:
name: '*'
state: latest
tags:
- tag01
Учитывая, что эта роль исключительно всегда упоминается только из строки ./playbook.yml
, показанной выше, я не понимаю, какой смысл иметь tag01
, поскольку она должна быть неявно помечена с учетом строки:
- {role: role01, tags: ['tag01', 'tag02']}
Также меня совершенно беспокоит, что здесь нужно было использовать другую концепцию ansible block
?
Аспекты вопроса:
- Отметка в роли
main.yml
была лишней? - Зачем использовать блок (учитывая, что задача все равно одна)?