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 [email protected]: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.