Шеф-повар - рубиновые камни с рецептами
Рецепты - это ключевые строительные блоки поваренной книги, которая в основном представляет собой код Ruby. В рецепте Chef можно использовать все возможности языка Ruby. В большинстве случаев встроенной функциональности Ruby достаточно, но иногда может потребоваться использование дополнительных драгоценных камней Ruby. Например, если нужно получить доступ к базе данных MySQL из самого рецепта.
Chef recipe дает возможность получить необходимые драгоценные камни Ruby, чтобы использовать их в том же рецепте.
Использование iptable Gem в данном рецепте
Step 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}")
Step 2 - Загрузите измененную кулинарную книгу на сервер Chef.
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook
Uploading my_cookbook [0.1.0]
Step 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 запускает поставщиков ресурсов, чтобы привести узел к желаемому состоянию. Если вам нужен какой-либо конкретный драгоценный камень Ruby в кулинарной книге, его необходимо установить на этапе усложнения.
Ресурс chef_gem будет делать то же самое, а в Chef Omnibus - единственный способ работать. Его основная функция - сделать драгоценные камни доступными самому Шефу.