首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在角色中包括角色吗?

在角色中包括角色吗?
EN

Stack Overflow用户
提问于 2014-10-24 15:42:23
回答 3查看 63.4K关注 0票数 76

可以在角色中重用角色吗?我的意思不是通过在角色的meta/main.yml文件中定义依赖关系,而是通过,包括,直接定义另一个角色的任务/main.yml中的角色?

例如,我在rolebook中定义了几个基本角色,在角色中定义了一些更高级别的角色。除了一些特定的任务之外,我希望高级角色包括一些基本角色。

代码语言:javascript
复制
playbooks/

  rolebooks/
    some_role/
      
  roles/
    webtier/
      tasks/
        main.yml

在剧本/角色/webtier/任务/main.yml中:

代码语言:javascript
复制
    - shell: echo 'hello'
    - { role: rolebooks/some_role }
    - shell: echo 'still busy'

谢谢

EN

回答 3

Stack Overflow用户

发布于 2016-10-08 20:16:18

老掉牙的问题,但是for the record,:使用Ansible 2.2+,您就可以使用include_role了。正是为了这个目的..。请参阅文档这里

也看看import_role ..。见文档这里

票数 92
EN

Stack Overflow用户

发布于 2014-10-24 16:57:14

AFAIK,你不能这样做。这就是依赖关系的目的。

如果您希望避免依赖关系(例如,您希望“角色X”在两个任务之间运行),如果您认为这些任务是相关的,则可以在剧本本身中这样做:

角色/webtier/任务/main.yml:

代码语言:javascript
复制
- shell: echo 'hello'
- include: webtier.yml
- shell: echo 'role done'

总之,这取决于你到底想做什么。但是在您的示例中,“仍然繁忙”似乎意味着rolebooks/some_role仍然在运行,这是不可能的(这里没有并发性)。

显然,您还可以在主游戏手册中对角色进行排序(这可能是您已经做过的):

代码语言:javascript
复制
- 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
票数 12
EN

Stack Overflow用户

发布于 2015-03-07 02:29:02

你不能,但你可以做一些类似的事情。

用于以下方面的布局:

代码语言:javascript
复制
roles/
    ...
    common/tasks/main.yml
    nginx/tasks/main.yml
    ...

nginx/tasks/main.yml中,您可以调用您的共同任务:

代码语言:javascript
复制
- name: Call the 'common' role to do some general setup
  include: ../../common/tasks/main.yml

请注意,由于您没有使用典型的导入结构,您可能会遇到一些“奇怪”,比如角色默认变量无法访问,除非您之前以标准的方式包含了该角色。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26551422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档