Как настроить систему управления конфигурацией Chef 12 на серверах Ubuntu 14.04

Вступление

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

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

В previous мы на концептуальном уровне говорили о Общая структура компонентов Chef и способ их взаимодействия для достижения целей администратора. Мы говорили о соответствующей терминологии и обсуждали ответственность каждой части.

В этом руководстве мы установим актуальное программное обеспечение. Мы настроим централизованный сервер Chef, который будет хранить и обслуживать инструкции по конфигурации и информацию о профилировании узлов. Мы также создадим рабочую станцию, на которой администратор сможет работать с базой кода и изменять характеристики инфраструктуры. Мы последуем этому, загрузив новый узел, чтобы передать его под управление экосистемой Chef.

Предпосылки и цели

В этом руководстве мы будем настраивать версию 12 Chef. Конфигурация может значительно отличаться между версиями, поэтому убедитесь, что вы используете тот же основной номер версии, что и данное руководство, для достижения наилучших результатов.

В Chef документации говорится, что ваш сервер Chef должен иметь как минимум 4 ядра и 4 ГБ оперативной памяти. Он также должен иметь 64-bit операционную систему. Для нашего руководства мы будем использовать 4-ядерную / 8 ГБ DigitalOcean Droplet с 64-битной Ubuntu 14.04.

Рабочая станция и узлы предъявляют очень мало требований. Мы будем использовать Ubuntu 14.04 для этих целей также для согласованности.

Когда мы закончим, у нас будет централизованный сервер Chef для хранения и обслуживания наших данных конфигурации. Наша рабочая станция будет использоваться для внесения изменений, загрузки их на сервер, а также для начальной загрузки и управления новыми узлами. Узел представляет собой один сервер в нашей инфраструктуре.

Настройте сервер Chef

Мы начнем с настройки сервера Chef. Помните, что Chef рекомендует как минимум 4 ядра и 4 ГБ оперативной памяти для этого сервера, поэтому планируйте соответственно.

Убедитесь, что сервер доступен по имени хоста

После входа на сервер, на который планируется установить сервер Chef, первой задачей, которую необходимо выполнить, является проверка того, что имя хоста сервера является разрешаемым полным доменным именем (FQDN) или IP-адресом. Вы можете проверить это, набрав:

hostname -f

Результатом должен быть адрес, по которому можно связаться с сервером. Если это не так, вы можете установить это для доменного имени или IP-адреса, где сервер может быть достигнут, редактируя этот файл:

sudo nano /etc/hosts

Файл будет выглядеть примерно так:

127.0.1.1
127.0.0.1 localhost

. . .

Измените верхнюю строку, чтобы отразить полное доменное имя или IP-адрес, затем пробел и любой псевдоним, который вы хотите использовать для своего хоста. Добавьте строку beneath из двух показанных строк, в которой публичный IP-адрес вашего сервера находится в первом столбце, и информацию, которую вы изменили в конце строки + 127.0.1.1 +, до конца. Это должно выглядеть примерно так:

127.0.1.1
127.0.0.1 localhost

Итак, если у меня нет доменного имени, мой общедоступный IP-адрес будет + 123.123.123.123 +, и если я также хочу, чтобы мой хост был доступен для имени хоста «chef», я мог бы получить файл, который выглядит следующим образом:

127.0.1.1 123.123.123.123 chef
127.0.0.1 localhost
123.123.123.123 123.123.123.123 chef

Если, с другой стороны, этот сервер имеет полностью определенное доменное имя + chef.example.com + и IP-адрес + 234.234.234.234 +, мой файл может выглядеть примерно так:

127.0.1.1 chef.example.com chef
127.0.0.1 localhost
234.234.234.234 chef.example.com chef

Сохраните и закройте файл, когда вы закончите. Вы можете проверить правильность установки значения, набрав:

hostname -f

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

Загрузите и установите программное обеспечение Chef 12 Server

Далее мы можем скачать программное обеспечение сервера Chef 12. Вы можете найти пакет, который должен быть установлен, посетив сайт Chef. В частности, для установки Ubuntu вы можете перейти по ссылке this link.

Под заголовком «Ubuntu Linux 14.04» щелкните правой кнопкой мыши ссылку для скачивания и скопируйте расположение ссылки:

