Linux
如何使用 CHEF 在配方中複製適當的配置文件?
我開始學習如何
recipes
發展chef
。我需要安裝Ganglia Monitor
在一些伺服器(或nodes
神經節文獻)中。所以這就是為什麼我要檢查平台是否是ubuntu
,centOS
以及許多其他人要安裝正確的軟體包。問題是我有兩個不同的
.config
文件,實際上這個.config
文件中只有一兩個參數會有所不同。我需要幫助如何檢測屬於哪個文件datacenter
,server
以便我可以複製正確的.config
文件。到目前為止,我能夠在下面開發這個腳本,但是我有一些 dobut,它們在程式碼的註釋中。# # Cookbook Name:: ganglia # Recipe:: default # # Copyright 2013, Valter Henrique.com # # All rights reserved - Do Not Redistribute # # Installing Ganglia Monitor case node[:platform] when "ubuntu", "debian" package "ganglia-monitor" when "redhat", "centos", "fedora" package "ganglia-gmond" end user "ganglia" end # Setting different .config files case ipaddress # DataCenter #1 # how put more options in the when condition ? A when for /^200.222./ or /^200.223./ ? when /^200.222./ # putting config file cookbook_file "/etc/ganglia/gmond.conf" do owner "root" group "root" mode "0644" source "dc1/gmond.conf" notifies(:restart, "service[gmond]") end #DataCenter #2 when /^216.235./ cookbook_file "/etc/ganglia/gmond.conf" do owner "root" group "root" mode "0644" source "dc2/gmond.conf" notifies(:restart, "service[gmond]") end end
關於如何以更好的方式開發此程式碼的任何建議?
source
您可以在資源屬性中使用變數cookbook_file
以避免程式碼重複。dc = case ipaddress when /^200\.222\./ 'dc1' when /^216\.235\./ 'dc2' end cookbook_file "/etc/ganglia/gmond.conf" do owner "root" group "root" mode "0644" source "#{dc}/gmond.conf" notifies(:restart, "service[gmond]") end