Chef-shell

提供:Dev Guides
移動先:案内検索

シェフ-シェフシェル

シェフの料理本を書くのはいつも大変です。 Chefサーバーへのアップロード、Vagrant VMのプロビジョニング、そこでの失敗の確認、すすぎ、繰り返しのフィードバックサイクルが長いため、さらに困難になります。 このような重い作業を一度に行う前に、いくつかのピースやレシピをテストできると簡単です。

ChefにはChef-Shellが付属しています。これは基本的にChefとのインタラクティブなRubyセッションです。 シェフシェルでは、作成することができます-

  • 属性
  • レシピを書く
  • Chef Runの初期化

レシピの一部をその場で評価し、それらをChefサーバーにアップロードして、ノードで完全なクックブックを実行するために使用されます。

実行中のシェル

  • ステップ1 *-スタンドアロンモードでChef-Shellを実行します。
mma@laptop:~/chef-repo $ chef-shell
loading configuration: none (standalone chef-shell session)
Session type: standalone
Loading...[2017-01-12T20:48:01+01:00] INFO: Run List is []
[2017-01-12T20:48:01+01:00] INFO: Run List expands to []
done.
This is chef-shell, the Chef Shell.
Chef Version: 11.0.0
http://www.opscode.com/chef
http://wiki.opscode.com/display/chef/Home
run `help' for help, `exit' or ^D to quit.
Ohai2u mma@laptop!
chef >
  • ステップ2 *-Chef-Shellで属性モードに切り替えます
  • chef> attributes_mode
  • ステップ3 *-属性値を設定します。
  • chef:attributes> set [:title] = "Chef Cookbook"
  • 「シェフクックブック」
  • chef:attributes> quit
  • :属性
  • *シェフ> *
  • ステップ4 *-レシピモードに切り替えます。
  • chef> recipe_mode
  • ステップ5 *-ファイルリソースを作成します。
chef:recipe > file "/tmp/book.txt" do
chef:recipe > content node.title
chef:recipe ?> end

=> <file[/tmp/book.txt] @name: "/tmp/book.txt" @noop: nil @
before: nil @params: {} @provider: Chef::Provider::File @allowed_
actions: [:nothing, :create, :delete, :touch, :create_if_missing]
@action: "create" @updated: false @updated_by_last_action: false
@supports: {} @ignore_failure: false @retries: 0 @retry_delay:
2 @source_line: "(irb#1):1:in `irb_binding'" @elapsed_time: 0 @
resource_name: :file @path: "/tmp/book.txt" @backup: 5 @diff: nil
@cookbook_name: nil @recipe_name: nil @content: "Chef Cookbook">

chef:recipe >
  • ステップ6 *-指定されたコンテンツでファイルを作成するためにChefの実行を開始します。
  • chef:recipe> run_chef
[2017-01-12T21:07:49+01:00] INFO: Processing file[/tmp/book.txt]
action create ((irb#1) line 1)
---/var/folders/1r/_35fx24d0y5g08qs131c33nw0000gn/T/cheftempfile20121212-
11348-dwp1zs 2012-12-12 21:07:49.000000000
+0100
+++/var/folders/1r/_35fx24d0y5g08qs131c33nw0000gn/T/chefdiff20121212-
11348-hdzcp1 2012-12-12 21:07:49.000000000 +0100
@@ -0,0 +1 @@
+Chef Cookbook
\ No newline at end of file
[2017-01-12T21:07:49+01:00] INFO: entered create
[2017-01-12T21:07:49+01:00] INFO: file[/tmp/book.txt] created file
/tmp/book.txt

使い方

  • Chef-Shellは、いくつかの特定の機能で強化されたInteractive Ruby(IRB)セッションで始まります。
  • attributes_modeやinteractive_modeなどのモードを提供します。
  • レシピまたはクックブック内に記述されるコマンドを書くのに役立ちます。
  • すべてをインタラクティブモードで実行します。

Chef-Shellは、スタンドアロンモード、クライアントモード、*ソロモード*の3つの異なるモードで実行できます。

  • スタンドアロンモード-これはデフォルトのモードです。 クックブックはロードされず、実行リストは空です。
  • クライアントモード-ここでは、シェフシェルはシェフクライアントとして機能します。
  • ソロモード-ここでは、シェフシェルはシェフソロクライアントとして機能します。