【发布时间】:2018-09-12 17:15:24
【问题描述】:
如果该属性不存在,我想编写一个 Chef Recipe 以将一个属性添加到我的 XML 属性中,如果该属性存在则设置该值。
xml_file:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="false" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
如果 SSLEnabled 键不存在,我想为每个连接器标记添加一个新属性 SSLEnabled="true"。如果属性已经存在,则将值更新为“true”。
我可以考虑使用 shell 命令(最好是 grep/sed/awk)吗?
如果不是,哪种资源适合此用例?
P.S:我的连接器 XML 标记可以跨越多行或单行。
【问题讨论】:
-
您不应该更喜欢基于正则表达式的工具来处理 XML。
-
我们不建议在 Chef 中对配置文件使用这种部分更新工作流。最好让整个文件由
template资源或类似资源控制,因为这样可以确保系统始终收敛。
标签: xml shell chef-infra chef-recipe