Учебники

Шеф-повар — Chef-Shell

Написание поваренных книг шеф-повара всегда сложно. Это делает его еще сложнее из-за длительного цикла обратной связи, когда они загружаются на сервер Chef, предоставляются бродячие виртуальные машины, проверяются их ошибки, промываются и повторяются. Было бы проще, если бы мы могли попробовать некоторые кусочки или рецепты, прежде чем делать всю эту тяжелую работу сразу.

Chef поставляется с Chef-Shell, который по сути является интерактивной сессией Ruby с Chef. В Chef-Shell мы можем создать —

  • Атрибуты
  • Написать рецепты
  • Инициализация шеф-повара

Он используется для оценки частей рецептов на лету, прежде чем загружать их на сервер Chef и выполнять полные кулинарные книги на узле.

Запуск Shell

Шаг 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

  • шеф-повар> attribute_mode

шеф-повар> attribute_mode

Шаг 3 — Установка значения атрибута.

  • chef: attribute> set [: title] = «Поваренная книга шеф-повара»

    • «Поваренная книга шеф-повара»

  • шеф-повар: атрибуты> выйти

    • : атрибуты

  • шеф-повар>

chef: attribute> set [: title] = «Поваренная книга шеф-повара»

«Поваренная книга шеф-повара»

шеф-повар: атрибуты> выйти

: атрибуты

шеф-повар>

Шаг 4 — Переключитесь в режим рецепта.

  • шеф-повар> recipe_mode

шеф-повар> 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, чтобы создать файл с заданным содержимым.

  • шеф-повар: рецепт> run_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 начинается с сеанса Interactive Ruby (IRB), дополненного некоторыми специфическими функциями.

  • Он предлагает такие режимы, как attribute_mode и interactive_mode.

  • Это помогает в написании команд, которые написаны внутри рецепта или поваренной книги.

  • Все работает в интерактивном режиме.

Chef-Shell начинается с сеанса Interactive Ruby (IRB), дополненного некоторыми специфическими функциями.

Он предлагает такие режимы, как attribute_mode и interactive_mode.

Это помогает в написании команд, которые написаны внутри рецепта или поваренной книги.

Все работает в интерактивном режиме.

Мы можем запустить Chef-Shell в трех различных режимах: автономный режим, режим клиента и режим Solo .

Автономный режим — это режим по умолчанию. Кулинарные книги не загружены, а список запуска пуст.

Режим клиента — здесь chef-shell действует как chef-клиент.

Режим Solo — здесь оболочка chef-shell действует как клиент chef-solo.