Redhat系のパッケージ管理ツールであるところの yum には グループインストール という関連するパッケージを一気にインストールしてくれる機能があります。
[参考] Yum のグループ機能を使ってパッケージ インストールを楽にする
https://jp.linux.com/Linux%20Jp/tutorial/420167-tutorial2014081101
また、Chef には yum_packageリソースという機能があり、recipeに
yum_package ksh
と書くだけでいい感じに パッケージを導入してくれます。が、yum_packageリソースのマニュアルを読むと分かるように、Chef の yum_package リソースには グループインストール のオプションがありません。
[参考] yum_package
https://docs.chef.io/resource_yum.html
yum のグループインストール機能が使える Chef の recipe というのをご紹介したいと思います。
解決策(1) supermarket のcookbookを利用する
Chef supermarket で そのものズバリ yumgroup
という cookbook が提供されています。
yumgroup
https://supermarket.chef.io/cookbooks/yumgroup
このCookbookはrecipeを持たない LWRP(Light Weight Resources & Provider) Cookbook なので、拡張Resourcesを提供してくれます。本Cookbookの場合は、yumgroup
という yum グループインストール の機能を持つ 拡張Resourcesを提供してくれるようです。
include_recipe 'yumgroup'
yumgroup 'Web Server' do
action :install
end
解決策(2) executeリソースを利用する
supermarket の cookbook に頼らずとも、以下のように execute リソースをうまく活用すれば、若干 recipeの可読性は落ちるかもしれませんが、実装可能です。
execute 'X Window System' do
user 'root'
command "LANG=C yum groups install -y hidden 'X Window System'"
action :run
not_if "LANG=C yum groups list -q installed hidden | grep 'X Window System'"
end
execute 'Fonts' do
user 'root'
command "LANG=C yum groups install -y hidden 'Fonts'"
action :run
not_if "LANG=C yum groups list -q installed hidden | grep 'Fonts'"
end
supermarket の cookbook とくらべても シンプルな実装が実現できますので、execute リソースでの実装がおすすめです。