Пакеты данных Chef могут быть определены как произвольный набор данных, который можно использовать с кулинарными книгами. Использование пакетов данных очень полезно, когда не нужно жестко кодировать атрибуты в рецептах или хранить атрибуты в кулинарных книгах.
Метод работы
В следующей настройке мы пытаемся связаться с URL-адресом конечной точки http. Для этого нам нужно создать пакет данных, в котором будут храниться детали URL-адреса конечной точки, и использовать его в нашем рецепте.
Шаг 1 — Создайте каталог для нашей сумки данных.
mma@laptop:~/chef-repo $ mkdir data_bags/hooks
Шаг 2 — Создайте элемент пакета данных для корзины запросов. Нужно убедиться, что вы используете определенный URL requestBin.
vipi@laptop:~/chef-repo $ subl data_bags/hooks/request_bin.json { "id": "request_bin", "url": "http://requestb.in/1abd0kf1" }
Шаг 3 — Создайте пакет данных на сервере Chef
vipin@laptop:~/chef-repo $ knife data bag create hooks Created data_bag[hooks]
Шаг 4 — Загрузите пакет данных на сервер Chef.
vipin@laptop:~/chef-repo $ knife data bag from file hooks requestbin.json Updated data_bag_item[hooks::RequestBin]
Шаг 5 — Обновите рецепт поваренной книги по умолчанию, чтобы получить требуемую поваренную книгу из пакета данных.
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/recipes/default.rb hook = data_bag_item('hooks', 'request_bin') http_request 'callback' do url hook['url'] end
Шаг 6 — Загрузите измененную поваренную книгу на сервер Chef.
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook Uploading my_cookbook [0.1.0]
Шаг 7 — Запустите клиент Chef на узле, чтобы проверить, выполняется ли корзина http-запроса.
user@server:~$ sudo chef-client ...TRUNCATED OUTPUT... [2013-02-22T20:37:35+00:00] INFO: http_request[callback] GET to http://requestb.in/1abd0kf1 successful ...TRUNCATED OUTPUT...
Как это устроено
Пакет данных — это именованная коллекция структурных данных. Нужно определить ввод данных и вызвать элемент пакета данных в файле JSON. Можно также искать элемент пакета данных из рецептов, чтобы использовать данные, хранящиеся в пакетах данных.
Мы создали пакет данных под названием крючки. Пакет данных — это каталог в репозитории Chef. Мы использовали нож, чтобы создать его на сервере.