我想使用 blockinfile
模块在文件中插入一些行。
任务是这样的:
name: add some lines
become: true
blockinfile:
dest: /etc/sysctl.conf
block: |
mykey1={{ kernvars['my_value1'] }}
mykey2={{ kernvars['my_value2'] }}
mykey3={{ kernvars['my_value3'] }}
模块(或相关模式)是否可以仅在特定行不存在时检查并插入特定行?
在
ansible 2.0.0.2
上使用 Ubuntu 16.04.01
最佳答案
是的。 blockinfile
模块默认是幂等的。
除了您指定的内容之外,它还添加了两行:在块的开头和在块的末尾。在随后的运行中,它会检查这两个标记之间的内容,如果内容没有改变,它会返回“ok”状态并且不会再次插入它。
这些行应该作为注释插入到配置文件中,因此根据您使用的确切配置文件格式,您可以使用 marker
参数(默认为 #
)自定义用于标记注释的字符。
如果你在同一个目标文件上使用多个 blockinfile
任务,你应该另外为每个任务添加一个唯一的字符串(也在 marker
参数中),以便 Ansible 可以区分它们。
在 Ansible 文档中阅读有关 blockinfile
的更多信息。
关于Ansible blockinfile 模块幂等?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41549633/