Начало работы
Это руководство содержит распространенные параметры конфигурации, используемые при настройке новой установки Chef Workstation. Если у вас не установлена Chef Workstation, ознакомьтесь с её руководством по установке перед продолжением.
Настройка среды Ruby
Для многих пользователей Chef версия Ruby, включённая в Chef Workstation, должна быть настроена как основная версия Ruby на вашей системе.
Примечание
-
Откройте терминал и введите следующее:
which rubyчто вернёт что-то вроде
/usr/bin/ruby. -
Чтобы использовать Ruby, предоставляемый Chef Workstation, в качестве основного Ruby в вашей системе, отредактируйте переменные среды
$PATHиGEM, включив в них пути к Chef Workstation. Например, на машине, использующей Bash, выполните:echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profileгде
bashи~/.bash_profileпредставляют имя оболочки.Если вашей предпочтительной оболочкой является zsh, выполните следующее:
echo 'eval "$(chef shell-init zsh)"' >> ~/.zshrc Снова выполните
which ruby. Оно должно вернуть/opt/chef-workstation/embedded/bin/ruby.
Примечание
Добавление Ruby в $PATH
Chef Infra Client включает стабильную версию Ruby в составе установщика. Путь к этой версии Ruby необходимо добавить в переменную среды $PATH и сохранить в файле конфигурации для командной оболочки (Bash, csh и т. д.), используемой на машине, на которой запущена Chef Workstation. В окне командной строки введите следующее:
echo 'export PATH="/opt/chef-workstation/embedded/bin:$PATH"' >> ~/.configuration_file && source ~/.configuration_file
где configuration_file - имя файла конфигурации для конкретной командной оболочки. Например, если командной оболочкой является Bash, а файл конфигурации называется bash_profile, команда будет выглядеть примерно так:
echo 'export PATH="/opt/chef-workstation/embedded/bin:$PATH"' >> ~/.bash_profile && source ~/.bash_profile
Предупреждение
C:/opscode/Chef Workstation/bin должен стоять перед C:/opscode/Chef Workstation/embedded/bin в PATH.Создание репозитория Chef
Используйте команду chef generate repo для создания репозитория Chef. Например, для создания репозитория под названием chef-repo:
chef generate repo chef-repo
Создание каталога .chef
Каталог .chef используется для хранения трёх файлов:
config.rbORGANIZATION-validator.pemUSER.pem
Где ORGANIZATION и USER представляют строки, уникальные для каждой организации. Эти файлы должны присутствовать в каталоге .chef для того, чтобы Chef Workstation смог подключиться к Chef Infra Server.
Для создания каталога .chef:
-
В окне командной строки введите следующее:
mkdir -p ~/chef-repo/.chefОбратите внимание, что вам нужно заменить
chef-repoименем репозитория, созданного ранее. -
После создания каталога
.chefна локальной машине будет присутствовать следующая структура каталогов:chef-repo/ .chef/ << the hidden directory certificates/ config/ cookbooks/ data_bags environments/ roles/ -
Добавьте
.chefв файл.gitignoreдля предотвращения загрузки содержимого папки.chefв GitHub. Например:echo '.chef' >> ~/chef-repo/.gitignore
Установка редактора кода
Хороший визуальный редактор кода не является необходимым условием для работы с Chef Infra, но хороший редактор может сэкономить вам время. Редактор кода должен поддерживать следующие функции: темы, плагины, фрагменты, выделение синтаксиса кода Ruby, несколько курсоров, древовидное представление всего каталога/репозитория, с которым вы работаете, и интеграцию Git.
Вот несколько распространённых редакторов:
- Visual Studio Code (бесплатно/с открытым исходным кодом)
- GitHub Atom - (бесплатно/с открытым исходным кодом)
Поддержка Chef Infra в редакторах:
Набор начальных компонентов
Если у вас есть доступ к Chef Infra Server через Automate или Chef Manage, вы можете загрузить начальный набор компонентов. Начальный набор компонентов создаст необходимые файлы конфигурации: каталог .chef, config.rb, ORGANIZATION-validator.pem, и USER.pem. Просто загрузите начальный набор компонентов и переместите его в нужное место на вашей машине с Chef Workstation.
Настройка репозитория Chef
С помощью WebUI
Выполните следующие шаги для ручной настройки репозитория chef и для использования консоли управления Chef для получения файлов .pem и config.rb.
Получение файлов конфигурации
Для установки Chef Workstation, которая будет взаимодействовать с Chef Infra Server (включая размещённый Chef Infra Server), войдите в систему и загрузите следующие файлы:
-
config.rb. Этот файл конфигурации можно загрузить со страницы Организации. -
ORGANIZATION-validator.pem. Этот закрытый ключ можно загрузить со страницы Организации. -
USER.pem. Этот закрытый ключ можно загрузить из раздела Смена пароля на странице Управление учетной записью.
Перемещение файлов конфигурации
Файлы config.rb, ORGANIZATION-validator.pem, и USER.pem необходимо переместить в каталог .chef после их загрузки с Chef Infra Server.
Чтобы переместить файлы в каталог .chef:
-
В окне командной строки введите каждое из следующих:
cp /path/to/config.rb ~/chef-repo/.chefи:
cp /path/to/ORGANIZATION-validator.pem ~/chef-repo/.chefи:
cp /path/to/USERNAME.pem ~/chef-repo/.chefгде
/path/to/представляет путь к местоположению этих трёх файлов после их загрузки. Проверьте, что файлы находятся в папке
.chef.
Без WebUI
Выполните следующие шаги для ручной настройки репозитория Chef: на вашем Chef Infra Server создайте файлы ORGANIZATION-validator.pem и USER.pem с помощью инструмента командной строки chef-server-ctl. Затем на вашей рабочей станции создайте файл config.rb с помощью инструмента knife.
Создание организации
На компьютере Chef Infra Server создайте организацию ORGANIZATION-validator.pem из командной строки, используя chef-server-ctl. Выполните следующую команду:
chef-server-ctl org-create ORG_NAME ORG_FULL_NAME -f FILE_NAME
где
- Имя должно начинаться с строчной буквы или цифры, может содержать только строчные буквы, цифры, дефисы и символы нижнего подчеркивания, и должно содержать от 1 до 255 символов. Например:
chef - Полное имя должно начинаться с символа, отличного от пробела, и должно содержать от 1 до 1023 символов. Например:
"Chef Software, Inc." -
-f FILE_NAME: ЗапишитеORGANIZATION-validator.pemвFILE_NAMEвместо вывода его вSTDOUT. Например:/tmp/chef.key.
Например, организация с именем chef, полным именем Chef Software, Inc., и файлом ORGANIZATION-validator.pem, сохранённым в /tmp/chef.key:
chef-server-ctl org-create chef "Chef Software, Inc." -f /tmp/chef.key
Создание пользователя
На компьютере Chef Infra Server создайте пользователя USER.pem из командной строки, используя chef-server-ctl. Выполните следующую команду:
chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL PASSWORD -f FILE_NAME
где
-
-f FILE_NAMEзаписываетUSER.pemв файл вместоSTDOUT. Например:/tmp/grantmc.key.
Например: пользователь с именем grantmc, с именем и фамилией Grant McLennan, адресом электронной почты grantmc@chef.io, плохо выбранным паролем и файлом USER.pem, сохранённым в /tmp/grantmc.key:
chef-server-ctl user-create grantmc Grant McLennan grantmc@chef.io p@s5w0rD! -f /tmp/grantmc.key
Перемещение файлов .pem
Загрузите файлы ORGANIZATION-validator.pem и USER.pem с Chef Infra Server и переместите их в каталог .chef.
Чтобы переместить файлы в каталог .chef:
-
В окне командной строки введите каждое из следующих:
cp /path/to/ORGANIZATION-validator.pem ~/chef-repo/.chefи:
cp /path/to/USERNAME.pem ~/chef-repo/.chefгде
/path/to/представляет путь к местоположению этих трёх файлов после их загрузки. Проверьте, что файлы находятся в папке
.chef.
Создание файла config.rb
Перейдите в каталог ~/chef-repo/.chef и создайте файл config.rb с помощью инструмента knife configure. Файл должен быть создан в каталоге .chef. Он должен выглядеть примерно так:
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name 'node_name'
client_key "#{current_dir}/USER.pem"
validation_client_name 'ORG_NAME-validator'
validation_key "#{current_dir}/ORGANIZATION-validator.pem"
chef_server_url 'https://api.chef.io/organizations/ORG_NAME'
cache_type 'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks"]
Как минимум, вы должны обновить следующие параметры соответствующими значениями:
-
client_keyдолжен указывать на расположение файла.pemпользователя Chef Infra Server на вашей машине с Chef Workstation. -
validation_client_nameдолжен быть обновлён с именем желаемой организации, созданной на Chef Infra Server. -
validation_keyдолжен указывать на местоположение файла.pemвашей организации на вашей машине с Chef Workstation. -
chef_server_urlдолжен быть обновлён с доменом или IP-адресом, используемым для доступа к Chef Infra Server.
См. документацию по knife config.rb для получения дополнительных сведений.
Получение сертификатов SSL
Сервер Chef 12 и более поздних версий по умолчанию включает проверку SSL для всех запросов к серверу, таких как запросы от knife и Chef Infra Client. Сертификат, созданный во время установки Chef Infra Server, является самоподписанным, что означает отсутствие сертификационного центра (CA) для проверки. Кроме того, этот сертификат необходимо загрузить на любой компьютер, с которого knife и/или Chef Infra Client будут отправлять запросы на Chef Infra Server.
Используйте подкоманду knife ssl fetch для загрузки SSL-сертификата с сервера Chef Infra Server:
knife ssl fetch
См. SSL-сертификаты для получения дополнительной информации о том, как knife и Chef Infra Client используют SSL-сертификаты, сгенерированные сервером Chef Infra Server.
Проверка связи с сервером
Чтобы проверить, что Chef Workstation может подключиться к Chef Infra Server:
-
В окне командной строки перейдите к репозиторию Chef:
cd ~/chef-repo -
В окне командной строки введите следующее:
knife client listчтобы получить список клиентов (зарегистрированные узлы и установки Chef Workstation), имеющих доступ к Chef Infra Server. Например:
chefdk_machine registered_node
Выполнение удаленных задач без предварительной настройки с chef-run
Утилита chef-run позволяет выполнять внеплановые обновления конфигурации на управляемых системах без настройки сервера Chef. С помощью chef-run, вы подключаетесь к серверам через SSH или WinRM и можете применять отдельные ресурсы, рецепты или даже целые кулинарии непосредственно из командной строки.
Пример: установка NTP-сервера
Chef Workstation объединяет мощь InSpec и chef-run, позволяя легко обнаруживать и исправлять проблемы на любом целевом экземпляре. Одна из распространенных задач администраторов в средах — установка протокола Network Time Protocol (NTP), который синхронизирует время между серверами. InSpec позволяет проверить установку пакета с помощью запроса, используя ресурс InSpec package:
describe package('ntp') do
it { should be_installed }
end
Chef также предоставляет решение для установки пакета Network Time Protocol с помощью одного ресурса:
package 'ntp' do
action :install
end
С помощью chef-run, вы можете запускать ресурс непосредственно из командной строки, конфигурируя целевые узлы с помощью одного ресурса без создания кулинарии или рецепта:
chef-run myhost package ntp action=install
В сочетании с выполнением сканирования InSpec для проверки успешной установки пакета у вас есть всё необходимое для определения требований и их выполнения двумя простыми командами, локально или удалённо.
inspec exec ntp-check -t ssh://myuser@myhost -i ~/.ssh/mykey
chef-run -i ~/.ssh/mykey myuser@myhost package ntp action=install

Рецепты и конфигурация нескольких узлов
Используйте chef-run для выполнения рецептов и кулинарий Chef, а также для одновременного запуска на нескольких целевых узлах. Ниже приведены несколько примеров использования chef-run:
Пример: выполнение рецепта на нескольких целевых узлах
Запустите стандартный рецепт из определённой кулинарии для двух ресурсов: myhost1 и myhost2.
chef-run myhost1,myhost2 /path/to/my/cookbook
Пример: альтернативный синтаксис рецепта и целевые узлы, определённые диапазоном
Запустите кулинарию my_cookbook::my_recipe для двадцати ресурсов: myhost1 до myhost20
chef-run myhost[1:20] my_cookbook::my_recipe
Дополнительные материалы
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/workstation/getting_started/