cloudpack の かっぱこと 川原 洋平 (@inokara) です。

はじめに

Chef Development Kit というツールが既に公開されていたので Amazon Linux にインストールしてみたのでメモ。

ChefDK って?

Cookbook 開発に必要なツールをまとめたもののようです。以下のようなツールが一気にインストールされます。

  • Chef
  • Kitchen
  • ChefSpec
  • Foodcritic
  • Berkshelf

詳しくは以下の記事を御覧ください。

インストール

インストールした環境は下記の通りです。

Amazon Linux AMI release 2014.03

そして…インストールはとても簡単です。

wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.2.0-2.el6.x86_64.rpm
sudo rpm --test -Uvh chefdk-0.2.0-2.el6.x86_64.rpm
sudo rpm -Uvh chefdk-0.2.0-2.el6.x86_64.rpm

Amazon Linux には正式にサポートされていないかもしれませんが Red Hat Enterprise Linux 6 用のバイナリを利用しています。

何がインストールされた?

sudo find / -name chef -o -name kitchen -o -name berks | grep bin

とりあえず chef と kitchen と berks コマンドを確認。

/opt/chefdk/bin/berks
/opt/chefdk/bin/kitchen
/opt/chefdk/bin/chef
/opt/chefdk/embedded/apps/test-kitchen/bin/kitchen
/opt/chefdk/embedded/apps/berkshelf/bin/berks
/opt/chefdk/embedded/apps/chef-dk/bin/chef
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.2.1/bin/kitchen
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/chef-dk-0.2.0/bin/chef
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.2.2.dev/bin/kitchen
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/berkshelf-3.1.3/bin/berks
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/bin/berks
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/bin/kitchen
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/bin/chef
/opt/chefdk/embedded/bin/berks
/opt/chefdk/embedded/bin/kitchen
/opt/chefdk/embedded/bin/chef
/usr/bin/berks
/usr/bin/kitchen
/usr/bin/chef

おお。/usr/bin/ 配下のコマンドは漏れ無く /opt/chefdk/bin/ 以下にリンクが張られているようです。

lrwxrwxrwx 1 root root 20 Jul 26 03:48 /usr/bin/chef -> /opt/chefdk/bin/chef
lrwxrwxrwx 1 root root 21 Jul 26 03:48 /usr/bin/berks -> /opt/chefdk/bin/berks
lrwxrwxrwx 1 root root 23 Jul 26 03:48 /usr/bin/kitchen -> /opt/chefdk/bin/kitchen

knife container のインストール

chef コマンドを使えば knife プラグイン等のインストール出来るようです。尚、chef コマンドは以下のようなオプションがあります。

exec        Runs the command in context of the embedded ruby
gem         Runs the MARKDOWN_HASH9855b7f5d316820428a3e475d37ff14eMARKDOWN_HASH command in context of the embedded ruby
generate    Generate a new app, cookbook, or component
shell-init  Initialize your shell to use ChefDK as your primary ruby
verify      Test the embedded ChefDK applications

早速、gem オプションを使って knife-container をインストールしてみます。

chef gem install knife-container --no-ri --no-rdoc -V

以下のように Warning が出ますが…

WARNING:  You don't have /home/ec2-user/.chefdk/gem/ruby/2.1.0/bin in your PATH,
          gem executables will not run.

以下のようにインストールが完了しました。

...(snip)
/home/ec2-user/.chefdk/gem/ruby/2.1.0/gems/knife-container-0.2.0/spec/unit/fixtures/cookbooks/nginx/metadata.rb
/home/ec2-user/.chefdk/gem/ruby/2.1.0/gems/knife-container-0.2.0/spec/unit/fixtures/environments/dev.json
/home/ec2-user/.chefdk/gem/ruby/2.1.0/gems/knife-container-0.2.0/spec/unit/fixtures/nodes/demo.json
/home/ec2-user/.chefdk/gem/ruby/2.1.0/gems/knife-container-0.2.0/spec/unit/fixtures/roles/base.json
/home/ec2-user/.chefdk/gem/ruby/2.1.0/gems/knife-container-0.2.0/spec/unit/fixtures/site-cookbooks/apt/metadata.rb
Successfully installed knife-container-0.2.0
1 gem installed

ほうほう、各ユーザーのホームディレクトリ以下に .chefdk ってディレクトリが出来るんですな。その下に knife プラグインがインストールされるのか。

さひごに

あっと言う間に Chef が使える環境が整う!…意外にも test-kitchen 等のテストツールが一緒にインストールされるのも嬉しいなあ。

元記事は、こちらです。