Учебники

Шеф-повар — простой рубин с шеф-поваром DSL

В Chef, если нужно создать простые рецепты, можно использовать ресурсы, доступные в Chef, такие как шаблоны, remote_file и сервисы. Однако по мере того, как рецепты становятся более сложными, нужны передовые методы, такие как условные операторы, для выполнения частей рецепта при условии. Это сила смешивания простого Ruby с языком специфики домена Chef (DSL).

Как это использовать?

Запустите Chef Shell на любом узле в режиме клиента, чтобы иметь доступ к серверу Chef.

user@server:~$ sudo chef-shell --client 
loading configuration: /etc/chef/client.rb 
Session type: client 
...TRUNCATED OUTPUT... 
run `help' for help, `exit' or ^D to quit. 
Ohai2u user@server! 
Chef> 

Основные условия с шеф-поваром DSL

Сортировать узлы по имени, используя обычный Ruby.

chef > nodes.sort! {|a,b| a.name <=> b.name } 
=> [node[alice],node[server]] 

Цикл по узлам, печать их операционной системы.

chef > nodes.each do |n| 
   chef > puts n['os'] 
   chef ?> 
end  
linux 
windows 
=> [node[server], node[alice]] 

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

chef > %w{ec2 essentials}.each do |gem| 
   chef > gem_package "knife-#{gem}" 
   chef ?> end   => ["ec2", "essentials"] 

Метод работы

Рецепты Chef — это файлы Ruby, которые оцениваются в контексте запуска Chef. Они могут содержать простой код Ruby, такой как оператор if и циклы, а также элементы Chef DSL, такие как ресурсы.

Внутри рецепта можно просто объявить переменные Ruby и присвоить им значения.