Установка сервера, рабочей станции и клиента Chef

Чем больше становится инфраструктура, чем больше в ней компонентов, тем сложнее управлять и выполнять её оркестровку самостоятельно.

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

Читайте также: Анализ настроек Chef

Данное руководство поможет установить и настроить небольшой кластер Chef 11, который включает в себя:

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

Требования

Для выполнения руководства понадобится три сервера Ubuntu 12.04 x86_64.

1: Установка сервера Chef

Для начала нужно установить сервер Chef. Поскольку эта машина является ведущей, остальные машины кластера должны иметь к ней доступ.

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

Если у вас нет доменного имени, отредактируйте файл /etc/hosts на каждом сервере кластера, чтобы они разрешали имя сервера Chef.

Примечание: Если у вас есть домен, сделайте это только на сервере Chef, файлы на остальных нодах не нужно редактировать.

sudo nano /etc/hosts

Добавьте IP-адрес сервера, домен, а затем его короткое имя:

111.222.333.444     chef.domain.com   chef

Примечание: Вместо 111.222.333.444 укажите свой IP-адрес.

Чтобы убедиться, что всё работает, введите:

hostname -f

Команда вернёт краткое имя сервера.

Загрузить пакет сервера Chef можно по этой ссылке.

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

Скопируйте ссылку на deb-файл, кликнув правой кнопкой и выбрав copy link location.

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

cd ~
wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chef-server_11.0.10-1.ubuntu.12.04_amd64.deb

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

sudo dpkg -i chef-server*

Теперь пакет Chef Server установлен на ведущую машину кластера. После этого вам будет предложено запустить команду, которая автоматически настроит сервис на этой машине:

sudo chef-server-ctl reconfigure

Теперь сервер запущен. Вы можете получить доступ к интерфейсу по ссылке:

https://server_domain_or_IP

Если вы используете самоподписанный сертификат SSL, браузер выдаст предупреждение:

The site’s security certificate is not trusted!

Это потому, что сертификат не подписан центром, которому доверяет браузер. Нажмите Proceed anyway, чтобы продолжить. На экране появится форма входа.

Введите учётные данные по умолчанию:

Username: admin
Password: p@ssw0rd1

После этого программа сразу предложит вам изменить пароль. Выберите новый пароль и нажмите кнопку Save User.

2: Установка рабочей станции Chef

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

Для начала установите git:

sudo apt-get update
sudo apt-get install git

Система контроля версий git позволяет не только отслеживать изменения в конфигурационных файлах, но и временно кэшировать пароль.

Загрузите и запустите установочный скрипт с сайта Chef:

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

Установка рабочей станции Chef завершена.

Теперь нужно получить структуру каталогов chef-repo из отформатированного репозитория Chef на GitHub. Клонируйте структуру в домашний каталог:

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

В домашнем каталоге появится каталог chef-repo, который содержит конфигурации всей установки.

Создайте конфигурационный каталог для инструментов Chef:

mkdir -p ~/chef-repo/.chef

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

Генерирование и копирование ключей

Вернитесь на сервер Chef в браузере:

https://server_domain_or_IP

Войдите как пользователь admin.

Откройте вкладку Clients в верхнем меню. Вы увидите список, состоящий из двух клиентов:

Name
chef-validator                                  Edit| Delete
chef-webui                                      Edit| Delete

Нажмите Edit рядом с клиентом chef-validator. Сгенерируйте закрытый ключ (поставьте галочку в поле Regenerate private key) и нажмите Save Client.

На экране появится новый ключ.

Примечание: Доступ к этому ключу можно получить только раз. Если вы перейдёте на другую страницу, вам придётся генерировать ключ повторно.

Скопируйте значение из поля Private Key.

Перейдите на рабочую станцию, откройте конфигурационный каталог Chef:

cd ~/chef-repo/.chef

Создайте новый файл для ключа клиента validator:

nano chef-validator.pem

Добавьте в файл скопированный ключ, например:

-—-BEGIN RSA PRIVATE KEY—–
MIIEowIBAAKCAQEA6Np8f3J3M4NkA4J+r144P4z27B7O0htfXmPOjvQa2avkzWwx
oP28SjUkU/pZD5jTWxsIlRjXgDNdtLwtHYABT+9Q5xiTQ37s+eeJgykQIifED23C
aDi1cFXOp/ysBXaGwjvl5ZBCZkQGRG4NIuL7taPMsVTqM41MRgbAcLCdl5g7Vkri
. . .
. . .
xGjoTVH1vBAJ7BG1RHJZlx+T9QnrK+fQu5R9mikkLHayxi13mD0C
—–END RSA PRIVATE KEY—–

Убедитесь, что в файле (до и после ключа) нет пустых строк. Сохраните и закройте файл.

Повторите процедуру, чтобы сгенерировать и сохранить ключ администратора. Откройте вкладку Users, нажмите Edit рядом с пользователем admin, поставьте галочку в Regenerate Private Key и нажмите Save User.

Скопируйте закрытый ключ.

Примечание: Доступ к этому ключу можно получить только раз. Если вы перейдёте на другую страницу, вам придётся генерировать ключ повторно.

Вернитесь на рабочую станцию, создайте файл для ключа администратора:

