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