我正在设计一种具有个别任务的剧本库
所以在通常的角色仓库中,我有类似以下内容:
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
我的custom.stuff_workflow中的main.yml然后包含以下内容:
---
- 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的同时标记相关任务
我的问题是无法在调用的剧本中设置标签:只能在命令行中设置标签,因为我正在与公司中的许多人一起分发此可访问的仓库,我不能依靠命令行调用(最好#!
在yml中有一个标头供ansible-playbook
命令处理)
我还可以在每个工作流程中复制相关任务(在上一棵树的内部),但是我不想重复这些任务
有人可以看到解决方案来实现我想要的功能,而无需在不同角色上重复执行任务吗?
我想我的问题的基石是我将任务定义为个人,并且看起来不自然。
非常感谢
PS:请注意,工作流中的任务必须按特定顺序完成,抽象的唯一自然步骤就是登录和保存/注销
PPS:我已经看到了这个问题,如何在Ansible中从另一个角色中调用一个角色?但这并不能解决我的问题,因为它调用的是完整角色,而不是角色中的部分任务
ansible-playbook
在文件上运行而不是将其作为可执行文件运行(在便携性问题)