我的目标是将控制器中的.zip文件提取到应用程序服务器中的特定文件夹(因为我有另一个脚本,该脚本指定了此路径来调用程序包)。
我正在尝试2种条件
1)检查目标服务器目录是否存在(例如:/ opt / mypack)。如果存在,则跳过else创建目录。
2)检查以上目录是否已经有提取的文件。如果没有提取,则跳过提取。
我在下面的剧本中尝试过,我想将2个.zip包提取到所有目标服务器的特定位置(/ opt / mypack和/ opt / mypack2)
NOT NULL
答案 0 :(得分:1)
您可以使用文件模块和循环来完成所需的工作。我更喜欢角色。因此,我创建了以下目录结构:
.
+ testunarchive.yml
+ unarchive
+ files
| + foo1.zip
| + foo2.tgz
+ tasks
+ main.yml
+ unarchive.yml
foo1.zip和foo2.tgz只是测试压缩和tar格式的存档文件。
testunarchive.yml包含剧本。我刚刚在本地主机上对此进行了测试。
---
- hosts: localhost
roles:
- unarchive
...
main.yml任务会引入unarchive.yml文件并循环遍历该文件中的所有任务。
---
- include: unarchive.yml
loop:
- { src: foo1.zip, dest: /tmp/foo1 }
- { src: foo2.tgz, dest: /var/tmp/foo2 }
...
unarchive.yml任务文件会执行创建目标目录(如果不存在)的实际工作,并将源存档取消归档到目标目录中。
---
- name: "Creating {{ item.dest }}"
file:
path: "{{ item.dest }}"
state: directory
- name: "Unarchiving {{ item.src }}"
unarchive:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
...
希望这样的事情对您有所帮助。