ansible blockinfile禁用标记


11

我是ansible的新手,但是我能够成功使用blockinfile函数。但是我不知道如何防止插入标记。我阅读了文档,但似乎没有对其进行描述。

这就是在blockinfile写入的每个文件中显示的内容。

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

Answers:


14

我看了一下github上的原始blockinfile模块-在Ansible 2之前,它没有与Ansible捆绑在一起。事实证明,标记实际上是用来标识块的

这似乎是预期的行为。它用指定的内容替换块标记所包围的所有行。

这意味着,如果删除标记,blockinfile将不再能够识别块,这将导致模块在每次运行剧本时将块添加到文件中。

因此,已写块之前和之后的标记是模块的要求,不能删除。

如果这是一本永远不会再次执行的剧本,则可以lineinfilestate: absent以后使用选项运行模块。


旧答案:

根据文档,该blockinfile模块有一个marker选项。

您是否尝试将其设置为空字符串或False?

blockinfile:
    dest: /var/www/html/index.html
    marker: ""

要么

blockinfile:
    dest: /var/www/html/index.html
    marker: False

1
抱歉,上面的陈述不完整,有人敲门,我不得不逃跑。我昨天尝试了这些想法。marker:“”-在文件的顶部和底部添加一行。错误:-只需在文件的底部和顶部添加单词false。还有其他想法吗?
Nik

2
我更新了答案。标记实际上是模块本身所需的标记,即使您可以,也可能不想删除它们。有关详细信息,请参见更新的答案。
udondan '16

0

我做了这样的事...

- 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会删除它们(以及所有其他空白行),所以要当心!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.