Chefで利用できるインタラクティブシェル"Shef"

by Venn Diagram


"Chef"は、Ruby製のシステム管理ツールで、サーバOSでのインストール・設定・各サービスの状態管理等、諸々のシステム構築や運用作業を自動化してくれるツールです。(Puppetの仲間ですね)
え?Chefって何よ?って方は、以下をご参考に。


で、Chefには"Shef"と呼ばれるインタラクティブシェルが付属していて、recipe(chefで扱う、サーバのあるべき状態を記述する設定ファイル)をちょっぴりローカルで試してみたい時とかに使えます。今日はその紹介。

chef-clientのインストール

Chefのクライアントがインストールされていれば、すぐにでも使えると思います。
一応、これから試してみたいんだ、という方は以下のような感じでインストールして下さい。ちなみに↓はUbuntuの場合。

$ sudo apt-get install ruby ruby-dev rubygems libopenssl-ruby rdoc ri irb build-essential ssl-cert
$ sudo gem install chef

インストールはこれだけ。

早速、Shefを使ってみる

まずは、"shef"コマンドで起動。

$ sudo shef -a
loading configuration: none (standalone shef session)
Session type: standalone
Loading............done.

This is shef, the Chef shell.
 Chef Version: 0.9.8
 http://www.opscode.com/chef
 http://wiki.opscode.com/display/chef/Home

run `help' for help, `exit' or ^D to quit.

Ohai2u nami@Ubuntu!
chef > 

尚、↑のように"-a"オプションを使うことで、standaloneモードで起動できます。(ローカルへの反映にサーバを必要としない)

chef > recipe
chef:recipe > echo off

recipeモードに移行した後、デフォルトのままだと戻り値なんかが出力されるので、それを無効にしておきます。

chef:recipe > file "/tmp/example" do
chef:recipe >   content "Hello, world!"
chef:recipe ?>  action :create
chef:recipe ?> end
chef:recipe > run_chef
[Thu, 14 Oct 2010 16:26:19 +0900] DEBUG: Processing file[/tmp/example] on Ubuntu
[Thu, 14 Oct 2010 16:26:19 +0900] DEBUG: file[/tmp/example] using Chef::Provider::File
[Thu, 14 Oct 2010 16:26:19 +0900] INFO: Creating file[/tmp/example] at /tmp/example
[Thu, 14 Oct 2010 16:26:19 +0900] INFO: Setting content for file[/tmp/example]
[Thu, 14 Oct 2010 16:26:19 +0900] INFO: Backing up file[/tmp/example] to /var/chef/backup/tmp/example.chef-20101014162619

試してみたいrecipeを記載して、最後に"run_chef"を実行すると反映されます。
ちなみに、上記は、"Hello, world!"が記載されたファイル(/tmp/example)を作るrecipe。

$ cat /tmp/example 
Hello, world!

試した後は、quitでchefのシェルから抜けて、動作結果を確認します。
このように、手軽にシェルな感じで試せるので、普通にテストしたい場合とか、Chefのrecipe書きの雰囲気を掴みたい時にでも試してみてください。


・・・こんな感じで、Chefに関する紹介をちょいちょいしていこうと思っています。


サーバ管理技術入門 (ネットワーキング入門)

サーバ管理技術入門 (ネットワーキング入門)

Pulling Strings with Puppet: Configuration Management Made Easy (FirstPress)

Pulling Strings with Puppet: Configuration Management Made Easy (FirstPress)