Chef - Chef-Shell

Viết sách nấu ăn Chef luôn khó. Nó thậm chí còn khó khăn hơn vì chu kỳ phản hồi dài để tải chúng lên máy chủ Chef, cung cấp một máy ảo ảo, kiểm tra xem chúng bị lỗi ở đó như thế nào, rửa và lặp lại. Sẽ dễ dàng hơn nếu chúng ta có thể thử kiểm tra một số món ăn hoặc công thức trước khi thực hiện tất cả những việc nặng nhọc này cùng một lúc.

Chef đi kèm với Chef-Shell, về cơ bản là một phiên Ruby tương tác với Chef. Trong Chef-Shell, chúng ta có thể tạo -

  • Attributes
  • Viết công thức nấu ăn
  • Khởi chạy Chef chạy

Nó được sử dụng để đánh giá các phần của công thức nấu ăn một cách nhanh chóng, trước khi tải chúng lên máy chủ Chef và thực hiện các sách nấu ăn hoàn chỉnh trên nút.

Chạy Shell

Step 1 - Chạy Chef-Shell ở chế độ độc lập.

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 >

Step 2 - Chuyển sang chế độ thuộc tính trong Chef-Shell

  • chef > attributes_mode

Step 3 - Đặt giá trị thuộc tính.

  • chef:attributes > set[:title] = "Chef Cookbook"

    • "Sách dạy nấu ăn"

  • chef:attributes > quit

    • :attributes

  • chef >

Step 4 - Chuyển sang chế độ công thức.

  • chef > recipe_mode

Step 5 - Tạo tài nguyên tệp.

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 >

Step 6 - Chạy Commence Chef để tạo tệp với nội dung đã cho.

  • 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

Làm thế nào nó hoạt động

  • Chef-Shell bắt đầu với phiên Interactive Ruby (IRB) được cải tiến với một số tính năng cụ thể.

  • Nó cung cấp các chế độ như thuộc tính_mode và tương tác_mode.

  • Nó giúp viết các lệnh được viết bên trong công thức nấu ăn hoặc sách dạy nấu ăn.

  • Nó chạy mọi thứ trong một chế độ tương tác.

Chúng ta có thể chạy Chef-Shell ở ba chế độ khác nhau: Standalone mode, Client modeSolo mode.

  • Standalone mode- Đây là chế độ mặc định. Không có sách nấu ăn nào được tải và danh sách chạy trống.

  • Client mode - Ở đây, Chef-shell đóng vai trò là đầu bếp-khách hàng.

  • Solo mode - Ở đây, Chef-shell đóng vai trò là khách hàng solo đầu bếp.