我可以在不执行任务的情况下加载角色(仅获取模块)吗?

时间:2016-05-04 11:25:44

标签: ansible

我想使用mongodb_replication角色中定义的模块greendayonfire.mongodb

我知道我可以在同一个游戏中应用角色后在我的任务中使用该模块。但我不想申请这个角色(并执行它的所有任务)。有没有办法去"包括"没有执行任务的角色?

我希望像这样

---
- hosts: mongodb-nodes
  become: true
  roles:
    - base
    - greendayonfire.mongodb
  vars:
    mongodb_package: mongodb-org
    mongodb_version: "3.2"
    mongodb_force_wait_for_port: true
    mongodb_net_bindip: 0.0.0.0
    mongodb_net_http_enabled: true
    mongodb_replication_replset: "rs1"
    mongodb_storage_prealloc: false
- hosts: mongodb-0
      tasks:
        - mongodb_replication: replica_set=rs1 host_name=item state=present
          with_items:
            - mongodb-0
            - mongodb-1
            - mongodb-2

其中第二个游戏是运行mongodb_replication模块的游戏(仅在节点mongodb-0中)。现在它无法找到模块。

我想我可以将模块从角色中复制到我的剧本中,但如果我可以从角色中导入模块(我不想编辑),我会更清洁。

1 个答案:

答案 0 :(得分:6)

我发现在引用角色时可以使用when: false子句在不执行任务的情况下加载角色。这会加载变量,默认值,模块等。

- hosts: mongodb-0
      roles:
        - role: greendayonfire.mongodb
          when: false
      tasks:
        - mongodb_replication: replica_set=rs1 host_name=item state=present
          with_items:
            - mongodb-0
            - mongodb-1
            - mongodb-2