我正在编写一本非常简单的厨师食谱来管理 Web 应用程序的部署,并且我有一个用于数据库服务器的厨师管理节点,并且想从该数据库服务器中引入 IP 地址(和一些其他属性) , 进入在应用服务器上运行的配方...
例如,在检查应用服务器上的代码的秘籍中,像这样..
hostname = node[:myapp][:dbserver_hostname]
attributes = chef_get_attributes_for_hostname(hostname)
connect_to_mysql_at_ip = attributes[:ipaddress]
Run Code Online (Sandbox Code Playgroud)
我不确定这是否可以在厨师中轻松完成?正在努力寻找有关它的文档。谢谢!
我假设您已经为 Web 服务器、数据库服务器等设置了角色。
在应用服务器配方中是这样的:
dbservers = Array.new
search(:node, "role:database_server") do |n|
n["network"]["interfaces"]["eth0"]["addresses"].each_pair do |address,value|
dbservers << address if value.has_key?("broadcast")
end if n["network"]["interfaces"]["eth1"]
end
template "/path/to/app/config/appserver.conf" do
source 'appserver.conf.erb'
owner 'foo'
group 'bar'
mode 0644
variables :dbservers => dbservers
end
Run Code Online (Sandbox Code Playgroud)
然后您的模板将具有以下内容:
<% @dbservers.each do |s| -%>
connect_to_mysql_at_ip <%= s %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
使用 Chef 0.10 可能有更好的方法来获取 IP 地址。我认为上面的代码中可能有 Chef 0.9 的遗留问题,但它确实有效。
归档时间: |
|
查看次数: |
9305 次 |
最近记录: |