изображение: https: //assets.digitalocean.com/articles/chef12_ubuntu1404/download_chef_server.png [загрузка сервера Chef]

Вернитесь на свой сервер и перейдите в свой домашний каталог. Вставьте скопированную ссылку и используйте команду + wget + для загрузки пакета. Ссылка, которую вы скопировали, может отличаться от ссылки, приведенной ниже, если с момента написания этой статьи произошло небольшое обновление

cd ~
wget https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core__amd64.deb

После завершения загрузки установите пакет, набрав:

sudo dpkg -i chef-server-core_*.deb

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

После завершения установки вы должны вызвать команду + reconfigure +, которая настраивает компоненты, составляющие сервер, для совместной работы в вашей конкретной среде:

sudo chef-server-ctl reconfigure

Создать пользователя-администратора и организацию

Далее нам нужно создать пользователя с правами администратора. Это будет имя пользователя, у которого будет доступ для внесения изменений в компоненты инфраструктуры в организации, которую мы будем создавать.

Мы можем сделать это, используя подкоманду + user-create + команды + chef-server-ctl +. Команда требует, чтобы в процессе создания было передано несколько полей. Общий синтаксис:

chef-server-ctl user-create

Мы включим эту информацию, а также добавим + -f +, дополнительный флаг, в конец, чтобы указать имя файла, в котором будет выводиться закрытый ключ RSA нашего нового пользователя. Это понадобится нам для аутентификации с использованием команды управления + knife + позже.

Для нашего примера мы создадим пользователя со следующей информацией:

  • * Имя пользователя *: админ

  • * Имя *: админ

  • * Фамилия *: админ

  • * Электронная почта *: [email protected]

  • * Пароль *: пример пропуска

  • * Имя файла *: admin.pem

Команда, необходимая для создания пользователя с этой информацией (вы должны изменить это, чтобы отразить вашу информацию, особенно пароль):

sudo chef-server-ctl user-create admin admin admin [email protected]  -f admin.pem

Теперь у вас должен быть закрытый ключ + admin.pem + в вашем текущем каталоге.

Теперь, когда у вас есть пользователь, вы можете создать организацию с помощью подкоманды + org-create +. Организация - это просто группа инфраструктуры и конфигурации внутри Chef. Команда имеет следующий общий синтаксис:

chef-server-ctl org-create   --association_user

Сокращенное имя - это имя, которое вы будете использовать для обозначения организации в Chef. Длинное имя - это фактическое название организации. + - association_user + указывает имя пользователя, которое имеет доступ для управления организацией. Опять же, мы добавим флаг + -f +, чтобы мы могли указать имя файла для размещения закрытого ключа. Ключ, который будет создан, используется для проверки новых клиентов как части организации, пока они не получат свой собственный уникальный ключ клиента.

Мы создадим организацию со следующими качествами:

  • * Краткое название *: digitalocean

  • * Длинное имя *: DigitalOcean, Inc.

  • * Ассоциация пользователя *: админ

  • * Имя файла *: digitalocean-validator.pem

Чтобы создать организацию с указанными выше качествами, мы будем использовать следующую команду:

sudo chef-server-ctl org-create digitalocean "DigitalOcean, Inc." --association_user admin -f digitalocean-validator.pem

После этого у вас должно быть два + .pem + файла ключей в вашем домашнем каталоге. В нашем случае они будут называться + admin.pem + и + digitalocean-validator.pem +. Нам нужно будет подключиться к этому серверу и на мгновение загрузить эти ключи на нашу рабочую станцию. На данный момент установка нашего сервера Chef завершена.

Настройте рабочую станцию ​​Chef

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

Клон Шеф Репо

Конфигурация Chef для вашей инфраструктуры поддерживается в виде иерархической файловой структуры, известной как репозиторий Chef. Общая структура этого может быть найдена в репозитории GitHub, предоставленном командой Chef. Мы будем использовать + git +, чтобы клонировать этот репозиторий на нашу рабочую станцию ​​и использовать его в качестве основы для репозитория Chef нашей инфраструктуры.

Во-первых, нам нужно установить + git + с помощью инструментов упаковки + + apt +. Обновите индекс упаковки и установите инструмент, набрав:

sudo apt-get update
sudo apt-get install git

После установки + git вы можете клонировать репозиторий Chef на свой компьютер. Для этого руководства мы просто клонируем его в наш домашний каталог:

