我有一个rails应用程序,我想将./config/environment/production.rb文件更改为根据我希望该服务器执行的操作来更改其他配置。
所以,我要从.pp文件进入.rb文件并更改一些字符串然后重新启动服务。这对我来说似乎很糟糕。有一个更好的方法吗?我被要求提供 1 RPM并通过puppet更改配置,所以......
class Cloud-widget($MServer, $GoogleEarthServer, $CSever) {
package { "Cloud-widget":
ensure => installed
}
service { "Cloud-widget":
ensure => running,
}
<%
file_names = ['./config/environment/production.rb']
file_names.each do |file_name|
puts text.gsub(/.*config.mserver(.*)/, "config.mserver_root = \"#{$Merver}\"")
puts text.gsub(/.*config.google_earth_url(.*)/, "config.google_earth_url( = \"#{$GoogleEarthServer}\"")
puts text.gsub(/.*config.cserver_base_url(.*)/, "config.cserver_base_url = \"#{$CServer}\"")
end
File.open(file_name, "w") {|file| file.puts output_of_gsub}
%>
service { Cloud-widget:
ensure => running,
subscribe => File["./config/environment/production.rb"],
}
}
答案 0 :(得分:2)
不,这不是实现所需目标的好方法。
您可以查看模板并以这种方式生成配置文件。这样,您可以在配置文件中使用变量。
答案 1 :(得分:0)
如果你需要从模式创建conf,你应该使用Puppetlabs的INI文件模块
ini_setting { "sample setting":
path => '/tmp/foo.ini',
section => 'foo',
setting => 'foosetting',
value => 'FOO!',
ensure => present,
}
从木偶安装此模块:
puppet module install cprice404-inifile