yumとかに無いので、どっかのネット上からソースのアーカイブを落としてきて、tmpで展開して、makeしてinstallする
結構よくある操作だと思いますが、
公開されているレシピを見ていると結構自前で書いていることをよく見かけます。
そういう操作をする時はopscode cookbookのarkを使うといいですおという話です。
chef-ark
chef-arkはアーカイブされたリソースの管理を行うopscode製のcookbookで、
- リソースの取得
- 展開(アーカイブの解凍)
- ビルド(make)
- インストール(make installとかsymbolic link作ったりとか ownerやgroupを設定したりとか)
などの一連の流れを実施してくれます。
もちろん展開時はzipやらtar.gzからは全く気にすることなく、展開を実施してくれますし、makeなども不要であれば実施しません。
環境
- Chef 11以上
試してみる
今回はark
を利用して、glassfishを入れてみたいと思います。
ark cookbookの準備
Berkshelfで準備します
site :opscode
cookbook 'java', git: "https://github.com/socrata-cookbooks/java.git" #こっちはglassfish用
cookbook 'ark'
install
# berks install
recipeの例
めんどくさいのでattributeとかに切り出してないですが、
パスワードとかはちゃんとやったほうがいいですね。
#
# Cookbook Name:: glassfish
# Recipe:: default
#
# All rights reserved - Do Not Redistribute
#
include_recipe "java"
group 'glassfish' do
group_name 'glassfish'
action :create
end
user 'glassfish' do
group 'glassfish'
home '/home/glassfish'
password "password"
action :create
end
ark "glassfish" do
url "http://download.java.net/glassfish/4.0/release/glassfish-4.0-ml.zip"
path "/opt"
owner "glassfish"
group "glassfish"
version "4.0"
action :put
end
ark
リソースのaction
を:put
にしています。
通常は:install
に入れますがするとglassfish/bin
が$PATH
に設定されかつ/usr/local/
下にシンボリックリンクが作成されます。
このあたりは不要だったので:put
アクションにしています。
あと多分metadata.rbにdepends
の設定が必要です。
name 'glassfish'
maintainer 'bfts.co.jp'
maintainer_email 'soundtricker@example.com'
license 'All rights reserved'
description 'Installs/Configures glassfish'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version '0.1.0'
depends "java"
depends "ark"
あとは起動
普通に起動してください。いい感じで
-
http://download.java.net/glassfish/4.0/release/glassfish-4.0-ml.zip
からglassfish-4.0-ml.zipを取得 - chefのcacheディレクトリ(
Chef::Config[:file_cache_path]
)に展開 - /opt配下へコピー
- owner、groupの設定
あたりをしてくれます。
もちろん設定でパーミッション設定や、$PATH
への追加などなどインストールに必要なことはだいたいやってくれます。
まとめ
ark cookbookはかなり利用しやすいresourceを持っているのでぜひ使ってみてはいかがでしょうか?