cd ~
git clone https://github.com/chef/chef-repo.git

Это разрушит базовую структуру репозитория Chef в каталог с именем + chef-repo + в вашем домашнем каталоге.

Помещение вашего шеф-повара под контроль версий

Конфигурации, созданные в самом репозитории Chef, лучше всего управляются в системе контроля версий так же, как вы управляете кодом. Поскольку мы клонировали репо выше, репозиторий + git + уже инициализирован.

Чтобы настроить вашу рабочую станцию ​​для новых коммитов, вы должны сделать несколько вещей.

Во-первых, установите имя и адрес электронной почты, которые + git + будет использовать для обозначения любых ваших коммитов. Это требование для + git + для принятия коммитов. Мы устанавливаем это глобально, чтобы любое создаваемое нами репозитарий + git + использовало следующие значения:

git config --global user.name ""
git config --global user.email "@"

Далее мы скажем + git игнорировать любую информацию, содержащуюся в каталоге` + ~ / chef-repo / .chef`. Мы создадим этот каталог за несколько минут, чтобы сохранить некоторую конфиденциальную информацию. Сейчас мы можем добавить это местоположение в ваш файл + .gitignore, чтобы` + git + `не сохранял данные, которые не должны быть доступны другим людям:

echo ".chef" >> ~/chef-repo/.gitignore

Поскольку мы внесли изменения в файл + .gitignore +, мы можем продолжить и сделать наш первый новый коммит в системе контроля версий. Сначала добавьте все измененные файлы в текущую область подготовки:

cd ~/chef-repo
git add .

Теперь внесите изменения. Мы будем использовать флаг + -m +, чтобы указать встроенное сообщение фиксации, описывающее изменения, которые мы делаем:

git commit -m "Excluding the ./.chef directory from version control"

Наш репозиторий Chef теперь находится под контролем версий. Поскольку мы создаем конфигурации для нашей инфраструктуры, мы можем использовать две вышеупомянутые команды, чтобы поддерживать наше репозиторий + git + в актуальном состоянии.

Загрузите и установите Chef Development Kit

Затем нам нужно установить Chef Development Kit, набор программного обеспечения, предназначенного для рабочих станций Chef. Это включает в себя множество утилит, которые будут полезны при разработке конфигураций для вашей инфраструктуры. Инструмент, который нас интересует на данный момент, это связанная команда + knife +, которая может связываться и контролировать как сервер Chef, так и любые клиенты Chef.

Мы можем найти комплект разработчика Chef 12 на веб-сайте Chef. Поскольку мы используем Ubuntu 14.04 в качестве нашей рабочей станции, страница here будет содержать последнюю ссылку для загрузки. Обратите внимание, что на момент написания этой статьи ссылка на скачивание ссылается только на Ubuntu 12.04 и Ubuntu 13.10, но она все равно должна быть установлена ​​без проблем в Ubuntu 14.04.

Нажмите правой кнопкой мыши на кнопку загрузки в разделе «Ubuntu Linux» и скопируйте расположение ссылки:

изображение: https: //assets.digitalocean.com/articles/chef12_ubuntu1404/download_chef_dev_kit.png [Ubuntu Chef dev kit]

Вернитесь на свою рабочую станцию, перейдите в домашний каталог. Вставьте скопированную ссылку и используйте команду + wget + для загрузки пакета. Ссылка, которую вы скопировали, может отличаться от ссылки ниже, если выпущена более новая версия комплекта разработчика:

cd ~
wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk__amd64.deb

Как только пакет + .deb + был загружен, вы можете установить его, набрав:

sudo dpkg -i chefdk_*.deb

После установки вы можете проверить, что все компоненты доступны в их ожидаемом расположении, с помощью новой команды + chef +:

chef verify

Если ваша рабочая станция будет в основном использоваться для управления Chef для вашей инфраструктуры, вы, вероятно, захотите установить версию Ruby, установленную с Chef, по умолчанию. Вы можете сделать это, изменив ваш + .bash_profile + так, чтобы Ruby от Chef имел приоритет:

echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile

После этого вы можете получить исходный файл + .bash_profile + для установки правильных переменных среды для текущего сеанса:

source ~/.bash_profile

