Chef Solo — различия между версиями

Материал из Национальной библиотеки им. Н. Э. Баумана
Строка 38: Строка 38:
 
Наиболее распространен вариант с использованием архивов. Например:
 
Наиболее распространен вариант с использованием архивов. Например:
  
<code>$ tar zcvf chef-solo.tar.gz ./cookbooks</code>
+
<source lang="cpp"> $ tar zcvf chef-solo.tar.gz ./cookbooks </source>
  
 
Если используется несколько директорий рецептов, то в архиве должна быть реализована следующая структура данных:
 
Если используется несколько директорий рецептов, то в архиве должна быть реализована следующая структура данных:
 
   
 
   
<code>
+
<source lang="cpp">
 
cookbooks/
 
cookbooks/
 
   |---- cbname1/
 
   |---- cbname1/
Строка 49: Строка 49:
 
   |---- cbname2/
 
   |---- cbname2/
 
     |--attributes/
 
     |--attributes/
</code>
+
</source>
 +
 
 +
Перемененная cookbook_path  в файле solo.rb должна включать обе директории. Например:
 +
<source lang="cpp"> $ tar zcvf chef-solo.tar.gz ./cookbooks ./site-cookbooks </source>
 +
 
 +
Когда архив tar.gz будет содержать все рецепты, требуемых для chef solo, загрузите его на веб-сервер, с которого chef solo  будет получать доступ к архиву.
  
 
== Атрибуты ==
 
== Атрибуты ==
Строка 56: Строка 61:
  
 
JSON файл также должен указывать рецепты входящие в run-list:
 
JSON файл также должен указывать рецепты входящие в run-list:
 +
<source lang="cpp">
 +
{
 +
  "resolver": {
 +
    "nameservers": [ "10.0.0.1" ],
 +
    "search":"int.example.com"
 +
  },
 +
  "run_list": [ "recipe[resolver]" ]
 +
}
 +
</source>
 +
 +
==Пакеты данных==
 +
 +
Пакеты данных определяется JSON файлом. По умолчанию Chef Solo будет искать все Data Bags в директории /var/chef/data_bags, но эту локацию можно изменить в файле настроек solo.rb:
 +
 +
<source lang="cpp"> data_bag_path '/var/chef-solo/data_bags' </source>
 +
 +
===Создание пакета данных ===
 +
 +
Создайте пакет данных с помощью создания папок. Например:
 +
 +
<source lang="cpp"> mkdir /var/chef-solo/data_bags</source>
 +
 +
и
  
==Data Bags==
+
<source lang="cpp">mkdir /var/chef-solo/data_bags/admins </source>
  
Data Bag определяется JSON файлом. По умолчанию Chef Solo будет искать все Data Bags в директории /var/chef/data_bags, но эту локацию можно изменить в файле настроек solo.rb.
+
а затем создать файл JSON в этом месте:
 +
<source lang="cpp">
 +
{
 +
  "id": "ITEM_NAME"
 +
}
 +
</source>
 +
где имя файла например ITEM_NAME:
  
===Создание Data Bag===
+
<source lang="cpp">/var/chef-solo/data_bags/admins/ITEM_NAME.json</source>
  
 
==Роли==
 
==Роли==

Версия 20:06, 15 мая 2016

Chef
Chef IO Regular.png
Разработчики: Chef
Постоянный выпуск: 7 July 2015 года; 4 years ago (2015-07-07)
Написана на: Ruby и Erlang
Операционная система: кроссплатформенное программное обеспечение
Тип ПО: Управление конфигурацией, системное администрирование
Лицензия: Apache License 2.0
Веб-сайт https://www.chef.io/chef/


Chef — система управления конфигурациями серверов. Chef имеет клиент-серверную архитектуру. На Chef-сервере хранятся сведения о подключенных Chef-клиентах и наборы «рецептов» для их «приготовления» (то есть для приведения их в требуемое состояние).

Chef Solo — это open-source версия Chef-клиента, которая позволяет использовать рецепты без Chef-сервера (рецепты должны быть физически расположены на этой же машине). Chef Solo бесплатен, но имеет ряд ограничений по сравнению с клиент-серверным Chef'ом. Например, нет возможности использовать в рецептах поиск серверов по условиям.

Chef Solo также не поддерживает:

  • Хранилище данных в нодах
  • Индексы для поиска
  • Централизованное хранение рецептов
  • Централизованное API, которое объединяет компоненты инфраструктуры
  • Авторизация и Аутентификация

Рецепты

Chef Solo поддерживает 2 места откуда могут быть запущены рецепты:

  • Локальная директория
  • Ссылка (URL) на tar.gz архив

Наиболее распространен вариант с использованием архивов. Например:

 $ tar zcvf chef-solo.tar.gz ./cookbooks

Если используется несколько директорий рецептов, то в архиве должна быть реализована следующая структура данных:

cookbooks/
  |---- cbname1/
    |--attributes/ ... etc
  ...
  |---- cbname2/
    |--attributes/

Перемененная cookbook_path в файле solo.rb должна включать обе директории. Например:

 $ tar zcvf chef-solo.tar.gz ./cookbooks ./site-cookbooks

Когда архив tar.gz будет содержать все рецепты, требуемых для chef solo, загрузите его на веб-сервер, с которого chef solo будет получать доступ к архиву.

Атрибуты

По скольку Chef Solo не взаимодействует с Chef-сервером, специфичные для каждой ноды атрибуты должны храниться в JSON файле непосредственно на сервере, в удалённом хранилище ( таком как Amazon Simple Storage Service (S3)) или на веб-сервере в локальной сети.

JSON файл также должен указывать рецепты входящие в run-list:

{
  "resolver": {
    "nameservers": [ "10.0.0.1" ],
    "search":"int.example.com"
  },
  "run_list": [ "recipe[resolver]" ]
}

Пакеты данных

Пакеты данных определяется JSON файлом. По умолчанию Chef Solo будет искать все Data Bags в директории /var/chef/data_bags, но эту локацию можно изменить в файле настроек solo.rb:

 data_bag_path '/var/chef-solo/data_bags'

Создание пакета данных

Создайте пакет данных с помощью создания папок. Например:

 mkdir /var/chef-solo/data_bags
и
mkdir /var/chef-solo/data_bags/admins

а затем создать файл JSON в этом месте:

{
  "id": "ITEM_NAME"
}

где имя файла например ITEM_NAME:

/var/chef-solo/data_bags/admins/ITEM_NAME.json

Роли

Роль также определяется с использованием JSON или Ruby DSL. По умолчанию Chef Solo будет искать роли в /var/chef/roles, но эту локацию можно изменить в файле настроек solo.rb.

Настройка роли

Рабочее окружение

Роль также определяется с использованием JSON или Ruby DSL. По умолчанию Chef Solo будет искать роли в /var/chef/environments, но эту локацию можно изменить в файле настроек solo.rb.

Описание окружения задается в JSON следующем образом: или следующем образом в Ruby DSL

Примеры Использования

<wrap fgred>Красный шрифт</wrap>