【问题标题】:Ansible - How to manage Large list of small tasksAnsible - 如何管理大量小任务
【发布时间】:2021-06-08 22:05:31
【问题描述】:

我为一个 ansible 项目编写了很多小的 yaml 任务文件。 这些任务文件中只有少数被重用(比如 30%)。 我想知道如何管理这个大任务列表,我是否应该将它们全部转换为角色,并使用角色调用剧本: 剧本如下(请忽略语法),会很清楚,但我不喜欢每个简单的任务都扮演角色

- name: playbook with roles for each task
  hosts: all
  roles:
    - small_task_1
    - small_task_2
    - small_task_3
    - small_task_4
    ....
    ....
    - small_task_20

我喜欢将它们分配 2-3 个角色的想法,并使用 include_task(或 import_task)调用任务,但问题是,对于任务的每次调用,我都必须添加 "import_role: , name: , tasks_from " 即使是同一个角色!

$ ansible-galaxy 角色列表 $ /home/user1/.ansible/roles

  • roles_a,(未知版本)
  • roles_b,(未知版本)

在roles_a 和roles_b 中,我可能每个都有大约10 个yaml 任务

,,,

  • 名称:具有 2 个角色的剧本 主机:全部

    - name: small task 1
      include_role:
        name: role_a
        tasks_from: small_task_1
    
    - name: small task 2
      include_role:
        name: role_a
        tasks_from: small_task_2
    
    ......
    ......
    
    - name: small task 9
      include_role:
        name: role_a
        tasks_from: small_task_9
    
    - name: small task 10
      include_role:
        name: role_a
        tasks_from: small_task_10
    

,,,

上面的东西不是很方便...

我想将任务分组为“角色”(或任何其他 ansible 事物),并从该组中调用任务......类似于:

,,,

  • 名称:具有 2 个角色的剧本 主机:全部

    - name: small tasks
      include_role:
        name: role_a
        tasks_from: small_task_1
        tasks_from: small_task_2
    
    ......
    ......
    
        tasks_from: small_task_9
        tasks_from: small_task_10
    

,,,

我尝试过使用 block ,但它并没有缩短剧本。

有人可以指导我吗?

【问题讨论】:

    标签: ansible roles


    【解决方案1】:

    对于您的最后一个示例,您可以在您的 include_role 任务上使用 loop 指令,如下所示:

    - hosts: localhost
      gather_facts: false
      tasks:
        - include_role:
            name: role_a
            tasks_from: "{{ item }}"
          loop:
            - small_task_1
            - small_task_2
            - small_task_3
            - small_task_4
    

    【讨论】:

    • 对!感谢@larsks,将实现这一点。
    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多