orenoblog

エンジニアになりたいExcel方眼紙erの物語

sensu-clientのリポジトリをどのように管理しようかな(Berkshelf失敗編)

こんばんは。Cote&CielのLaptop Rucksackを衝動買いした私です。財布のなかがすっからかん。

マカーのためにデザインされたバッグブランドらしいです。大変グレイトです。

非常に大きいバッグのため、私のように身長がt1.microな人が身につけると、デンドロビウム状態になってしまいます。注意ですね。

さて前回の続きです。

sensu-clientのテンプレート用リポジトリと、各プロジェクトで利用するリポジトリはメンテナが違います。

テンプレート用リポジトリをプロジェクトリポジトリのメンテナが誤って操作しないように、

Berkshelfで管理してしまおうと思います。Berkshelfは依存するcookbooksを一元管理できる便利なツールです。

Chef版のBundlerだと思っています。

これを利用してテンプレートとプロジェクトリポジトリの境界線を引いてみようと思います。

すでにプロジェクト用のリポジトリは作成済みですのでcloneします

orenomac$ git clone <bareリポジトリ>
  • BundlerでBerkshelfのインストール

berkshelfやknife-solo等のツールはなるべくシステムに依存しないようBundlerで管理します。

orenomac$ bundle init
orenomac$ vi Gemfile
source "https://rubygems.org"

gem 'berkshelf'
gem 'knife-solo'
gem 'serverspec'
gem 'test-kitchen'
gem 'kitchen-vagrant'
gem 'knife-solo_data_bag'
gem 'pry'
orenomac$ bundle install --path vendor/bundle
・・省略・・
Your bundle is complete!
It was installed into ./vendor/bundle
Post-install message from knife-solo:
Thanks for installing knife-solo!

If you run into any issues please let us know at:
  https://github.com/matschaffer/knife-solo/issues

If you are upgrading knife-solo please uninstall any old versions by
running `gem clean knife-solo` to avoid any errors.

See http://bit.ly/CHEF-3255 for more information on the knife bug
that causes this.
  • chef solo初期化

自動的にBerkshelf用のファイルも作られるようです。ありがたや。(久しぶりにknife solo initした)

orenomac$ bundle exec knife solo init .
Creating kitchen...
Creating knife.rb in kitchen...
Creating cupboards...
Setting up Berkshelf...
  • Berksfileの編集とcookbooksの導入

berkshelf 3以降からberks installがberks vendorへリプレースされたみたいです。

旧来の

berks install --path cookbooks

に慣れている人はご注意を。しっかしopscode-cookbooks/yumといい、 v3.0以上になると使い方がガラッと変わるのはなんなのか。。

orenomac$ vi Berksfile
site :opscode

cookbook "sensu"
cookbook "selinux"
cookbook "hostsfile"
cookbook "build-essential"
cookbook "<テンプレート用リポジトリ>", git: "https://github.com/****/****.git"
orenomac$ bundle exec berks vendor cookbooks
Fetching '*******' from git@github.com:****/****.git (at master)
The resource at '/var/folders/81/c4lywdsd7k5dsbqt9y35q8zm0000gn/T/d20140427-22194-x4okdh' does not appear to be a valid cookbook. Does it have a metadata.rb?

!?エラーが出ました。なぜでしょうか。

すっかり忘れていたのですがBerkshelfはcookbooksを一元管理するためのツールです。

今回Berkshelfで導入しようとしたテンプレート用リポジトリはcookbookだけではなくchef solo実行環境が整備された状態となっているリポジトリでした。

そのためberks vendorが失敗してしまったというバッドノウハウ

粒度が大きすぎましたね。そりゃエラーでますわ(ノ∀`)アチャー

今回は失敗に終わったので却下ですかね。

  • その他気になる

なんだこれ気になる・・chefdkとか

Chef Development Kit

サーバの構成管理をするのが目的で、達成するツールとしてchefを利用するだけなのにchefることが目的になりそう。おそろしや。

そろそろ川越シェフがchefのロゴだった時の画像を下さい!とか川越シェフがモコズキッチンでknife solo cook実行している画像を下さいとか

俺の川越フォルダが火を噴く日が来てくれると嬉しいです。

さてリポジトリ練り直しの相談するか・・