Это можно сделать с помощью модуля 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>