首页 > 解决方案 > 从“tasks/alternate.yml”而不是“tasks/main.yml”开始角色

问题描述

我有一本大型剧本,它使用多个角色来设置新服务器。我想重新使用剧本,但在退役阶段而不是调用role_name/tasks/main.yml并有很多when:语句,我想告​​诉 Ansible 调用角色但从role_name/tasks/decommission.yml.

作为第一次测试,我main.yml像这样设置我的文件:

 - name: "Provisioning new server"
   block:
     - name: "Include the provisioning steps."
       include_tasks: provision.yml
   when:
     - not decom

 - name: "DECOM - Unregister from Satellite server"
   block:
     - name: "DECOM - Include the deprovision steps."
       include_tasks: decommission.yml
   when:
     - decom

但这变得很难维护。这是可能的还是我忽略了另一种设置剧本的方法?

标签: ansibleansible-role

解决方案


问:“告诉 Ansible 调用角色,但从 role_name/tasks/decommission.yml 开始”

A:使用include_role

    - include_role:
        name: role_name
        tasks_from: decommission.yml

, 或import_role

    - import_role:
        name: role_name
        tasks_from: decommission.yml

请参阅重用文件和角色,了解包含和导入角色之间的区别。


推荐阅读