我需要使用 Ansible 模块来检查文件是否存在,如果不存在,则创建它并向其中写入一些数据。
如果文件存在,则检查我正在尝试写入的内容是否存在于该文件中。
如果内容不存在,请将内容写入其中。
如果内容存在,则不执行任何操作。
我的下面的剧本不起作用。
对此有什么建议吗?
- 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
你能帮我提供可以实现我想要的输出的模块和条件吗?
以下将:
changed
changed
,即
# BEGIN ANSIBLE MANAGED BLOCK
mydata=something
mydata2=somethingelse
# END ANSIBLE MANAGED BLOCK
changed
(如果您在同一个文件中需要管理多个块,请参阅 marker
选项,并且如果您需要管理多个块,请不要忘记其中的 {mark}
)改变它)。ok
。请阅读模块文档以获取更多信息
---
- name: blockinfile example
hosts: localhost
gather_facts: false
tasks:
- name: Update/create block if needed. Create file if not exists
blockinfile:
path: /tmp/testfile.conf
block: |
mydata=something
mydata2=somethingelse
create: 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' }