概要
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