在人偶中更改 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"),
}
我想更改 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"),
}