Ansible 在单个命名任务中执行多个步骤

Ansible 在单个命名任务中执行多个步骤,ansible,Ansible,我是Ansible的新手,现在正在构建我的第一个剧本。在我的一个剧本中,我希望在安装前确保应用程序的所有先决条件都已准备就绪,其中一个先决条件包括一些自定义脚本,这些脚本需要出现在应用程序用户的主目录中,我想知道我是否可以堆叠多个任务(希望这是正确的术语)这样: 我可以将其分解为多个任务/步骤,并且已经完成,但我希望在我将剧本转移到合适的角色时尽可能精简剧本。 提前感谢每个任务只能提供一个模块 可以将“子功能”任务放入单独的文件中,并循环include_任务 - name: Check for

我是Ansible的新手,现在正在构建我的第一个剧本。在我的一个剧本中,我希望在安装前确保应用程序的所有先决条件都已准备就绪,其中一个先决条件包括一些自定义脚本,这些脚本需要出现在应用程序用户的主目录中,我想知道我是否可以堆叠多个任务(希望这是正确的术语)这样:

我可以将其分解为多个任务/步骤,并且已经完成,但我希望在我将剧本转移到合适的角色时尽可能精简剧本。
提前感谢

每个任务只能提供一个模块

可以将“子功能”任务放入单独的文件中,并循环include_任务

- name: Check for file and move to /home/user with correct owner and permission
  include_tasks: loop-tasks.yml
  loop:
    - file1
    - file2
    - file3 

$ cat loop-tasks.yml
- stat:
    path: "/path/to/{{ item }}"
    register: result
- block:
    - command: "mv /path/to/{{ item }} /home/user/{{ user }}"
    - file:
        path: "/home/user/{{ item }}"
        state: "file"
        mode: "0755"
        owner: "user"
        group: "group"
  when result.stat.exists
(未测试)

- name: Check for file and move to /home/user with correct owner and permission
  include_tasks: loop-tasks.yml
  loop:
    - file1
    - file2
    - file3 

$ cat loop-tasks.yml
- stat:
    path: "/path/to/{{ item }}"
    register: result
- block:
    - command: "mv /path/to/{{ item }} /home/user/{{ user }}"
    - file:
        path: "/home/user/{{ item }}"
        state: "file"
        mode: "0755"
        owner: "user"
        group: "group"
  when result.stat.exists