Я разрабатываю своего рода библиотеку с индивидуальными задачами
поэтому в обычных ролях repo у меня есть что-то вроде:
roles
├── common
│ └── tasks
│ ├── A.yml
│ ├── B.yml
│ ├── C.yml
│ ├── D.yml
│ ├── login.yml
│ ├── logout.yml
│ └── save.yml
├── custom_stuff_workflow
│ └── tasks
│ └── main.yml
└── other_stuff_workflow
└── tasks
└── main.yml
my main.yml в custom_stuff_workflow затем содержит что-то вроде:
---
- include: login.yml
- include: A.yml
- include: C.yml
- include: save.yml
- include: logout.yml
а другой - в другом рабочем процессе:
---
- include: login.yml
- include: B.yml
- include: A.yml
- include: D.yml
- include: save.yml
- include: logout.yml
Я не могу найти способ сделать это естественным образом: один из способов, который работал, заключался в том, что все задачи выполнялись в одной роли и помечены соответствующими задачами, в том числе custom_stuff_workflow
Проблема с этим заключается в том, что теги не могут быть установлены в вызывающем playbook: он должен быть установлен только в командной строке
поскольку я распространяю это нерешенное репо со многими людьми в компании, я не могу полагаться на вызовы командной строки (было бы неплохо, если заголовок #!
в yml обрабатывался командой ansible-playbook
)
Я мог бы также скопировать соответствующие задачи (внутри общего дерева в приведенном выше дереве) в каждом рабочем процессе, но я не хочу повторять их вокруг
Может ли кто-нибудь увидеть решение для достижения того, что я хотел бы, не повторяя задачи над разными ролями?
Я думаю, что краеугольным камнем моей проблемы является то, что я определяю задачи как индивидуальные, и это выглядит неестественно в недоступном...
Спасибо большое
PS: обратите внимание, что задачи в рабочем процессе должны выполняться в определенном порядке, и единственными естественными шагами для абстракции могут быть логин и сохранение/выход из системы
PPS: Я видел этот вопрос Как мне назначить роль из другой роли в Ansible?, но она не решает мою проблему, так как она вызывает полный роль, а не подмножество задач в роли