Chef を使ってUbuntu にGit 最新版をインストールする

投稿者: | 2016/04/10

最近はCentOS だけでなくUbuntu にも手を出し始めました。
機械学習ライブラリのメジャーどころとかSwift とか、ぜーんぶUbuntu の方を向いているんだもんなー。

そんなわけで、今回はGit の最新版(2016/04/10 時点Ver.2.8.1)をインストールするRecipe を作成してみました。

手順の流れ

  1. Chef solo インストール
  2. cookbook 作成
  3. attributes 作成
  4. recipe 作成
  5. cookbook 実行
  6. 結果確認

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

参考

Gitをsourceからインストールするchefのレシピ
Gitのインストール

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です