
해당 패키지를 설치하는 방법에는 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
둘째.
packages = case node[:platform]
when "centos","redhat","fedora"
%w{net-snmp}
else
%w{snmpd}
end
packages.each do |pkg|
package pkg
end
셋째.
package "snmpd" do
action :install
only_if do platform?("ubuntu", "debian") end
end
답변1
나는 일반적으로 내 레시피에서 너무 많은 배포판을 지원하지 않지만 다른 레시피(예: Opscode에서)를 읽을 때 일반적으로 위의 두 번째와 유사한 접근 방식을 높이 평가합니다. 주요 차이점은 명시적으로 리소스를 직접 호출하는 경향이 있다는 것입니다. , 배열을 컴파일하는 대신.
case node[:platform]
when "centos","redhat","fedora"
package 'net-snmp'
else
package 'snmpd'
end
그러나 정확히 무엇을 표현하려고 하는지에 따라 각 경우에 여러 가지 장단점이 있습니다.