gpt4 book ai didi

ruby - 使用 Chef 编辑文件

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:22 27 4
gpt4 key购买 nike

我知道有很多答案和已解决的答案,但似乎对我没有任何用处,我想做的是在 tomcat 安装完成后添加几行代码,并将其安装在/var/lib/tomcat8/conf/catalina.properties 文件。

这是我到目前为止尝试过的简单的 ruby​​ 方式和 chef utils。

File.open("/var/lib/tomcat8/conf/catalina.properties", "a+") do |f|
f << "\n"
f << "javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"
end


ruby_block "insert_line" do
block do
file = Chef::Util::FileEdit.new("/var/lib/tomcat8/conf/catalina.properties")
file.insert_line_if_no_match("/javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl/", "javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl")
file.write_file
end
end



file '/var/lib/tomcat8/conf/catalina.properties' do
action :create
owner 'root'
group 'root'
content File.open("/var/lib/tomcat8/conf/catalina.properties", "a+") do |f|
f << "\n"
f << "javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"
end
end



file '/var/lib/tomcat8/conf/catalina.properties' do
action :create
owner 'root'
group 'root'
content File.open("/var/lib/tomcat8/conf/catalina.properties", "a+") do |f|
f << "\n"
f << "javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"
end
end

我试着把 puts 放在“测试”中,似乎 Chef 甚至没有进入代码。

最佳答案

查看 poise-fileline Recipe ,了解如何更安全地执行此操作的示例。

我们总体上不推荐这种方法,因为它会创建非常脆弱的代码,通常是不收敛的(正如您所注意到的)。更好的方法是使用一个template资源来收敛控制整个文件。

关于ruby - 使用 Chef 编辑文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com