如何在人偶中使用 setm
How to use setm in puppet
我想用 setm[ 更改一个 属性 名称 ( "modcluster.proxylist" ) =20=] Puppet 中的命令。我的以下代码不起作用。非常感谢任何帮助。
augeas { "jboss_domain_config":
incl => "/opt/domain.xml",
lens => "Xml.lns",
context => "/files/opt/domain.xml",
onlyif => "match /files/opt/domain.xml/domain/server-groups/*/system-properties/*/#attribute/name modcluster.proxylist"
changes => "setm /files/opt/domain.xml/domain/server-groups server-group[.]/system-properties/property[.]/#attribute/value kumaran",
}
以下是我想要更改的来源XML。
<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"/>
<property name="modcluster.proxylist" value="192.168.79.77:7777" 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>
里面有不少问题。让我们一一处理:
您提供的 domain.xml
代码似乎是错误的,因为没有 Puppet 代码建议的 domain
和 server-groups
节点。我认为您提供的代码还有两个级别:
<domain>
<server-groups>
<!-- the rest of the file -->
<server-groups>
<domain>
使用incl
和lens
时不需要设置context
,是自动的
- 你误解了
setm
的工作方式:第一个参数是Augeas将循环的节点集,第二个是要设置的子节点,第三个是值
- 你想用
setm
做的改变本身就是幂等的,这里真的没必要用onlyif
。
结果如下:
augeas { "jboss_domain_config":
incl => "/tmp/domain.xml",
lens => "Xml.lns",
changes => "setm domain/server-groups/server-group system-properties/property[#attribute/name='modcluster.proxylist']/#attribute/value kumaran",
}
我想用 setm[ 更改一个 属性 名称 ( "modcluster.proxylist" ) =20=] Puppet 中的命令。我的以下代码不起作用。非常感谢任何帮助。
augeas { "jboss_domain_config":
incl => "/opt/domain.xml",
lens => "Xml.lns",
context => "/files/opt/domain.xml",
onlyif => "match /files/opt/domain.xml/domain/server-groups/*/system-properties/*/#attribute/name modcluster.proxylist"
changes => "setm /files/opt/domain.xml/domain/server-groups server-group[.]/system-properties/property[.]/#attribute/value kumaran",
}
以下是我想要更改的来源XML。
<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"/>
<property name="modcluster.proxylist" value="192.168.79.77:7777" 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>
里面有不少问题。让我们一一处理:
您提供的
domain.xml
代码似乎是错误的,因为没有 Puppet 代码建议的domain
和server-groups
节点。我认为您提供的代码还有两个级别:<domain> <server-groups> <!-- the rest of the file --> <server-groups> <domain>
使用
incl
和lens
时不需要设置context
,是自动的- 你误解了
setm
的工作方式:第一个参数是Augeas将循环的节点集,第二个是要设置的子节点,第三个是值 - 你想用
setm
做的改变本身就是幂等的,这里真的没必要用onlyif
。
结果如下:
augeas { "jboss_domain_config":
incl => "/tmp/domain.xml",
lens => "Xml.lns",
changes => "setm domain/server-groups/server-group system-properties/property[#attribute/name='modcluster.proxylist']/#attribute/value kumaran",
}