Chef에서 package 설치를 할 때 bash에서 yum이나 apt-get을 이용하여 설치할 수도 있겠지만 동일한 cookbook을 CentOS나 Ubuntu 모두에 적용할 경우에는 조건에 의하여 yum인지 apt-get인지 알려주는 로직이 필요합니다. 

이 때, chef 의 <package> 를 이용할 수 있습니다.

package "wget" do
  action :install
end

wget을 설치하였습니다.

 

그런데 간혹 package 명이 플랫폼에 따라 다른 경우가 있습니다. openssl-dev가 대표적입니다. CentOS에서는 openssl-dev이지만 Ubuntu에서는 libssl-dev 입니다.

case node[:platform]
when "centos"
  package "openssl-devel" do
    action :install
  end
when "ubuntu","debian"
  package "libssl-dev" do
    action :install
  end
end

이렇게 하면 되겠지요.

 

apr-util-dev도 마찬가지입니다. 

case node[:platform]
when "centos"
  package "apr-util-dev" do
    action :install
  end
  package "libaprutil1-dev" do
    action :install
  end
end