搜索的正确语法是什么?在Ansible剧本中取代?

时间:2016-04-07 14:38:54

标签: regex ansible ansible-playbook

我正在写一本Ansible手册,它将安装和配置我公司使用的某个监控系统的代理。 成功配置代理程序所需的步骤之一是将Nagios“log_rotation_method”配置为每日。 nagios.cfg文件中的相关行是: log_rotation_method=h我希望Ansible更改为log_rotation_method=d

剧本的相关部分如下:

- name: Set Nagios rotation method to daily
  replace: dest=/etc/nagios3/nagios.cfg regexp='log_rotation_method=h' replace='log_rotation_method=d' 

在bash中我会写这样的东西:

sed -i 's/^log_rotation_method.*/log_rotation_method=d/g' nagios.cfg

但是我很难理解它应该如何用Ansible编写,这是基于Python的。

知道应该怎么写吗? 解释不仅仅是受欢迎的。

2 个答案:

答案 0 :(得分:1)

我会用lineinfile做到这一点:

- lineinfile: dest=/etc/nagios3/nagios.cfg regexp='^log_rotation_method.*' line='log_rotation_method=d'

答案 1 :(得分:0)

你可以写一个与你在bash中写的东西非常相似的东西(它们最终都是正则表达式):

   replace: dest=/etc/nagios3/nagios.cfg regexp='^log_rotation_method.*' replace='log_rotation_method=d' 

它实际上应该以你写的方式工作。在正则表达式的情况下,它将匹配那个确切的字符串而不是多个。