Рецепты — это основные строительные блоки поваренной книги, которая в основном представляет собой код Ruby. В рецепте шеф-повара можно использовать все возможности языка Ruby. В большинстве случаев достаточно встроенной функциональности Ruby, но иногда может понадобиться использовать дополнительные гемы Ruby. Например, если нужно получить доступ к базе данных MySQL из самого рецепта.
У рецепта шеф-повара есть возможность получить необходимые рубиновые камни, чтобы использовать их в том же рецепте.
Использование iptable Gem в данном рецепте
Шаг 1 — Отредактируйте рецепт по умолчанию из поваренной книги и установите драгоценный камень, который будет использоваться внутри рецепта.
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/recipes/default.rb chef_gem 'ipaddress' require 'ipaddress' ip = IPAddress("192.168.0.1/24") Chef::Log.info("Netmask of #{ip}: #{ip.netmask}")
Шаг 2 — Загрузите измененную поваренную книгу на сервер Chef.
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook Uploading my_cookbook [0.1.0]
Шаг 3 — Запуск клиента Chef, чтобы увидеть результат.
user@server $ sudo chef-client ...TRUNCATED OUTPUT... [2013-01-18T14:02:02+00:00] INFO: Netmask of 192.168.0.1: 255.255.255.0 ...TRUNCATED OUTPUT...
Метод работы
Этапы запуска Chef состоят из фазы компиляции, где он компилирует все ресурсы, и фазы выполнения, где Chef запускает провайдеров ресурсов, чтобы привести узел в нужное состояние. Если в кулинарной книге нужен какой-то конкретный рубиновый драгоценный камень, нужно установить драгоценный камень на этапе усложнения.
Ресурс chef_gem будет делать то же самое, и в Chef Omnibus — единственный способ работы. Его основная функция — сделать самоцветы доступными для самого шеф-повара.