使用哪个模块编辑文件 - Ansible

Luv*_*eet 3 ansible

我想编辑telegraf(系统指标收集代理)的配置文件.

Telegraf带有一个可以编辑的默认配置文件.其中定义了许多输入和输出插件,这些插件已注释掉,可以通过删除注释添加,也可以自定义.

我只想编辑那里定义的一些插件,而不是全部.例如,考虑这是文件,

[global]
  interval='10s'

[outputs.influxdb]
  host=['http://localhost:8086']

#[outputs.elasticsearch]
#  host=['http://localhost:9200']

[inputs.netstat] 
  interface='eth0'
Run Code Online (Sandbox Code Playgroud)

现在,我想编辑3个块global,outputs.influxdbinputs.netstat.我不想编辑,outputs.elasticsearch但也希望该块outputs.elasticsearch应保留在文件中.

当使用Ansible时,我首先使用了模板模块,但是如果我使用它,那么评论的数据将会丢失.

然后我使用ini_file模块,而不是编辑已经存在的块,它添加了一个新块,即使它已经存在,并导致类似这样的事情,

[outputs.influxdb]
 host=[http://localhost:8086]
[outputs.influxdb]
 host=[http://xx.xx.xx.xx:8086]
Run Code Online (Sandbox Code Playgroud)

哪个模块适用于我的场景?

Tho*_*Fin 8

根据您的目的,有几种选择.
lineinfile -模块是最好的选择,如果你只是想添加,替换或删除一个行.
更换 -模块是最好的,如果你想添加,替换或删除几行.
blockinfile -模块可以添加几行,以标记包围.

如果您只想更改两行或三行,则可以使用lineinfile的多次调用.要更改整个配置文件,我建议,像评论者建议的那样,使用模板 - 模块.