nano admin.pem

Вставьте скопированный ключ:

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA/apu0+F5bkVtX6qGYcfoA6sIW/aLFUEc3Bw7ltb50GoZnUPj
0Ms1N1Rv/pdVZXeBa8KsqICAhAzvwSr0H9j+AoURidbkLv4urVC9VS4dZyIRfwvq
PGvAKop9bbY2WJMs23SiEkurEDyfKaqXKW687taJ9AKbH2yVx0ArPI2RwS3Sze3g
. . .
. . .
VTkNpg3lLRSGbQkvRUP6Kt20erS2bfETTtH6ok/zW4db8B/vnBlcZg==
-----END RSA PRIVATE KEY-----

Убедитесь, что в файле (до и после ключа) нет пустых строк. Сохраните и закройте файл.

Настройка knife

Теперь нужно настроить команду knife. Эта команда – основной способ общения с сервером и нодами. Настройте её для аутентификации и генерирования пользователей для доступа к серверу Chef.

Чтобы начать настройку, введите:

knife configure --initial

Эта команда задаст ряд вопросов.

WARNING: No knife configuration file found
Where should I put the config file? [/home/your_user/.chef/knife.rb]

Значение в квадратных скобках – это стандартное значение, которое будет использовать knife, если не указано другое.

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

/home/your_user/chef-repo/.chef/knife.rb

Далее программа предложит ввести домен или IP сервера Chef (начитается с https:// и заканчивается на :443):

https://server_domain_or_IP:443

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

Please enter a name for the new user: [root] station1

Затем будет запрошено имя администратора. Тут можно просто нажать enter, чтобы принять значение по умолчанию.

Примечание: Если вы изменили стандартное имя admin, укажите здесь новое имя.

После этого программа запросит местонахождение ключа администратора:

/home/your_user/chef-repo/.chef/admin.pem

Далее нужно ответить на такие же вопросы о клиенте chef-validator. Чтобы принять имя, просто нажмите enter; укажите местонахождение ключа:

/home/your_user/chef-repo/.chef/chef-validator.pem

Потом программа запросит путь к репозиторию. Это каталог chef-repo.

/home/your_user/chef-repo

В завершение будет предложено выбрать пароль для нового пользователя. Выберите и введите надёжный пароль.

Настройка knife завершена. Откройте каталог chef-repo/.chef и найдите конфигурационный файл knife. В нем можно найти учётные данные нового пользователя.

ls ~/chef-repo/.chef
admin.pem  chef-validator.pem  knife.rb  station1.pem

Чистка и тестирование рабочей станции

Настройка рабочей станции почти завершена.

Теперь нужно настроить контроль версий для репозитория Chef.

Добавьте имя и адрес электронной почты в настройки git:

git config --global user.email "your_email@domain.com"
git config --global user.name "Your Name"

Структура каталогов chef-repo уже использует контроль версий git, поскольку она была загружена с GitHub. Однако контроль версий нужно перенастроить, поскольку в репозитории хранятся закрытые ключи. Добавьте этот каталог в файл .gitignore.

nano ~/chef-repo/.gitignore

В конце файла введите .chef, чтобы исключить этот каталог из контроля версий.

.rake_test_cache
###
# Ignore Chef key files and secrets
###
.chef/*.pem
.chef/encrypted_data_bag_secret
.chef

Сохраните и закройте файл.

Теперь можно создать коммит о текущем состоянии (хотя ничего, кроме файла .gitignore, не изменилось).

git add .
git commit -m 'Finish configuring station1'

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

Отредактируйте путь в конце файла .bash_profile. Введите:

echo 'export PATH="/opt/chef/embedded/bin:$PATH"' >> ~/.bash_profile

Чтобы обновить настройки, введите:

source ~/.bash_profile

Теперь убедитесь, что можете создать подключение к серверу Chef. Запросите информацию с помощью команды knife.

Эта команда вернёт список пользователей:

knife user list
admin
station1

Если на экране появился список, значит, всё работает должным образом.

3: Установка клиентской ноды

Теперь осталось только запустить клиентскую ноду.

Для начала нужно установить пакет Chef client. Этот пакет взаимодействует с сервером, получает и выполняет его указания относительно настройки ноды.

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

  • IP-адрес или домен.
  • Имя пользователя (доступного по SSH и с правами sudo).
  • Пароль.

Зная эти данные, вы можете установить соответствующие пакеты с помощью knife с рабочей станции.

Введите команду:

knife bootstrap node_domain_or_IP -x username -P password -N name_for_node --sudo

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

Если указанный пользователь не является root, флаг –sudo предоставит все необходимые права для запуска клиента на удалённом сервере. При этом будет запрошен пароль.

Вместо name_for_node нужно ввести имя, по которому в дальнейшем вы можете ссылаться на неё.

После запуска команды на удалённой ноде запустится клиентское ПО. Сервер и клиент Chef смогут взаимодействовать.

Запросите список клиентов:

knife client list
chef-validator
chef-webui
client1

По этой же схеме вы можете добавить больше нод в инфраструктуру Chef.

Заключение

Теперь у вас есть готовая к работе инфраструктура Chef.

Читайте также:

Tags: ,

Добавить комментарий