Назад | Перейти на главную страницу

Chef - автоматическое добавление узлов на сервер Chef

Как бы вы настроили виртуальную машину, чтобы она автоматически регистрировалась на сервере Chef?

Я знаю что я мог используйте ножевую загрузку, однако это очень утомительно, если вы запускаете сразу несколько десятков серверов.

В документации Chef указано использовать chef-client -j /etc/chef/file.json и вставьте это в изображение вместе с вашими файлами client.rb и validation.pem. Однако это все еще требует ssh-подключения к машине для запуска chef-client команда.

Нет более автоматизированного способа сделать это?
Как другие люди предоставляют тысячи машин одновременно?

Обновить

Я связался со службой поддержки Chef, они сказали, что вы можете запустить Chef при загрузке следующими способами.

  1. Добавить /usr/bin/chef-client в файл /etc/rc.local и убедитесь, что у вас есть файлы client.rb и validatation.pem в / etc / chef

  2. Используйте поваренную книгу chef-client для управления chef и сценария инициализации.

Они также сказали, что шеф-клиент не работает как демон. Вместо этого он запускается только тогда, когда ему нужно выполнить конвергенцию. (Что кажется противоречащим документации.)

Однако эти решения создают новые проблемы. 1. У вас будут запущены дублирующиеся процессы chef-client, если вы добавите их в файл rc.local 2. Вам нужно запустить chef, чтобы управлять chef с помощью поваренной книги chef. Как затем очистить и отменить регистрацию узла, чтобы можно было сделать снимок?

У вас есть много вариантов.

  1. Используйте cloud-init, чтобы запустить команду chef-client после того, как узел подойдет.
  2. Включите «службу», которая запускается при запуске, для запуска chef-client
  3. сценарий создания ваших узлов, используя knife ec2 server create или аналогичные команды для других облаков. Это создаст и загрузит узел одной командой. Обернувшись сценарием, вы можете таким образом сделать любое количество серверов.

Независимо от того, какой подход вы выберете, вам необходимо осознавать нагрузку, которая возникнет, если вы не пошатнетесь при создании сервера. Тысячи машин за несколько минут потребуют потрясающего шеф-сервера или, возможно, кластера шеф-серверов.

Что вам в основном нужно:

  • URL-адрес шеф-сервера
  • сертификат шеф-сервера
  • validation.pem
  • повар-клиент

существующий на машине, которую вы хотите загрузить.

В процессе начальной загрузки вашего компьютера поместите содержимое файла valiadtion.pem, например /etc/chef/validation.pem. Получите сертификат шеф-сервера и поместите его в /etc/chef/trusted_certs/chef-server.pem

Создать /etc/chef/client.rb с содержанием вроде

log_level        :info
log_location     STDOUT
chef_server_url  "https://yourchefserver.example.com"
validation_client_name "chef-validator"
file_backup_path   "/var/lib/chef"
file_cache_path    "/var/cache/chef"
pid_file           "/var/run/chef/client.pid"

Если ты бежишь chef-client прямо сейчас у вас есть узел на шеф-сервере.

Если вы хотите установить базовую кулинарную книгу в качестве списка выполнения, вы можете создать что-то вроде /tmp/base-run_list.json

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

и применить chef-client -j /tmp/base-run_list.json