如何在某些条件下使用Setm

时间:2016-02-15 07:48:45

标签: puppet puppet-enterprise augeas

我想用setm命令更改一个属性名称(“modcluster.proxylist”),并在Puppet中使用约束。以下代码不检查我的约束。非常感谢任何帮助。

以下是我想要更改的源XML。

约束: 在下面,Two Group没有属性名称。在这些组中,不应该应用更改。

<server-groups>
    <server-group name="ServiceGroupOne" profile="full-ha">
        <system-properties>
            <property name="jboss.default.multicast.address" value="232.0.2.20" boot-time="true"/>
            <property name="modcluster.proxylist" value="192.168.79.77:7777" boot-time="true"/>
            <property name="modcluster.lbgroup" value="SearchGroupOne" boot-time="true"/>
       </system-properties>
    </server-group>
    <server-group name="ServiceGroupTwo" profile="full-ha">
        <system-properties>
            <property name="jboss.default.multicast.address" value="232.0.2.20" boot-time="true"/>
            <property name="modcluster.lbgroup" value="SearchGroupTwo" boot-time="true"/>
        </system-properties>
    </server-group>
    <server-group name="ServiceGroupThree" profile="full-ha">
        <system-properties>
            <property name="modcluster.lbgroup" value="CommonSearchGroup" boot-time="true"/>
            <property name="modcluster.proxylist" value="192.168.79.77:7777" boot-time="true"/>
            <property name="jboss.default.multicast.address" value="232.0.2.20" boot-time="true"/>
        </system-properties>
    </server-group>
    <server-group name="ServiceGroupFour" profile="full-ha">
    </server-group>
</server-groups>

Augeas代码:

以下代码编辑所有服务器组。它还插入了我们没有属性的第二和第四服务器组(modcluster.proxylist)。

augeas { "jboss_domain_config":
    incl    =>      "${dc_home}/domain/configuration/domain.xml",
    lens    =>      "Xml.lns",
    changes =>      "setm /files/${dc_home}/domain/configuration/domain.xml/domain/server-groups/server-group system-properties/property[#attribute/name='modcluster.proxylist']/#attribute/value ${proxylist}",
    require => File["${dc_home}/domain/configuration/domain.xml"],
}

1 个答案:

答案 0 :(得分:1)

总结您的需求,您希望:

  • 选择已存在的modcluster.proxylist属性
  • 将其值替换为${proxylist}

这应该做:

augeas { "jboss_domain_config":
    incl    =>  "${dc_home}/domain/configuration/domain.xml",
    lens    =>  "Xml.lns",
    changes =>  "setm domain/server-groups/server-group/system-properties/property/#attribute[name='modcluster.proxylist'] value ${proxylist}",
}