ruby - Chef - 在条件检查中嵌入模板块
问题描述
我正在寻找一些红宝石帮助。我有这个代码块来检查我的 NGIX 服务器是否正在侦听特定端口,如果没有,则使用 Chef 模板进行更改并重新启动服务器。我在这里遇到的问题是我无法获得在另一个 Ruby 块中使用模板块的正确语法。
我可以要求一些语法帮助吗?
谢谢 :)
ruby_block "check sayc" do
block do
server = node['fqdn']
port = puts global_ssl_port.to_i
begin
Timeout.timeout(5) do
Socket.tcp(server, port){}
end
Chef::Log.info 'connections open'
rescue
Chef::Log.fatal 'connections refused'
#Configures Server NGIX Port
template '/etc/opscode/server.rb' do
source 'server.erb'
mode '0755'
owner 'root'
group 'root'
#Add new NGIX port configuration
variables(non_ssl_port: global_non_ssl_port, ssl_port: global_ssl_port)
end
end
end
end
解决方案
如果你仍然在你的 ruby 块中,你可以template
用新的实例替换 DSLChef::Resource::Template.new('nginx config')
并在之后设置类属性source
,mode
等等。
这是Chef::Resource::Template
运行所需的最少代码
ruby_block 'create template' do
block do
r = Chef::Resource::Template.new('template_name', run_context)
r.path '/tmp/file.txt'
r.source 'file.erb'
r.cookbook 'cookbook_name'
r.mode 00600
r.run_action :create
end
end
例如,您需要加入,并且需要用file.erb
您的食谱替换。templates/default/file.erb
cookbook_name
推荐阅读
- blockchain - 有什么作用!在 Solidity 中是什么意思?
- scala - Cats OptionT 未来未完成
- typescript - 重载是否适用于打字稿中的字符串类型的联合
- java - MongoDB java驱动,强制插入空值,字段大小写
- php - 从位置替换字符串中的数组
- mesos - FileNotFoundError: [Errno 2] No such file or directory: while delete the minidcos vagrant cluster
- android-listview - 如何使用 CheckBox 在 Listview 中实现删除线文本?
- android - Android 权限保护级别“正常”永远不会重新授予
- python - 'float' 类型的对象没有 len() 和图像生成问题
- c - C中未初始化指针的值