У меня есть 3 разных способа установки указанного пакета, и я больше всего предпочитаю вариант №1, но я хотел узнать, есть ли причина использовать вариант №2 или 3 или любые другие варианты? (Моя цель в этом вопросе - получить отзывы о различных способах сделать это; и, если возможно, не устанавливать во время компиляции ... в этом случае)
1-й.
p = package "snmp" do
package_name value_for_platform(
[ "centos", "redhat", "suse" ] => { "default" => "net-snmp" },
"default" => "snmpd"
)
action :install
end
2-й.
packages = case node[:platform]
when "centos","redhat","fedora"
%w{net-snmp}
else
%w{snmpd}
end
packages.each do |pkg|
package pkg
end
3-й.
package "snmpd" do
action :install
only_if do platform?("ubuntu", "debian") end
end
Обычно я не поддерживаю слишком много дистрибутивов в моих собственных рецептах, но при чтении других рецептов (например, из Opscode) я обычно ценю подходы, аналогичные вашему второму, указанному выше, основное отличие состоит в том, что я склонен напрямую вызывать ресурс напрямую , а не компилировать массив.
case node[:platform]
when "centos","redhat","fedora"
package 'net-snmp'
else
package 'snmpd'
end
Однако в каждом случае есть ряд плюсов и минусов, в зависимости от того, что именно вы пытаетесь выразить.