我是 ansible 的新手,但我能够成功使用阻止文件函数。但是我不知道如何防止插入标记。我读了文档,但似乎没有描述它。
这就是 blockinfile 写入的每个文件中显示的内容。
# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK
答案1
这些标记实际上是用来识别区块的。
这意味着如果您删除标记,blockinfile
将不再能够识别该块,这将导致模块每次运行任务时将该块添加到文件中。
所以,书面块前后的标记是模块的要求,不能被删除。
如果这是一次性的剧本,永远不会再执行,您可以lineinfile
使用随后的选项运行该模块state: absent
。
答案2
我做了类似的事情......
- name: Insert someline in somefile.sh
blockinfile:
path: /usr/share/somefile.sh
block: -sometext
insertafter: '-XX:originaltext'
marker: ""
backup: yes
- name: Remove blank lines blockinfile put in
lineinfile :
path: /usr/share/somefile.sh
state: absent
regexp: '^$'
- 标记“”将在文件中插入空白行
- lineinfile 将删除它们(以及所有其他空行),所以要小心!!
答案3
公平地说,我最终使用以下内容来创建多条线。
https://stackoverflow.com/questions/24334115/ansible-lineinfile-for-several-lines
谢谢@udondan