【问题标题】:How to include tasks downloaded from Galaxy如何包含从 Galaxy 下载的任务
【发布时间】:2016-05-18 15:16:33
【问题描述】:

我有下一个项目角色:

hosts
site.yml
/roles
  /proxy
    /tasks
    ...
  /web
    /tasks
    ...
  /worker
    /tasks
    ...
  /db
    /tasks
    ...

我需要在webworker 上安装chruby。所以从 Galaxy 安装了 https://github.com/ferrarimarco/ansible-role-chruby,但我不知道如何将任务从 chruby 添加到 webworker 角色。

请指教。

【问题讨论】:

    标签: ansible ansible-galaxy


    【解决方案1】:

    您不能从角色中包含单个任务。如果您安装了一个角色,无论是来自 Galaxy 还是任何其他来源,您都可以通过将其添加到剧本的角色部分或作为您自己的任何角色的依赖项来按原样使用它。

    chruby 角色的自述文件显示了一个示例剧本:

    - hosts: all
      roles:
        - ferrarimarco.chruby
    

    我需要在 web 和 worker 上安装 chruby

    您可以将其作为依赖项添加到这些角色。格式是一样的。使用以下内容创建一个文件roles/web/meta/main.yml(对于工作角色也是如此):

    dependencies:
      - ferrarimarco.chruby
    

    如果您正在寻找实际使用 chruby 的任务,我不得不让您失望。角色中什么都没有。但在我看来,chruby 只是一个可以与 commandshell 模块一起使用的命令:

    - name: Change ruby to 1.9.3
      shell: chruby 1.9.3
    

    角色可以提供机制(标签或额外变量)来触发特定任务,例如安装、更新或卸载软件。角色也可以提供与已安装软件交互的模块。但对于 chruby 角色,情况并非如此。它只是通过 apt 安装 chruby 及其依赖项。

    【讨论】:

    • 依赖项——这就是我所需要的。有没有办法管理订单?
    • 依赖项按照它们被引用的顺序执行。
    • 我的意思是在我的任务之间运行(我知道这不是dependency,可能是包含)。
    • 您始终可以简单地包含来自另一个角色的任务文件。但这与运行角色不同。默认值、变量、文件、模板、处理程序等将不可用,只会执行任务。所以我认为这在 chruby 的情况下是行不通的。
    • 也许你可以将你的 web 和 worker 角色拆分成更小的包,然后按照你希望的主要角色的顺序实现所有的小包,包括 chruby 角色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2018-08-25
    • 2020-02-13
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多