我有一个文件列表,我想要更改模式,但前提是它们存在。我在想我可以使用stat
和with_item
的组合。我对此非常陌生,任何想法都会有很大的帮助。谢谢,约翰
---
- hosts: all
tasks:
- name: checking if file exists
stat: path={{ item }}
register: file_exists
with_items:
- /tmp/test1
- /home/john/test2
- /home/allison/test3
- name: change permissions
file: path={{ item }} mode=0600
when: file_exists.stat.exists
答案 0 :(得分:1)
您的解决方案应该进行一些修改:
---
- hosts: localhost
vars:
permissioned_files:
- /tmp/test1.txt
- /home/john/test2
- /home/allison/test3
tasks:
- name: checking if file exists
stat: path={{ item }}
register: file_exists
with_items: "{{ permissioned_files }}"
- name: change permissions
file: path={{ item.0 }} mode=0600
when: "{{ item.1.stat.exists }}"
with_together:
- "{{ permissioned_files }}"
- "{{ file_exists.results }}"
的变化:
更简单的解决方案是使用ignore_errors
的{{1}}参数和当前功能:当state设置为“file”时(默认情况下),模块将不会创建文件。 ignore_errors
表示当任务遇到错误时播放不会失败。
---
- hosts: localhost
tasks:
- name: Ensure one sample file exists
file:
path: /tmp/test1.txt
state: touch
- name: Change permissions
file:
path: "{{ item }}"
mode: 0600
with_items:
- /tmp/test1.txt
- /home/john/test2
- /home/allison/test3
ignore_errors: true