Ansible 仅当文件不存在时才允许模块创建文件,并写入一些数据
我需要使用Anisable模块检查文件是否存在,如果不存在,则创建它并向其中写入一些数据 如果文件存在,那么检查我正在尝试写入的内容是否存在于该文件中 如果内容不存在,请将内容写入其中。Ansible 仅当文件不存在时才允许模块创建文件,并写入一些数据,ansible,Ansible,我需要使用Anisable模块检查文件是否存在,如果不存在,则创建它并向其中写入一些数据 如果文件存在,那么检查我正在尝试写入的内容是否存在于该文件中 如果内容不存在,请将内容写入其中。 如果内容存在,则不执行任何操作 我下面的剧本不起作用。 有什么建议吗 - hosts: all tasks: - name: check for file stat: path: "{{item}}" register: File_status with_item
如果内容存在,则不执行任何操作 我下面的剧本不起作用。
有什么建议吗
- hosts: all
tasks:
- name: check for file
stat:
path: "{{item}}"
register: File_status
with_items:
- /etc/x.conf
- /etc/y.conf
- name: Create file
file:
path: "{{item}}"
state: touch
with_items:
- /etc/x.conf
- /etc/y.conf
when: not File_status.stat.exists
- name: add content
blockinfile:
path: /etc/x.conf
insertafter:EOF
block: |
mydata=something
您能帮助我了解可以实现所需输出的模块和条件吗?以下内容将:
- 如果文件不存在,则创建该文件,并报告
更改的
- 如果该块不存在,则在文件末尾添加该块,并报告
,即。已更改的
# BEGIN ANSIBLE MANAGED BLOCK mydata=something mydata2=somethingelse # END ANSIBLE MANAGED BLOCK
- 如果内容发生更改,则在文件中的任何位置更新块,并报告
(如果在同一文件中有多个块要管理,请参阅,如果更改,请不要忘记其中的已更改
){mark}
- 如果块在文件和报告中的任何位置是最新的,则不执行任何操作
ok
---
-名称:blockinfle示例
主机:本地主机
收集事实:错误
任务:
-名称:如果需要,更新/创建块。如果不存在,则创建文件
区块填充:
路径:/tmp/testfile.conf
区块:|
我的数据=某物
mydata2=somethingelse
创建:true
以下是实现您的需求的可能方法
- hosts: localhost
tasks:
- name: Create file
copy:
content: ""
dest: "{{item}}"
force: no
with_items:
- /etc/x.conf
- /etc/y.conf
- name: add content
blockinfile:
path: "{{ item.file_name }}"
insertafter: EOF
block: |
"{{ item.content }}"
loop:
- { file_name: '/etc/x.conf', content: 'mydata=something' }
- { file_name: '/etc/y.conf', content: 'mydata=hey something' }
如果您添加@Zeitounator,那么最后一个任务就足够了,因为我没有找到您。我应该在哪里使用create?