Кто-нибудь пробовал выполнить автоматическую установку клиента 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-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.
client.rb в / etc / chef с этими полями:
node_name "my_node"
chef_server_url "https://api.chef.io/organizations/my_org
validation_client_name "my_org-validator"
first_run.json в / etc / chef с (минимально) этими данными:
{"run_list":["role[base]"]}
Сценарий запуска, который будет запускаться
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, поэтому вам придется использовать методы омнибуса или гемов - пакет больше не работает.