在人偶中更改 xml 值的最佳方法

Best way to change xml values in puppet

我想更改 domain.xml(JBoss 配置文件)中的值。请建议我使用示例示例进行更改的最佳方法。

我找到了以下方法。但是不知道,如何对 xml 个文件使用以下函数。

( i ) inline_template

( ii ) regsubst

我必须根据每个组更改以下四个 属性。对于每个组,将更改 4 个属性的值。请给我建议最佳的行业实践标准。

<system-properties>
    <property name="jboss.default.multicast.address" value="230.0.1.1" boot-time="true"/>
    <property name="modcluster.balancer.name" value="mylb" boot-time="true"/>
    <property name="modcluster.proxylist" value="172.28.168.153:6777" boot-time="true"/>
    <property name="mycluster.modcluster.lbgroup" value="coollb" boot-time="true"/>
</system-properties>

inline_template在master上执行,所以他们不会解决你的问题。

最简单的解决方案是 erb 模板。但这意味着您将从 puppet 控制整个文件,而不仅仅是属性。

最佳解决方案:xml似乎有一个augeas镜头:https://twiki.cern.ch/twiki/bin/view/Main/TerjeAndersenAugeas

编辑:

  • 您的模块中有一个 erb 模板 (templates/jboss_config.xml.erb)

    <bla bla>....
    <system-properties>
        <property name="jboss.default.multicast.address" value="<%= @multicast_address %>" boot-time="true"/>
        <property name="modcluster.balancer.name" value="<%= @balancer_name %>" boot-time="true"/>
        <property name="modcluster.proxylist" value="<%= @proxylist %>" boot-time="true"/>
        <property name="mycluster.modcluster.lbgroup" value="<%= @lbgroup %>" boot-time="true"/>
    </system-properties>
    </bla bla>....
    

在你的人偶 class 中声明 parameters/variables(如果你想根据某些事实进行覆盖,那些也可以来自 hiera):

    $multicast_address = '230.0.1.1'
    $balancer_name = 'mylb'
    $proxylist = '172.28.168.153:6777'
    $lbgroup = 'coollb'

    # and write your file:
    file { 'jboss_config_file':
      ensure  => file,
      path    => '/path/to/jboss/config/file.xml',
      content => template("${module_name}/jboss_config.xml.erb"),
    }