厨师 - Chef-Shell


写厨师食谱总是很困难。这使得事情变得更加困难,因为将它们上传到 Chef 服务器、配置流浪虚拟机、检查它们如何失败、冲洗和重复的反馈周期很长。如果我们在一次完成所有这些繁重的工作之前可以尝试测试一些片段或食谱,那就会更容易。

Chef 附带了 Chef-Shell,它本质上是与 Chef 的交互式 Ruby 会话。在 Chef-Shell 中,我们可以创建 -

  • 属性
  • 写食谱
  • 初始化 Chef 运行

它用于动态评估菜谱的各个部分,然后将其上传到 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 中切换到属性模式

  • 厨师 > 属性模式

步骤 3 - 设置属性值。

  • Chef:attributes > set[:title] = "厨师食谱"

    • 《厨师食谱》

  • 厨师:属性>退出

    • :属性

  • 厨师 >

步骤 4 - 切换到食谱模式。

  • 厨师 > 食谱模式

步骤 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 以创建具有给定内容的文件。

  • 厨师:食谱 > 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 从交互式 Ruby (IRB) 会话开始,该会话增强了一些特定功能。

  • 它提供了诸如attributes_mode和interactive_mode之类的模式。

  • 它有助于编写命令,这些命令写在菜谱或食谱中。

  • 它以交互模式运行一切。

我们可以以三种不同的模式运行 Chef-Shell:独立模式、客户端模式独奏模式

  • 独立模式- 这是默认模式。未加载任何食谱,并且运行列表为空。

  • 客户端模式- 在这里,厨师外壳充当厨师客户端。

  • 独奏模式- 在这里,厨师外壳充当厨师独奏客户端。