我是Ansible的新手,现在正在构建我的第一本剧本。在我的其中一部剧本中,我想确保在安装之前已具备应用程序的所有先决条件,其中一个先决条件包括一些需要的自定义脚本要出现在应用程序用户的主目录中,我想知道是否可以像这样堆叠多个任务(希望是正确的选择):
- name: Check for file and move to /home/user with correct owner and permission
stat: path=/path/to/{{ item }}
register: {{ item }}_stat
command: mv /path/to/{{ item }} /home/user/{{ user }}
file: path=/home/user/{{ item }} state=file mode=0755 owner=user group=group
when {{ item }}.stat.exists
with_items:
- file1
- file2
- file3
我可以将其分解为多个任务/步骤,并且可以执行,但是当我将其移到适当的角色时,我希望使剧本保持精简。 预先感谢
答案 0 :(得分:0)
每个任务只能服务一个模块。
可以将“子功能”任务放到一个单独的文件中并循环 include_tasks 。例如
- 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
(未经测试)