Spec-Zone.ru › Chef 16

Начало работы

[редактировать на GitHub]

Это руководство содержит распространенные параметры конфигурации, используемые при настройке новой установки Chef Workstation. Если у вас не установлена Chef Workstation, ознакомьтесь с её руководством по установке перед продолжением.

Настройка среды Ruby

Для многих пользователей Chef версия Ruby, включённая в Chef Workstation, должна быть настроена как основная версия Ruby на вашей системе.

Примечание

Эти инструкции предназначены для пользователей macOS и Linux.
  1. Откройте терминал и введите следующее:

    which ruby
    

    что вернёт что-то вроде /usr/bin/ruby.

  2. Чтобы использовать 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
    
  3. Снова выполните which ruby. Оно должно вернуть /opt/chef-workstation/embedded/bin/ruby.

Примечание

Использование Ruby, предоставляемого Chef Workstation, в качестве системного Ruby является необязательным. Для многих пользователей Ruby используется в основном для написания кулинарных книг Chef. Если это относится и к вам, рекомендуется использовать Ruby, предоставляемый Chef Workstation.

Добавление 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

Предупреждение

В Microsoft Windows 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.rb
  • ORGANIZATION-validator.pem
  • USER.pem

Где ORGANIZATION и USER представляют строки, уникальные для каждой организации. Эти файлы должны присутствовать в каталоге .chef для того, чтобы Chef Workstation смог подключиться к Chef Infra Server.

Для создания каталога .chef:

  1. В окне командной строки введите следующее:

    mkdir -p ~/chef-repo/.chef
    

    Обратите внимание, что вам нужно заменить chef-repo именем репозитория, созданного ранее.

  2. После создания каталога .chef на локальной машине будет присутствовать следующая структура каталогов:

    chef-repo/
       .chef/        << the hidden directory
       certificates/
       config/
       cookbooks/
       data_bags
       environments/
       roles/
    
  3. Добавьте .chef в файл .gitignore для предотвращения загрузки содержимого папки .chef в GitHub. Например:

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

Установка редактора кода

Хороший визуальный редактор кода не является необходимым условием для работы с Chef Infra, но хороший редактор может сэкономить вам время. Редактор кода должен поддерживать следующие функции: темы, плагины, фрагменты, выделение синтаксиса кода Ruby, несколько курсоров, древовидное представление всего каталога/репозитория, с которым вы работаете, и интеграцию Git.

Вот несколько распространённых редакторов:

  • Visual Studio Code (бесплатно/с открытым исходным кодом)
  • GitHub Atom - (бесплатно/с открытым исходным кодом)

Поддержка Chef Infra в редакторах:

  • Расширение Chef Infra для VSCode
  • Chef в Atom

Набор начальных компонентов

Если у вас есть доступ к 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:

  1. В окне командной строки введите каждое из следующих:

    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/ представляет путь к местоположению этих трёх файлов после их загрузки.

  2. Проверьте, что файлы находятся в папке .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:

  1. В окне командной строки введите каждое из следующих:

    cp /path/to/ORGANIZATION-validator.pem ~/chef-repo/.chef
    

    и:

    cp /path/to/USERNAME.pem ~/chef-repo/.chef
    

    где /path/to/ представляет путь к местоположению этих трёх файлов после их загрузки.

  2. Проверьте, что файлы находятся в папке .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:

  1. В окне командной строки перейдите к репозиторию Chef:

    cd ~/chef-repo
    
  2. В окне командной строки введите следующее:

    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 NTP Installation

Рецепты и конфигурация нескольких узлов

Используйте 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 Run
  • Знакомство с Chef Workstation
  • Chef Workstation — как мы создали эту демонстрацию

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API