Учебники

Chef — Solo Setup

Chef-Solo — это инструмент с открытым исходным кодом, работающий локально и позволяющий предоставлять гостевые машины с использованием поваренных книг Chef без каких-либо осложнений в конфигурации клиента и сервера Chef. Это помогает выполнять поваренные книги на самостоятельно созданном сервере.

Перед запуском Chef-Solo на локальном компьютере необходимо установить следующие два файла на локальном компьютере.

  • Solo.rb — Этот файл сообщает Chef о том, где найти поваренные книги, роли и пакеты с данными.

  • Node.json — этот файл устанавливает список запуска и любой специфичный для узла атрибут, если требуется.

Solo.rb — Этот файл сообщает Chef о том, где найти поваренные книги, роли и пакеты с данными.

Node.json — этот файл устанавливает список запуска и любой специфичный для узла атрибут, если требуется.

Конфигурация solo.rb

Ниже приведены шаги по настройке solo.rb.

Шаг 1 — Создайте файл solo.rb внутри репозитория Chef.

current_dir       = File.expand_path(File.dirname(__FILE__)) 
file_cache_path   "#{current_dir}" 
cookbook_path     "#{current_dir}/cookbooks" 
role_path         "#{current_dir}/roles" 
data_bag_path     "#{current_dir}/data_bags" 

Шаг 2 — Добавьте файл в git repo.

$ git add solo.rb 

Шаг 3 — Создайте файл node.json в репозитории chef со следующим содержимым.

{ 
   "run_list": [ "recipe[ntp]" ] 
} 

Шаг 4 — Получите поваренную книгу NTP внутри шеф-повара, используя нож.

vipin@laptop:~/chef-repo $ knife cookbook site install ntp 
Installing ntp to /Users/mma/work/chef-repo/cookbooks 
…TRUNCATED OUTPUT… 
Cookbook ntp version 1.3.0 successfully installed 

Шаг 5 — Добавьте файл node.json в Git.

$ git add node.json 

Шаг 6 — зафиксируйте и отправьте файлы в git repo.

vipin@laptop:~/chef-repo $ git commit -m "initial setup for Chef Solo" 
vipin@laptop:~/chef-repo $ git push 
Counting objects: 4, done. 
Delta compression using up to 4 threads. 
...TRUNCATED OUTPUT... 
To git@github.com:mmarschall/chef-repo.git 
b930647..5bcfab6 master -> master 

Запуск поваренной книги на узле

Шаг 1 — Войдите в узел, где вы хотите предоставить Chef-Solo.

Шаг 2 — Клонируйте репозиторий Chef на машине.

$ git clone $URL_PATH 

Шаг 3 — перейдите к репо шеф-повара.

$ cd chef-repo 

Наконец, запустите Chef-Solo, чтобы объединить узел —

$ sudo chef-solo -c solo.rb -j node.json 
[2017-20-08T22:54:13+01:00] INFO: *** Chef 11.0.0 *** 
[2017-20-08T22:54:13+01:00] INFO: Setting the run_list to 
["recipe[ntp]"] from JSON 
...TRUNCATED OUTPUT... 
[2012-12-08T22:54:16+01:00] INFO: Chef Run complete in 2.388374 
seconds 
[2012-12-08T22:54:16+01:00] INFO: Running report handlers 

solo.rb настраивает Chef-Solo для поиска его поваренных книг, ролей и пакетов данных в текущем каталоге: хранилище Chef.

Chef-Solo берет конфигурацию своего узла из файла JSON. В нашем примере мы назвали это node.json. Если вы собираетесь управлять несколькими серверами, вам потребуется отдельный файл для каждого узла. Затем Chef-Solo просто выполняет запуск Chef на основе данных конфигурации, найденных в solo.rb и node.json.