我是新来的,但是我能够成功地使用blockinfile函数。 但是我不知道如何防止插入标记。 我阅读文档,但似乎没有描述它。
这是blockinfile写入的每个文件中显示的内容。
# BEGIN ANSIBLE MANAGED BLOCK # END ANSIBLE MANAGED BLOCK
我看了一下github上的原始blockinfile
模块 – 在Ansible 2之前,它没有与Ansible捆绑在一起。 事实certificate,这些标记实际上用来标识块 :
这似乎是有意的行为。 它用指定的内容replace块标记包围的所有行。
这意味着如果您删除了标记, blockinfile
将不再能够识别该块,这将导致模块在每次运行playbook时都将该块添加到文件中。
所以写块之前和之后的标记是模块的要求,不能删除。
如果这是一次性剧本,将永远不会再次执行您可以运行lineinfile
模块与state: absent
选项后。
老答案:
根据文档, blockinfile
模块有一个marker
选项。
你尝试把它设置为空string还是False?
blockinfile: dest: /var/www/html/index.html marker: ""
要么
blockinfile: dest: /var/www/html/index.html marker: False
公平的,我结束了使用以下创build多行。
https://stackoverflow.com/questions/24334115/ansible-lineinfile-for-several-lines
谢谢@udondan