在puppet中更改xml值的最佳方法

时间:2015-11-04 17:37:51

标签: puppet puppet-enterprise

我想更改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>

1 个答案:

答案 0 :(得分:3)

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>....
    

在你的puppet类中声明参数/变量(如果你想根据一些事实做覆盖,那些也可以来自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"),
    }