Ansible blockinfile模块幂等?

时间:2017-01-09 13:56:30

标签: ansible ansible-playbook ansible-2.x idempotent

我想使用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

1 个答案:

答案 0 :(得分:6)

是。 blockinfile模块默认为幂等。

除了您指定的内容外,它还添加了两行:在块的开头和块的末尾。在后续运行中,它会检查这两个标记之间的内容,如果内容没有更改,则返回" ok"状态,不再插入。

这些行应作为注释插入到配置文件中,因此根据您使用的确切配置文件格式,您可以使用marker参数自定义用于标记注释的字符(默认情况下为&# 39; s #)。

如果在同一目标文件上使用多个blockinfile任务,则还应为每个任务添加一个唯一的字符串(也在marker参数中),以便Ansible可以区分它们。

在Ansible文档中阅读有关blockinfile的更多信息。