LoginSignup
29
29

More than 5 years have passed since last update.

Chefでソースアーカイブ取得→展開→ビルド→インストールするならark cookbookを使わない手はない

Last updated at Posted at 2014-01-05

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で準備します

Berksfile
site :opscode

cookbook 'java', git: "https://github.com/socrata-cookbooks/java.git" #こっちはglassfish用

cookbook 'ark'

install

# berks install

recipeの例

めんどくさいのでattributeとかに切り出してないですが、
パスワードとかはちゃんとやったほうがいいですね。

default.rb
#
# 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の設定が必要です。

metadata.rb
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を持っているのでぜひ使ってみてはいかがでしょうか?

29
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
29