我是ansible的新手,但是我能够成功使用blockinfile函数。但是我不知道如何防止插入标记。我阅读了文档,但似乎没有对其进行描述。
这就是在blockinfile写入的每个文件中显示的内容。
# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK
我是ansible的新手,但是我能够成功使用blockinfile函数。但是我不知道如何防止插入标记。我阅读了文档,但似乎没有对其进行描述。
这就是在blockinfile写入的每个文件中显示的内容。
# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK
Answers:
我看了一下github上的原始blockinfile
模块-在Ansible 2之前,它没有与Ansible捆绑在一起。事实证明,标记实际上是用来标识块的:
这似乎是预期的行为。它用指定的内容替换块标记所包围的所有行。
这意味着,如果删除标记,blockinfile
将不再能够识别块,这将导致模块在每次运行剧本时将块添加到文件中。
因此,已写块之前和之后的标记是模块的要求,不能删除。
如果这是一本永远不会再次执行的剧本,则可以lineinfile
在state: absent
以后使用选项运行模块。
旧答案:
根据文档,该blockinfile
模块有一个marker
选项。
您是否尝试将其设置为空字符串或False?
blockinfile:
dest: /var/www/html/index.html
marker: ""
要么
blockinfile:
dest: /var/www/html/index.html
marker: False
我做了这样的事...
- 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: '^$'