【发布时间】:2016-02-15 23:28:55
【问题描述】:
我正在尝试使用 puppet 编辑 weblogic config.xml 文件以完成 SSL 配置部分。
在起始 weblogic config.xml 文件下方:
<?xml version="1.0" encoding="UTF-8"?>
<domain ...
...
<server>
<name>AdminServer</name>
<ssl>
<name>AdminServer</name>
<enabled>true</enabled>
<listen-port>7336</listen-port>
</ssl>
低于我需要得到的:
<?xml version="1.0" encoding="UTF-8"?>
<domain ...
...
<server>
<name>AdminServer</name>
<ssl>
<name>AdminServer</name>
<enabled>true</enabled>
<hostname-verifier xsi:nil="true"></hostname-verifier>
<hostname-verification-ignored>false</hostname-verification-ignored>
<client-certificate-enforced>false</client-certificate-enforced>
<listen-port>7336</listen-port>
<two-way-ssl-enabled>true</two-way-ssl-enabled>
<server-private-key-alias>...alias...</server-private-key-alias>
<server-private-key-pass-phrase-encrypted>...key-pass-phrase... </server-private-key-pass-phrase-encrypted>
</ssl>
在我的傀儡代码下面:
augeas { "ssl_config_${instance}":
lens => "Xml.lns",
require => File["${config_instance}"],
incl => "${config_instance}",
changes => [
"set domain/server/ssl/hostname-verifier/#attribute/xsi:nil true",
"set domain/server/ssl/hostname-verification-ignored/#text false",
"set domain/server/ssl/client-certificate-enforced/#text false",
"set domain/server/ssl/two-way-ssl-enabled/#text true",
"set domain/server/ssl/server-private-key-alias/#text ${server_private_key_alias}",
"set domain/server/ssl/server-private-key-pass-phrase-encrypted/#text ${server_private_key_pass_phrase}",
],
}
低于我得到的:
...
<ssl>
<name>AdminServer</name>
<enabled>true</enabled>
<listen-port>7336</listen-port>
<hostname-verifier xsi:nil="true"></hostname-verifier>
<hostname-verification-ignored>false</hostname-verification-ignored>
<client-certificate-enforced>false</client-certificate-enforced>
<two-way-ssl-enabled>true</two-way-ssl-enabled>
<server-private-key-alias>default</server-private-key-alias>
<server-private-key-pass-phrase-encrypted>...key-pass-phrase...
</server-private-key-pass-phrase-encrypted>
</ssl>
如您所见,节点是在最后一个节点之后添加的,但这样我们会使架构无效。
有没有办法指定新节点应该添加到哪个位置?
提前感谢您的任何反馈 问候 费普
【问题讨论】:
-
对 augeas 完全不熟悉,但几乎可以使用任何通用语言(Java、C#、Perl、PHP、Python、R、VB)来处理此任务。建议您使用什么。希望你不是一个用锤子做所有工作的木匠!
-
@ferp 所以你的问题是应该正确放置
listen-port,对吧?如果是这样,那就意味着你需要使用insert而不是set,但是幂等性会更难实现。 -
@Parfait 所有这些语言都可以编辑 XML,但使用 Puppet 进行幂等编辑则是另一回事。