Изменения

Chef Solo

181 байт убрано, 4 года назад
Нет описания правки
Если используется несколько директорий рецептов, то в архиве должна быть реализована следующая структура данных:
<source lang="cpp"console
cookbooks/
|---- cbname1/
|---- cbname2/
|--attributes/
</sourceconsole>
Перемененная cookbook_path в файле solo.rb должна включать обе директории. Например:
<source lang="cpp"console> $ tar zcvf chef-solo.tar.gz ./cookbooks ./site-cookbooks </sourceconsole
Когда архив tar.gz будет содержать все рецепты, требуемых для chef solo, загрузите его на веб-сервер, с которого chef solo будет получать доступ к архиву.
JSON файл также должен указывать рецепты входящие в run-list:
 <source lang="cpp"console>
{
"resolver": {
"run_list": [ "recipe[resolver]" ]
}
</sourceconsole>
==Пакеты данных==
Пакеты данных определяется JSON файлом. По умолчанию Chef Solo будет искать все Data Bags в директории /var/chef/data_bags, но эту локацию можно изменить в файле настроек solo.rb:
<source lang="cpp"console> data_bag_path '/var/chef-solo/data_bags' </sourceconsole>
===Создание пакета данных ===
а затем создать файл JSON в этом месте:
 <syntaxhighlight lang="c"console>
{
"id": "ITEM_NAME"
}
</syntaxhighlightconsole
где имя файла например <code>ITEM_NAME</code>:
==Роли==
Роль также определяется с использованием JSON или Ruby DSL. По умолчанию Chef Solo будет искать роли в /<code>var/chef/roles, '</code> но эту локацию можно изменить в файле настроек <code>solo.rb</code>: <source lang="cpp"console>
role_path '/var/chef-solo/roles'
</sourceconsole>
===Настройка роли===
Роли выглядит следующим образом в формате JSON:
<source lang="cpp"console>
{
"name": "test",
"run_list": [ "recipe[test]" ]
}
</sourceconsole
А так в Ruby DSL:
<source lang="cpp"console>
name 'test'
description 'This is just a test role, no big deal.'
run_list 'recipe[test]'
</sourceconsole>
В конце, файлы в формате JSON передаются в Chef-Solo:
 <source lang="cpp"console>
{ 'run_list': 'role[test]' }
</sourceconsole>
==Рабочее окружение==
Роль также определяется с использованием JSON или Ruby DSL. По умолчанию Chef Solo будет искать роли в /var/chef/environments, но эту локацию можно изменить в файле настроек solo.rb:
<source lang="cpp"console>
environment_path '/var/chef-solo/environments'
</sourceconsole>
Описание окружения задается в JSON следующем образом:
<source lang="cpp"console>
{
"name": "dev",
"chef_type": "environment"
}
</sourceconsole>
или следующем образом в Ruby DSL:
 <source lang="cpp"console>
name 'environment_name'
override_attributes 'node' => { 'attribute' => [ 'value', 'value', 'etc.' ] }
</sourceconsole>
==Примеры Использования==
''Запуск Chef-Solo, используя настройки solo.rb:''
<source lang="cpp"console>
$ chef-solo -c ~/chef/solo.rb
</sourceconsole>
''Используя URL''
<source lang="cpp"console>
$ chef-solo -c ~/solo.rb -j ~/node.json -r http://www.example.com/chef-solo.tar.gz
</sourceconsole>
''Используя директорию''
<source lang="cpp"console>
$ chef-solo -c ~/solo.rb -j ~/node.json
</sourceconsole>
''Используя URL для рецептов и данные JSON ''
<source lang="cpp"console>
$ chef-solo -c ~/solo.rb -j http://www.example.com/node.json -r http://www.example.com/chef-solo.tar.gz
</sourceconsole>
==Настройка сервера с помощью chef-solo==
1) Ставим Chef-solo:
<source lang="cpp"console>
curl -L https://www.opscode.com/chef/install.sh | bash
</sourceconsole>
2) Теперь, если вы определились с тем, что хотите поставить, собираем нужные рецепты на сервере.
''solo.rb''
<source lang="cpp"console>
root = File.absolute_path(File.dirname(__FILE__))
file_cache_path root + "/cache/"
cookbook_path root + '/cookbooks/'
</sourceconsole>
''solo.json''
 <source lang="cpp"console>
{
"run_list": [
]
}
</sourceconsole>
3) Как бы и все:
 <source lang="cpp"console>
chef-solo -c solo.rb -j solo.json
</sourceconsole>
''P.S.''
Editors
138
правок