我想使用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
中)。现在它无法找到模块。
我想我可以将模块从角色中复制到我的剧本中,但如果我可以从角色中导入模块(我不想编辑),我会更清洁。
答案 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