Если вы хотите управлять своими версиями Ruby независимо, вы можете пропустить вышеуказанные шаги.

Загрузите ключи аутентификации на рабочую станцию

На этом этапе ваша рабочая станция имеет все программное обеспечение, необходимое для взаимодействия с сервером Chef и создания конфигураций инфраструктуры. Однако он еще не настроен для взаимодействия с вашим сервером Chef и вашей средой. В этом разделе мы загрузим учетные данные, созданные на сервере Chef.

Мы будем использовать утилиту + scp + для загрузки ключа пользователя и ключа проверки организации, которые мы создали на сервере Chef. Перед этим мы создадим скрытый каталог, в котором будем хранить эти файлы:

mkdir ~/chef-repo/.chef

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

Как скачать ключи при подключении к серверу Chef с паролями

Если вы подключаетесь к серверу Chef через SSH с использованием аутентификации на основе пароля, команда + scp + будет работать без значительных изменений.

На вашей рабочей станции укажите имя пользователя и имя домена или IP-адрес, используемый для подключения к серверу Chef. Сразу после этого введите двоеточие (:) и путь к файлу, который вы хотите загрузить. После добавления пробела укажите каталог на компьютере local, в который вы хотите поместить загружаемые файлы (в нашем случае это + ~ / chef-repo / .chef +).

Если вы войдете на сервер Chef, используя учетную запись пользователя + root +, ваши команды будут выглядеть примерно так. Не забудьте изменить имя домена или IP-адрес, а также имена файлов ключей, которые вы пытаетесь загрузить, в соответствии с вашей средой:

scp root@:/root/ ~/chef-repo/.chef
scp root@:/root/ ~/chef-repo/.chef

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

scp @:/home// ~/chef-repo/.chef
scp @:/home// ~/chef-repo/.chef
Как скачать ключи при подключении к серверу Chef с использованием ключей SSH

Если вместо этого вы подключаетесь к серверу Chef с помощью ключей SSH (рекомендуется), вам потребуется выполнить некоторые дополнительные действия.

Сначала выйдите из сеанса SSH с рабочей станции. Нам нужно будет на мгновение переподключиться с новым параметром:

exit

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

eval $(ssh-agent)

Вы должны увидеть результат, который выглядит следующим образом (число, скорее всего, будет другим):

Agent pid 13881

После запуска агента вы можете добавить к нему свой SSH-ключ:

ssh-add
Identity added: /home//.ssh/id_rsa (rsa w/o comment)

Это сохранит ваш SSH-ключ в памяти. Теперь вы можете forward сохранить ключ к вашей рабочей станции при подключении, используя опцию + -A + с + ssh +. Это позволит вам подключиться к любому компьютеру с вашей рабочей станции, как если бы вы подключались с локального компьютера:

ssh -A @

Теперь вы можете подключиться к серверу Chef без пароля, используя переадресованные учетные данные SSH. Если ключи на вашем сервере Chef были доступны пользователю root, команды, которые вам понадобятся, будут выглядеть примерно так. Не забудьте изменить имя домена или IP-адрес сервера Chef, а также имена ключей:

scp root@:/root/ ~/chef-repo/.chef
scp root@:/root/ ~/chef-repo/.chef

Если вместо этого для проверки подлинности вашей учетной записи обычного пользователя используется ключ SSH, настроенный для сервера Chef, ваши команды будут выглядеть следующим образом:

scp @:/home// ~/chef-repo/.chef
scp @:/home// ~/chef-repo/.chef

Настройка ножа для управления средой шеф-повара

Теперь, когда ваши учетные данные Chef доступны на вашей рабочей станции, мы можем сконфигурировать команду + knife + с информацией, необходимой для подключения и управления вашей инфраструктурой Chef. Это делается через файл + knife.rb +, который мы поместим в каталог + ~ / chef-repo / .chef + вместе с нашими ключами.

Откройте файл с именем + knife.rb + в этом каталоге в вашем текстовом редакторе:

nano ~/chef-repo/.chef/knife.rb

В этот файл вставьте следующую информацию:

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                ""
client_key               "#{current_dir}/"
validation_client_name   ""
validation_key           "#{current_dir}/"
chef_server_url          "https:///organizations/"
syntax_check_cache_path  "#{ENV['HOME']}/.chef/syntaxcache"
cookbook_path            ["#{current_dir}/../cookbooks"]

