我目前正在使用sefcontext模块来管理服务器SeLinux文件上下文
以下是用于管理某些目录的任务示例。
name: Set selinux policy for directories
sefcontext:
target: '{{ item.target }}(/.*)?'
setype: "{{ item.setype }}"
reload: True
register: "{{item.register}}"
state: present
with_items:
- { target: '/var/lib/dir1', setype: 'public_content_rw_t', register: 'dir1' }
- { target: '/var/lib/dir2', setype: 'public_content_rw_t', register: 'dir2' }
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是,执行此类操作无法恢复文件标签,也无法实现幂等
name: Run restore context to reload selinux
shell: restorecon -Rv /var/lib/{{ item.shell }}
when: "{{ item.when }}"
with_items:
- { shell: 'dir1', when: 'dir1|changed' }
- { shell: 'dir2', when: 'dir2|changed' }
Run Code Online (Sandbox Code Playgroud)
知道如何在保持幂等的同时还原多个目录上的文件标签吗?
好的,最后提出了一个可行的逻辑。希望这对遇到类似问题的人有所帮助。
- name: Set selinux policy for directories
sefcontext:
target: '{{ item.target }}(/.*)?'
setype: "{{ item.setype }}"
reload: True
state: present
register: filecontext
with_items:
- { target: '/var/lib/dir1', setype: 'public_content_rw_t' }
- { target: '/var/lib/dir2', setype: 'public_content_rw_t' }
- name: Run restore context to reload selinux
shell: restorecon -R -v /var/lib/{{ item.target }}
when: filecontext.results[item.index]|changed
with_items:
- { index: 0, target: 'dir1' }
- { index: 1, target: 'dir2' }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2852 次 |
| 最近记录: |