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

Автоматическая установка клиента Chef Client

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

В документации не так много информации. Кроме того, мне нужен не шеф-повар, а шеф-клиент на узле.

Из вашего вопроса неясно, на какой ОС вы это делаете и делаете ли вы это в автономной среде или в среде шеф-повара.

Вот два варианта автономной установки chef-client:

Установщик омнибуса

curl -L https://www.chef.io/chef/install.sh | sudo bash

или для конкретной версии

curl -L https://www.chef.io/chef/install.sh | sudo bash -s -- -v 12.0.2

Установка пакета

Пример для Ubuntu:

wget https://opscode-omnibus-packages.s3.amazonaws.com/debian/6/x86_64/chef_12.5.1-1_amd64.deb
sudo dpkg -i chef_12.5.1-1_amd64.deb

Бутстрап

Knife bootstrap установит chef-client на узел в среде chef-сервера. Bootstrap использует установщик омнибуса, а затем копирует необходимую конфигурацию клиента с сервера.

knife bootstrap 123.45.6.789 -x username -P password --sudo

Автоматический загрузчик

Chef-client может быть установлен с помощью автоматической начальной загрузки. Это позволяет устанавливать chef-client от самого себя, без использования SSH. Например, машины часто создаются с использованием таких сред, как AWS Auto Scaling, AWS CloudFormation, Rackspace Auto Scale и PXE. В этом сценарии использование инструментов для обслуживаемых одиночных установок, таких как ножевой бутстрап или нож CLOUD_PLUGIN create, нецелесообразно, поскольку машины создаются автоматически, и кто-то не может всегда быть под рукой, чтобы инициировать процесс начальной загрузки.

Когда chef-client устанавливается с использованием автоматической начальной загрузки, помните, что chef-client:

  • Требуется возможность аутентификации на сервере Chef.
  • Должен уметь настраивать список выполнения
  • Могут потребоваться настраиваемые атрибуты в зависимости от используемых кулинарных книг.
  • Должен иметь доступ к chef-validator.pem, чтобы он мог создать новую личность на сервере Chef.
  • Должен иметь уникальное имя узла; шеф-клиент по умолчанию будет использовать полное доменное имя хост-системы

Когда chef-client устанавливается с использованием автоматической начальной загрузки, он обычно встраивается в образ, который запускает chef-client при загрузке. Тип используемого образа зависит от платформы, на которой будет выполняться автоматическая загрузка.

Используйте настройки в client.rb файл - chef_server_url, http_proxy и т. д. - чтобы гарантировать, что детали конфигурации встроены в процесс автоматической загрузки.

Начальный список выполнения узла указывается с помощью файла JSON в хост-системе. При запуске chef-client как исполняемого файла используйте параметр -j, чтобы указать chef-client, какой файл JSON использовать. Например:

chef-client -j /etc/chef/file.json --environment _default

где file.json похоже на:

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

Вы также можете проверить Предоставление и загрузка экземпляров AWS с помощью Chef

Я только что сделал это, и мне пришлось связать это с несколькими разными вопросами StackExchange и некоторыми сообщениями в блогах. Много информации касалось AWS, но я не собираюсь там развертывать. Вот краткое изложение того, что необходимо; Я предполагаю, что chef-client уже установлен, и у вас есть доступ к экземпляру chef-server.

  1. validation.pem помещен в / etc / chef
  2. client.rb в / etc / chef с этими полями:

    node_name "my_node" chef_server_url "https://api.chef.io/organizations/my_org validation_client_name "my_org-validator"

  3. first_run.json в / etc / chef с (минимально) этими данными:

    {"run_list":["role[base]"]}

  4. Сценарий запуска, который будет запускаться

    chef-client -j /etc/chef/first_run.json > /tmp/chef_first_run.log

Я все это настроил и сохранил образ диска. Теперь, когда устройство, на котором установлена ​​эта ОС, запускается, оно автоматически регистрируется на chef-server и выполняет список выполнения для роли «base». Я использовал Ubuntu Server 16.04 и Chef Client 12.3.0

РЕДАКТИРОВАТЬ: ранее было сказано, что first_run.json должен содержать run-list. Это было обновлено до run_list за отзыв в комментарии.

Мы в AWS делаем это постоянно - ознакомьтесь с директивами конфигурации Chef CloudInit здесь: http://cloudinit.readthedocs.io/en/latest/topics/examples.html#install-and-run-chef-recipes

Некоторое время назад Chef удалил их PPA, поэтому вам придется использовать методы омнибуса или гемов - пакет больше не работает.