Следующие элементы должны быть скорректированы в соответствии с вашей инфраструктурой:

  • * + имя_узла + *: указывает имя, которое + knife + будет использовать для подключения к вашему серверу Chef. Это должно соответствовать вашему имени пользователя.

  • * + client_key + *: Это должно быть имя и путь к пользовательскому ключу, который вы скопировали с сервера Chef. Мы можем использовать фрагмент + # {current_dir} + для заполнения пути, если ключ находится в том же каталоге, что и файл + knife.rb +.

  • * + validation_client_name + *: Это имя клиента проверки, который + knife + будет использовать для начальной загрузки новых узлов. Это примет форму короткого имени вашей организации, за которым следует + -validator +.

  • * + validation_key + *: Как и + client_key +, сюда входят имя и путь к ключу проверки, который вы скопировали с сервера Chef. Опять же, вы можете использовать + # {current_dir} + фрагмент Ruby, чтобы указать текущий каталог, если ключ проверки находится в том же каталоге, что и файл + knife.rb +.

  • * + chef_server_url + *: это URL, по которому можно связаться с сервером Chef. Он должен начинаться с + https: // +, за которым следует доменное имя или IP-адрес вашего сервера Chef. После этого путь к вашей организации должен быть указан путем добавления + / organization / +.

Для нашего руководства файл + knife.rb + будет выглядеть примерно так. Вам все еще нужно настроить доменное имя или IP-адрес сервера, если вы выполняете следующие действия:

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                "admin"
client_key               "#{current_dir}/admin.pem"
validation_client_name   "digitalocean-validator"
validation_key           "#{current_dir}/digitalocean-validator.pem"
chef_server_url          "https:///organizations/digitalocean"
syntax_check_cache_path  "#{ENV['HOME']}/.chef/syntaxcache"
cookbook_path            ["#{current_dir}/../cookbooks"]

Когда вы закончите, сохраните и закройте файл + knife.rb +.

Теперь мы протестируем файл конфигурации, попробовав простую команду + knife +. Мы должны быть в нашей директории + ~ / chef-repo in, чтобы ваш файл конфигурации читался правильно:

cd ~/chef-repo
knife client list

Эта первая попытка должна завершиться с ошибкой, которая выглядит следующим образом:

ERROR: SSL Validation failure connecting to host: server_domain_or_IP - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
ERROR: Could not establish a secure connection to the server.
Use `knife ssl check` to troubleshoot your SSL configuration.
If your Chef Server uses a self-signed certificate, you can use
`knife ssl fetch` to make knife trust the server's certificates.

Original Exception: OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Это происходит потому, что у нас нет SSL-сертификата нашего Chef-сервера на нашей рабочей станции. Мы можем приобрести это, набрав:

knife ssl fetch

Это должно добавить файл сертификата сервера Chef в список в нашем каталоге + ~ / chef-repo / .chef +:

WARNING: Certificates from server_domain_or_IP will be fetched and placed in your trusted_cert
directory (/home/demo/chef-repo/.chef/trusted_certs).

Knife has no means to verify these are the correct certificates. You should
verify the authenticity of these certificates after downloading.

Adding certificate for server_domain_or_IP in /home/demo/chef-repo/.chef/trusted_certs/server_domain_or_IP.crt

После получения SSL-сертификата предыдущая команда должна работать:

knife client list
digitalocean-validator

Если приведенная выше команда верна правильно, ваша рабочая станция теперь настроена на управление средой Chef.

Начальная загрузка нового узла с ножом

После настройки нашего сервера Chef и рабочей станции мы можем начать использовать Chef для настройки новых серверов в нашей инфраструктуре.

Это происходит через процесс, называемый «начальной загрузкой», в котором исполняемый файл клиента Chef устанавливается на новом компьютере, а также передается ключ проверки организации. Затем новый узел связывается с сервером Chef с ключом валидатора и, в свою очередь, получает свой собственный уникальный клиентский ключ и любую конфигурацию, которая была ему назначена. Этот процесс переводит новый сервер в исходное состояние и настраивает его для любого будущего управления.

