Tbpgr Blog

Recruiting Operations tbpgr(てぃーびー) のブログ

GitCloner | GitCloner gem を berkshelfの代わりに使ってみる

概要

GitCloner gem を berkshelfの代わりに使ってみる

詳細

インストールの敷居が高いと噂のberkshelfの代わりに GitCloner gem を使ってみます。
git_clonerは単純に任意のgitリポジトリを指定場所にコピーするだけなので、
cookbookの依存性は考慮していません。

※GitCloner gemのGitHubリポジトリRubyGemsのURLは下記
GitHub: https://github.com/tbpgr/git_cloner
RubyGems: https://rubygems.org/gems/git_cloner

仕様

Vagrant + Chefの構成で利用

OS: Ubuntu 1204 LTS(64bit)

installするアプリケーション
・git(仮にGitHubのsome_placeというユーザーがリポジトリ名gitで公開しているとします)

構築手順

$ knife solo init gitcloner_sample
$ cd gitcloner_sample
$ vagrant init

Vagrantfileを編集
Ubuntuのboxは "precise64" でダウンロード済み

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "precise64"
  config.omnibus.chef_version = "11.6.0"

  config.vm.provider :virtualbox do |vb|
    vb.name = "git_cloner_sample"
    vb.customize ["modifyvm", :id, "--memory", 512]
  end

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = ["./cookbooks", "./site-cookbooks"]
    chef.add_recipe "git"
  end
end

gitclonerの設定ファイルを初期化

$ gitcloner i

gitclonerの設定ファイルを下記のように編集

# encoding: utf-8
default_output "./cookbooks"

repos [
  {place: 'https://github.com/some_place/git'}
]

gitclonerを実行

$gitcloner c
Cloning into 'git'...
remote: Counting objects: 283, done.
remote: Compressing objects: 100% (176/176), done.
remote: Total 283 (delta 105), reused 231 (delta 68)
Receiving objects: 100% (283/283), 70.53 KiB | 71 KiB/s, done.
Resolving deltas: 100% (105/105), done.
clone some_place/git/git complete

これで、cookbooksディレクトリにgitのcookbookがコピーされました。

vagrant upで仮想環境を起動

$ vagrant up

OSが起動したらsshで接続して、gitがインストールされていることを確認

$ vagrant ssh
$ git --version
git version 1.7.9.5