我正在尝试制作一个改变所有服务器权限的剧本,但我需要排除一些目录和文件。我试图使文件分配动态,因为你可以看到我已经排除2,但我想使它一般化或动态。 PLZ建议。
以下是我的剧本,请注意我使用的是目录结构:
permission.yml:
---
- hosts: 127.0.0.1
roles:
- { role: fileperm, target_dir: "/tmp/testingpermissions" }
- { role: fileperm, target_dir: "/tmp/abc" }
- { role: fileperm, target_dir: "/amp/app/tomcatdefault7055" }
Vars:
main.yml:
---
exclude1: "/tmp/testingpermissions/plugins"
exclude2: "/tmp/testingpermissions/files"
tasks:
main.yml:
---
- name: Ensure directories are 0755
command: find {{ target_dir }} -type d ! -path "{{ exclude1 }}*" ! -path "{{ exclude2 }}*" -exec chmod -c 0755 {} \;
register: chmod_result
changed_when: "chmod_result.stdout != \"\""
答案 0 :(得分:0)
您可以使用'file'模块,并遍历需要更改其权限的目录列表, 例如在vars中像这样:
[1, 2, 3, 10, 15]
......然后在任务中这样......:/ / p>
# /vars/main.yml
updatepermissions:
- "/tmp/testingpermissions"
- "/tmp/abc"
- "/amp/app/tomcatdefault7055"
这将仅对您指定的目录设置权限。因此,除了一些被排除在外的人之外,更新权限,你只需要更新一组需要给定权限的目录列表的权限。
对于您不希望从设置权限中排除任何子目录的目录,您可以添加“recurse = yes”。
否则,如果您更喜欢带有“!-path”的命令任务,您可以这样做:
# /tasks/main.yml
- name: Set directory permissions to 0755
file:
path: "{{ item }}"
state: directory
mode: 0755
with_items: "{{ updatepermissions }}"
然后在这样的任务中:
# /vars/main.yml
updatepermissions:
- include: "/tmp/testingpermissions"
exclude: "! -path \"/tmp/testingpermissions/plugins\" ! -path \"/tmp/testingpermissions/abc\""
- include: "/some/other/directory"
exclude: ""