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

ece*_*ulm 5 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
Run Code Online (Sandbox Code Playgroud)

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

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

ece*_*ulm 7

我发现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
Run Code Online (Sandbox Code Playgroud)