最近はCentOS だけでなくUbuntu にも手を出し始めました。
機械学習ライブラリのメジャーどころとかSwift とか、ぜーんぶUbuntu の方を向いているんだもんなー。
そんなわけで、今回はGit の最新版(2016/04/10 時点Ver.2.8.1)をインストールするRecipe を作成してみました。
手順の流れ
- Chef solo インストール
- cookbook 作成
- attributes 作成
- recipe 作成
- cookbook 実行
- 結果確認
1. Chef solo インストール
こちらの記事を参照のこと。
2. cookbook 作成
knife コマンドを使ってクックブック名’git’を作成します。
cookbook の作成先は慣例的に⁄var⁄chef⁄cookbooks 下な様です。
# -o オプションの位置はcookbook 名('git')の後に sudo knife cookbook create git -o /var/chef/cookbooks
3. attributes 作成
インストール時の各種設定値はattributes にて別途設定しておくと良い様です。
cd /var/chef/cookbooks/git sudo vi attributes/default.rb
設定ファイルは以下の様に。
default['git']['version'] = '2.8.1'
default['git']['source_uri'] = "https://www.kernel.org/pub/software/scm/git/git-#{default['git']['version']}.tar.gz"
default['git']['configure'] = './configure --prefix=/usr/local'
default['git']['packages'] = %w{make libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev}
4. recipe 作成
sudo vi recipes/default.rb
recipe は以下の様に。
#
# Cookbook Name:: git
# Recipe:: default
#
# Copyright 2015, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
install_dir = '/usr/local/src'
version = node['git']['version']
source_uri = node['git']['source_uri']
configure = node['git']['configure']
node['git']['packages'].each do |package_name|
package "#{package_name}" do
:install
end
end
remote_file "/tmp/git-#{version}.tar.gz" do
not_if 'which git'
source "#{source_uri}"
end
bash 'install_git' do
not_if 'which git'
user 'root'
code <<-EOL
install -d #{install_dir}
sudo tar -zxvf /tmp/git-#{version}.tar.gz -C #{install_dir}
cd #{install_dir}/git-#{version}
sudo #{configure} && make && make install
EOL
end
bash 'config_git' do
user 'root'
code <<-EOL
git config --global core.editor 'vim -c "set fenc=utf-8"'
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
git config --global core.precomposeunicode true
git config --global core.quotepath false
git config --global alias.b branch
git config --global alias.co checkout
EOL
end
5. cookbook 実行
cookbooks ディレクトリに移動してから、作成したcookbook 'git'をchef-solo から実行します。
cd /var/chef/cookbooks sudo chef-solo -o git
6. 結果確認
git のバージョンを確認してみましょう。
git --version git version 2.6.2