Установка переменной на основе окружающей среды в шеф-повара
У меня проблемы с установкой переменной в шаблоне на основе результата node.chef_environment. Когда я запускаю кухню, сходятся ошибки запуска шеф-повара при перезапуске службы nrpe, потому что NRPE жалуется, что allow_hosts пуст. Это моя первая попытка написать кулинарную книгу, поэтому прошу прощения за все уродливые вещи, которые я сделал.
if node.chef_environment == "development" || node.chef_environment == "qa" || node.chef_environment == "vagrant"
node.default['allowed_hosts'] = "ipaddr"
elsif node.chef_environment == "staging" || node.chef_environment == "production"
node.default['allowed_hosts'] = "ipaddr2"
end
case
when platform_family?("debian")
package "nagios-nrpe-server"
package "nagios-plugins-basic"
when platform_family?("rhel")
package "nagios-nrpe"
package "nagios-plugins-nrpe"
package "net-snmp-utils"
else
Chef::Application.fatal! "[nagios-nrpe client] unsupported platform family: #{node[:platform_family]}"
end
template "/etc/nagios/nrpe.cfg" do
source "nrpe.cfg.erb"
owner "root"
group "root"
mode "0644"
variables(
:allowed_hosts => node.default['allowed_hosts']
)
end
bash "wget" do
code <<-EOH
cd /usr/lib/nagios/
wget --no-check-certificate remote_source
EOH
end
directory "/usr/lib/nagios/plugins" do
action :delete
recursive true
end
execute "untar plugins" do
cwd "/usr/lib/nagios/"
command "tar zxvf cc_sys_nrpe.tar.gz"
end
directory "/usr/lib/nagios/plugins" do
mode "777"
recursive true
end
file "/usr/lib/nagios/cc_sys_nrpe.tar.gz" do
action :delete
end
service "nagios-nrpe-server" do
supports :status => true, :restart => true, :reload => true
action :restart
end
2 ответа
Чтобы настроить среду с помощью тестовой кухни, добавьте это в свой .kitchen.yml
:
provisioner:
name: chef_solo
solo_rb:
environment: vagrant
или же
provisioner:
name: chef_zero
client_rb:
environment: vagrant
Хотя вы можете установить имя среды из кода рецепта, это не приведет к полному применению атрибутов среды или ограничений версии кулинарной книги (хотя последнее не соответствует одиночному).
Таким образом, проблема в конечном итоге заключалась в том, что тест-кухня не настроена для установки node.chef_environment as "vagrant"
, Я пришел к такому выводу, как только я специально установил node.chef_environment в кулинарной книге.