Cookbook情報
- 名称: build-essential
- 開発元: Opscode
- Opscode site: http://community.opscode.com/cookbooks/build-essential
- Source: https://github.com/opscode-cookbooks/build-essential
- 評価したバージョン: v1.3.2
概要
各プラットフォームに対して、ビルドパッケージ群をまとめて導入する。
解説
Ubuntu Server
ではgcc
,libc
やmake
を使えるようにするために、とりあえずbuild-essentialをインストールします。 この感覚を複数のOS、ディストリビューションで再現するためのCookbookです。
Readmeから対応プラットフォームを抜粋。
- Linux (fedora redhat centos ubuntu debian amazon scientific)
- Darwin (macosx 10.6+)
- SmartOs
SmartOSはcookbook[pkgin]
に依存しているので一緒にChefServerに入れておけば動作します。
Recipes
レシピは一つ。Ohaiがプラットフォームを判断して適当なパッケージをinstallするだけです。
default
パッケージインストール部分をチェック、ディストリビューション毎にパッケージの配列を分岐させていますね。
packages = case node['platform_family'] when "debian" %w{build-essential binutils-doc} when "rhel", "fedora" %w{gcc gcc-c++ kernel-devel make} when "suse" %w{gcc gcc-c++ kernel-default-devel make m4} # in SLES there is no kernel-devel end packages.each do |pkg| r = package pkg do action ( compiletime ? :nothing : :install ) end r.run_action(:install) if compiletime end %w{autoconf flex bison}.each do |pkg| r = package pkg do action ( compiletime ? :nothing : :install ) end r.run_action(:install) if compiletime end
このあとSmartOSやMacOSの記述ですが割愛します。
Attributes
設定が必要なデーモンなどの導入ではないので、特に気にするものはないです。
実行ログ1: CentOSに適用
sshが繋がる状態のCentOSをChef-clientに仕立ててついでにレシピを適用します。
$ knife bootstrap #{server} -r "recipe[build-essential]"
クラウドベンダに対応したknife
のプラグインを使ってインスタンスの作成から一発でやってもよいです。
$ knife zcloudjp machine create -I sdc:jpc:centos-6:1.3.0 -N cent66 -r "recipe[build-essential]"
検出されたプラットフォームに対応して、chef-clientによるコンバージェンスが行われます。
INFO: Loading cookbooks [build-essential]
INFO: Processing package[gcc] action install (build-essential::default line 51)
INFO: package[gcc] installing gcc-4.4.6-4.el6 from base repository
INFO: Processing package[gcc-c++] action install (build-essential::default line 51)
INFO: package[gcc-c++] installing gcc-c++-4.4.6-4.el6 from base repository
INFO: Processing package[kernel-devel] action install (build-essential::default line 51)
INFO: package[kernel-devel] installing kernel-devel-2.6.32-279.19.1.el6 from updates repository
INFO: Processing package[make] action install (build-essential::default line 51)
INFO: Processing package[autoconf] action install (build-essential::default line 58)
INFO: package[autoconf] installing autoconf-2.63-5.1.el6 from base repository
INFO: Processing package[flex] action install (build-essential::default line 58)
INFO: package[flex] installing flex-2.5.35-8.el6 from base repository
INFO: Processing package[bison] action install (build-essential::default line 58)
INFO: package[bison] installing bison-2.4.1-5.el6 from base repository
ビルド関連ツールがインストールされた状態にしてくれました。
実行ログ2: SmartOSに適用
Joyent SmartOSに対して行います、cookbook[pkgin]
を添えます。
$ knife bootstrap #{server} -r "recipe[pkgin],recipe[build-essential]"
クラウドベンダに対応したknife
プラグインなら。
$ knife zcloudjp machine create -I sdc:sdc:base64:1.8.4 -N smart184 -r "recipe[pkgin],recipe[build-essential]"
検出されたプラットフォームに対応して、chef-clientによるコンバージェンスが行われます。
INFO: Loading cookbooks [build-essential, pkgin]
INFO: Processing pkgin_package[gcc47] action install (build-essential::default line 67)
INFO: Processing pkgin_package[gcc47-runtime] action install (build-essential::default line 67)
INFO: Processing pkgin_package[scmgit-base] action install (build-essential::default line 67)
INFO: Processing pkgin_package[gmake] action install (build-essential::default line 67)
INFO: Processing pkgin_package[pkg-config] action install (build-essential::default line 67)
INFO: Processing pkgin_package[binutils] action install (build-essential::default line 67)
こちらもビルド関連ツールがインストールされた状態にしてくれました。
あとがき
Chefはクロスプラットフォームの対応を進めており、少々モノが違っても大体同じことが出来るように作られています。
サーバの役割は外部に対してサービスを提供することであり、構築に付随する負担を削減しようという思想がこのCookbookにシンプルに現れているような気がします。
多くの人にとって、サーバ環境構築は目的でなくサービスを展開する手段なのですから。