0

我正在尝试修改文件的<config-profile>部分ossc.conf,包括谷物内容。

就像是:

ossec-profiles:
  - profile1
  - profile2

我想<config-profile>

<config-profile>centos, centos7</config-profile>

<config-profile>centos, centos7, profile1, profile2</config-profile>

ossec.conf文件中

任何想法?

4

1 回答 1

1

这可以通过使用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>

于 2019-02-02T20:27:02.057 回答