Mic*_*ael 62 ansible ansible-playbook
是否可以在角色中重用角色?我不是指通过在角色的meta/main.yml文件中定义依赖项,而是直接将角色包含在另一个角色的tasks/main.yml中?
例如,我在角色簿中定义了几个基本角色,在角色中定义了一些更高级别的角色.我希望高级角色除了某些特定任务外还包括一些基本角色.
playbooks/
rolebooks/
some_role/
roles/
webtier/
tasks/
main.yml
Run Code Online (Sandbox Code Playgroud)
在playbooks/roles/webtier/tasks/main.yml中:
- shell: echo 'hello'
- { role: rolebooks/some_role }
- shell: echo 'still busy'
Run Code Online (Sandbox Code Playgroud)
谢谢
leu*_*cos 11
AFAIK,你做不到.这就是依赖关系的用途.
如果你想避免依赖(因为,例如,你希望'角色X'在两个任务之间运行),如果你认为任务是相关的,你可以在playbook本身中这样做:
角色/ webtier /任务/ main.yml:
- shell: echo 'hello'
- include: webtier.yml
- shell: echo 'role done'
Run Code Online (Sandbox Code Playgroud)
总而言之,这取决于你想要做的事情.但是在你的例子中,"仍然忙"似乎意味着它rolebooks/some_role
仍在运行,这是不可能的(这里没有并发).
显然,您也可以在主要剧本中对角色进行排序(这可能就是您已经做过的事情):
- name: Polite foo stuff
hosts: foo_hosts
roles:
- say_hello
- rolebooks/some_role
- say_bye
- name: Unpolite foo stuff
hosts: !foo_hosts
roles:
- rolebooks/some_role
Run Code Online (Sandbox Code Playgroud)
小智 5
你不能,但你可以做一些类似的事情.
对于布局:
roles/
...
common/tasks/main.yml
nginx/tasks/main.yml
...
Run Code Online (Sandbox Code Playgroud)
在nginx/tasks/main.yml
,您可以调用您的常见任务:
- name: Call the 'common' role to do some general setup
include: ../../common/tasks/main.yml
Run Code Online (Sandbox Code Playgroud)
请注意,因为您没有使用典型的导入结构,所以除非您之前以标准方式包含角色,否则您可能会遇到一些"怪异",例如角色默认变量无法访问.
归档时间: |
|
查看次数: |
41525 次 |
最近记录: |