这可以通过使用file.replace模块来完成,该模块使您能够根据模式更改文件中的文本。因此,在您的情况下,您可以执行以下操作:
您需要选择模式作为正则表达式组,以便稍后使用它,如下所示
configure_ossec:
file.replace:
- name: /path/to/ossec.conf
- pattern: '((<config-profile>.*?)[^<]*)'
- repl: {{ '\\1, ' + pillar['ossec-profiles'] | join(', ') }}
或者您可以使用此模式仅匹配内部config-profile
标签,然后您将能够在repl
参数中再次调用它:
(?<=<config-profile>)(.*)(?=<\/config-profile>)
注意:由于pillar['ossec-profiles']
应该返回配置文件列表,那么您必须使用连接过滤器才能使用逗号分隔值作为分隔符
最后预期的输出是这样的:
Changes:
----------
diff:
---
+++
@@ -1 +1 @@
-<config-profile>centos, centos7</config-profile>
+<config-profile>centos, centos7, profile1, profile2</config-profile>