Чтобы подключиться к новому серверу, нам понадобится немного информации о новом узле:

  • Доменное имя или IP-адрес, где оно может быть достигнуто

  • Имя пользователя используется для выполнения административных действий. Это может быть либо + root +, либо пользователь, настроенный с привилегиями + sudo +.

  • Способ входа в систему как указанный выше пользователь. Это может быть либо пароль, либо возможность использовать ключ SSH.

  • Способ выполнения административных задач. Для пользователей + root + это не нужно. Для пользователей, использующих привилегии + sudo +, обычно требуется пароль.

Общий синтаксис команды будет:

knife bootstrap  [options]

Вот некоторые общие опции, которые вы можете использовать:

  • * + -x + *: Используется для указания имени пользователя для аутентификации через SSH. Это обычно требуется.

  • * + -N + *: новое имя для узла, отображаемое в Chef. В противном случае имя хоста будет использоваться в качестве имени узла Chef.

  • * + -P + *: Используется для указания пароля для имени пользователя на удаленном сервере. Это необходимо, если * либо * сеанс SSH требует аутентификации по паролю *, либо * если имя пользователя требует пароль для команд + sudo +.

  • * + - sudo + *: если имя пользователя на удаленном сервере должно будет использовать + sudo + для выполнения административных действий, этот флаг необходим. По умолчанию он запрашивает пароль + sudo +.

  • * + - use-sudo-password + *: если вы уже предоставляете пароль для пользователя с флагом + -P +, используйте этот флаг * в дополнение * к флагу + - sudo + пароль + -P + без запроса.

  • * + -A + *: эта опция перенаправляет SSH-ключи на удаленный хост для входа в систему, а не с использованием аутентификации по паролю.

При использовании опции + -A + необходимо запустить агент SSH на локальном компьютере, добавить ключ SSH, который можно использовать для подключения к новому узлу, и перенаправить эту информацию на рабочую станцию, подключившись с помощью `+ - A + `флаг изначально. Дополнительную информацию о том, как это сделать, можно найти в разделе конфигурации рабочей станции, касающемся загрузки ключей с сервера Chef.

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

Например, чтобы загрузить узел с именем «testing», используя имя пользователя + demo +, которое настроено с привилегиями + sudo + и которому нужен пароль для SSH и проверки + sudo +, мы можем набрать :

knife bootstrap  -N testing -x demo -P  --sudo --use-sudo-password

Если мы хотим запустить загрузку, используя пользователя + root, с аутентификацией по ключу SSH с использованием ключей, доступных на рабочей станции, и хотим продолжать использовать имя хоста узла в качестве имени узла Chef, мы можем ввести:

knife bootstrap  -x root -A

Если мы хотим использовать ключи SSH для аутентификации пользователя + sudo +, нам все равно нужно будет предоставить пароль, используя флаг + -P +, флаг + - sudo + и `+ - use -sudo-password + `флаг, чтобы избежать подсказок:

knife bootstrap  -x  -A -P  --sudo --use-sudo-password -N

Если вы находитесь в приведенном выше сценарии, но не возражаете против запроса пароля + sudo, вместо этого вы можете просто напечатать это:

knife bootstrap  -x  -A --sudo -N

Как только ваш новый узел загрузится, у вас должен быть новый клиент:

knife client list
digitalocean-validator

У вас также должен быть новый узел с тем же именем:

knife node list

Вы можете использовать описанную выше процедуру для простой настройки новых клиентов Chef на любом количестве новых серверов.

Если вы хотите узнать о том, как автоматически добавлять новые капли DigitalOcean в существующую инфраструктуру Chef без необходимости начальной загрузки каждой из них, https://www.digitalocean.com/community/tutorials/how-to-automatics-add-new- система управления каплями в вашу конфигурацию [ознакомьтесь с этим руководством].

Заключение

После выполнения этого руководства у вас должен быть полностью функциональный сервер Chef, настроенный для вашей инфраструктуры. Мы также создали рабочую станцию, которая может использоваться для управления и поддержки конфигураций, которые Chef будет применять к вашей инфраструктуре. Мы продемонстрировали, как использовать команду + knife + для начальной загрузки серверов, которые будут настроены Chef.

В next guide мы продемонстрируем, как проектировать конфигурации для ваши узлы, используя некоторые конструкции Chef. Мы рассмотрим основы рецептов и поваренных книг от Chef как способы управления вашей инфраструктурой с помощью декларативных настроек.

Related