【问题标题】:Subtask on Ansible PlaybookAnsible Playbook 上的子任务
【发布时间】:2021-06-21 20:28:46
【问题描述】:

我可以在 Ansible 上做一个子任务吗? 我已经尝试过了,但它不起作用:

---
- name: Main_task
  hosts: serv
  tasks:
  - name: Task one
    ....
  - name: Subtasks
    hosts: serv
    tasks:
    - name: Subtask 1
     .....
    - name: Subtask 2
     ....
    with_items:
      - "{{ items_from_task_one }}"
...

【问题讨论】:

    标签: ansible yaml


    【解决方案1】:

    您可以使用include_tasks (Ansible Doc) 包含在文件中定义的任务。这是一个工作示例:

    1. 创建如下所示的文件结构

      ├── playbooks
      │   ├── main_task.yml
      │   └── subtasks
      │       ├── subtask_1.yml
      │       └── subtask_2.yml
      
    2. main_task.yml

      ---
      - name: Main_task
        hosts: localhost
        tasks:
          - name: Task one
            set_fact:
            items_from_task_one:
              - "value_1"
              - "value_2"
      
          - name: Include Subtask 1
            include_tasks: ./subtasks/subtask_1.yml
            with_items:
              - "{{ items_from_task_one }}"
      
          - name: Include Subtask 2
            include_tasks: ./subtasks/subtask_2.yml
            with_items:
              - "{{ items_from_task_one }}"
      ...
      
    3. subtask_1.yml

      ---
      - name: Debug message from subtask_1.yml
        debug:
          msg: "I am Subtask 1"
      
      - name: Debug variable passed by main_task
        debug:
          var: item
      ...
      
    4. subtask_2.yml

      ---
      - name: Debug message from subtask_2.yml
        debug:
          msg: "I am Subtask 2"
      
      - name: Debug variable passed by main_task
        debug:
          var: item
      ...
      

    【讨论】:

    • 所以,如果我想按以下顺序执行,我不能使用 items_from_task_one 循环:subtask_1 -> subtack_2 -> next_element_of_the_list 和 subtask_1 -> subtack_2 -> next_element_of_the_list 和 .... 直到列表末尾?
    • 想不出这样的方法。如果您希望按顺序执行这些任务,则必须将相关任务合并到一个子任务中。
    • 将 subtask_1 包含在主 playbook 中的循环中,然后包含 subtask_1 中的 subtask_2。但是您不妨将所有任务放在第一个包含中。提供一个真实的例子而不是伪代码可能有助于给出更准确的答案,也可能排除x/y problem
    猜你喜欢
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多