0

我有下一个项目角色:

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

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

请指教。

4

1 回答 1

2

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

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

- hosts: all
  roles:
    - ferrarimarco.chruby

我需要在 web 和 worker 上安装 chruby

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

dependencies:
  - ferrarimarco.chruby

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

- name: Change ruby to 1.9.3
  shell: chruby 1.9.3

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

于 2016-05-18T15:48:33.293 回答