Гид по технологиям

Установка Chef Server на Ubuntu 17.04 (Zesty Zapus)

7 min read DevOps Обновлено 08 Oct 2025
Установка Chef Server на Ubuntu 17.04
Установка Chef Server на Ubuntu 17.04

Введение

Chef — это свободный инструмент управления конфигурацией с открытым исходным кодом, написанный на Ruby и Erlang. Он позволяет централизованно управлять многими узлами (nodes) и легко интегрируется с облачными платформами (AWS, OpenStack и др.). Этот материал описывает установку Chef Server на Ubuntu 17.04 (Zesty Zapus) и даёт практические советы по настройке и проверке работоспособности.

Краткое определение: Chef Server — центральный компонент, который хранит политические документы, cookbooks, роли и управляет узлами.

Что вам понадобится

  • Минимальная установка Ubuntu 17.04.
  • Права root. Если вы используете sudo-пользователя, выполните sudo -i.
  • Доменное имя, указывающее на сервер (рекомендуется FQDN).

Important: Chef требует корректного обратимого FQDN и синхронизированного времени — без этого возможны ошибки аутентификации и проблем с сертификатами.

Обновление базовой системы

Перед установкой пакетов обновите репозитории и пакеты:

apt update && apt -y upgrade

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

Установка и проверка FQDN (hostname)

Chef требует разрешаемое полное доменное имя (FQDN), например chef.example.com. Установка корректного hostname — критичный шаг.

Установите hostname временно:

hostname 'chef.yourdomain.com'

Запишите постоянный hostname в /etc/hostname:

echo "chef.yourdomain.com" | tee /etc/hostname

Добавьте запись в /etc/hosts (пример):

echo "192.168.1.1 chef.yourdomain.com" >> /etc/hosts

Замените 192.168.1.1 на ваш публичный IP или частный IP сервера в сети. После изменения проверьте:

hostname --fqdn

Ожидаемый результат — ваше FQDN.

Настройка NTP (синхронизация времени)

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

Установка:

apt install ntp

Запуск и автоматическое включение:

systemctl start ntp
systemctl enable ntp

Проверка синхронизации:

ntpq -p

Пример вывода показан ниже (этот пример может отличаться в вашей среде):

root@chef:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
#hydrogen.consta 129.6.15.29      2 u   34   64   17  174.427   -9.145   0.751
#helium.constant 128.59.0.245     2 u   30   64   17  176.812   -8.253   0.726
#lithium.constan 18.26.4.105      2 u   33   64   17  175.435    0.357   0.684
#ntppublic.uzh.c 130.60.159.8     3 u   24   64   17  256.712    8.982   0.927
+x.ns.gin.ntt.ne 249.224.99.213   2 u   25   64   17    0.872   -1.636   0.805
-borris.netwurx. 144.92.9.22      2 u   22   64   17  163.284    0.848   1.141
-ns1.do.steersne 195.66.241.3     2 u   23   64   17  222.882   -3.528   0.965
-sircabirus.von- 36.224.68.195    2 u   28   64   17  266.005    3.502   1.173
*chobi.paina.net 131.113.192.40   2 u   26   64   17    1.280   -1.852   1.046
#213.251.53.11   193.62.22.74     2 u   27   64   17  246.940    9.920   1.405
-flightplandatab 210.240.96.206   2 u   27   64   17  258.052   -1.338   2.789
-time.platformni 118.211.218.186  2 u   27   64   17    1.592    3.394   1.127

Notes: Если у вас контейнерная или виртуализированная среда с собственной синхронизацией времени, настройте NTP клиента соответствующим образом.

Загрузка и установка Chef Server

Скачайте пакет Chef Server для Ubuntu. В данном примере используется версия 12.15.8 для Ubuntu 16.04 (Chef Server пакеты иногда используют каталоги по версии Ubuntu):

wget https://packages.chef.io/files/stable/chef-server/12.15.8/ubuntu/16.04/chef-server-core_12.15.8-1_amd64.deb

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

Установите пакет:

dpkg -i chef-server-*.deb

После установки пакетных файлов нужно настроить и запустить службы Chef.

Первичная конфигурация Chef Server

Запустите автоматическую конфигурацию всех компонентов:

chef-server-ctl reconfigure

Это займёт несколько минут. В конце вы должны увидеть сообщение вроде:

Chef Client finished, 491/1096 resources updated in 03 minutes 13 seconds
Chef Server Reconfigured!

Проверка статуса служб:

chef-server-ctl status

Пример ожидаемого вывода (службы могут отличаться по PID и времени):

root@chef:~# chef-server-ctl status
run: bookshelf: (pid 6030) 87s; run: log: (pid 6047) 86s
run: nginx: (pid 5859) 91s; run: log: (pid 6387) 82s
run: oc_bifrost: (pid 5766) 92s; run: log: (pid 5842) 92s
run: oc_id: (pid 5849) 91s; run: log: (pid 5854) 91s
run: opscode-erchef: (pid 6244) 84s; run: log: (pid 6108) 85s
run: opscode-expander: (pid 5926) 88s; run: log: (pid 6010) 87s
run: opscode-solr4: (pid 5895) 89s; run: log: (pid 5912) 89s
run: postgresql: (pid 5718) 93s; run: log: (pid 5745) 92s
run: rabbitmq: (pid 5239) 101s; run: log: (pid 5099) 105s
run: redis_lb: (pid 5036) 121s; run: log: (pid 6361) 83s

Если какая-либо служба не запустилась, проверьте логи в /var/log/chef-server или используйте chef-server-ctl tail для потоковой проверки логов.

Установка веб-консоли управления (Chef Manage)

Chef Manage — это веб-интерфейс для управления Cookbooks, Data Bags, ролями, средами и т.д.

Установка:

chef-server-ctl install chef-manage
chef-server-ctl reconfigure

Затем настройте саму консоль:

chef-manage-ctl reconfigure

Во время первого запуска будет предложено принять лицензионное соглашение. Можно принять автоматически:

chef-manage-ctl reconfigure --accept-license

После успешной настройки веб-интерфейс будет доступен по IP или FQDN сервера (см. раздел “Доступ к веб-консоли”).

Создание администратора и организации

Для входа в веб-консоль и подключения рабочих станций требуется создать административного пользователя и организацию. При создании генерируются RSA-ключи (файлы .pem) — сохраните их в безопасном месте.

Создайте каталог для ключей:

mkdir ~/.chef

Создайте администратора (пример):

chef-server-ctl user-create admin Chef Administrator [email protected] StrongPassword -f ~/.chef/admin.pem

Пояснения: замените admin, Chef, Administrator, [email protected] и StrongPassword на ваши значения. Файл ~/.chef/admin.pem будет содержать приватный ключ.

Создайте организацию:

chef-server-ctl org-create my_org 'My Organization' --association_user admin -f ~/.chef/my_org.pem

Замените my_org и ‘My Organization’ на короткое имя и полное название вашей организации; admin — имя администратора, созданного ранее.

Важно: приватные ключи (.pem) — единственный способ аутентификации рабочих станций; храните их в защищённом месте и делайте бэкапы.

Доступ к веб-консоли

Откройте браузер и перейдите по адресу:

http://Your-Server-IP

Или используйте ваше доменное имя, например http://chef.yourdomain.com. На странице входа используйте созданные имя пользователя и пароль.

Экран входа Chef

Подсказка: если вы установили HTTPS/SSL позже, используйте https:// и проверьте сертификаты.

Интерфейс Chef Dashboard

Установка дополнительных плагинов (опционально)

Отчётность (Reporting) — позволяет собирать и просматривать данные о выполнении chef-client на узлах.

chef-server-ctl install opscode-reporting
chef-server-ctl reconfigure
opscode-reporting-ctl reconfigure
opscode-reporting-ctl test

Push Jobs — позволяет запускать задания на узлах вне обычного цикла chef-client:

chef-server-ctl install opscode-push-jobs-server
chef-server-ctl reconfigure
opscode-push-jobs-server-ctl reconfigure

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

Технические рекомендации и безопасность

  • Ограничьте доступ к портам управления через брандмауэр (ufw, iptables). По умолчанию веб-интерфейс использует HTTP/HTTPS (80/443) — в продакшне включайте HTTPS.
  • Храните приватные ключи (.pem) и резервные копии конфигураций в защищённом хранилище.
  • Обновляйте Chef Server и плагины по политике обновлений вашей организации; тестируйте в staging перед production.
  • Настройте мониторинг служб (nginx, postgresql, rabbitmq, redis, erchef) и алерты при падении.

Security hardening (рекомендации):

  • Используйте TLS для веб-консоли и API.
  • Ограничьте доступ к администраторским аккаунтам и применяйте сильные пароли.
  • Минимизируйте список пользователей, обладающих правами создания организаций и политик.

Трублешутинг (частые проблемы)

  1. После reconfigure некоторые службы не запускаются — проверьте логи:
chef-server-ctl tail
  1. Проблемы с FQDN — убедитесь, что hostname возвращает правильный FQDN и запись в /etc/hosts корректна.

  2. Ошибки аутентификации — проверьте время на сервере (NTP) и корректность приватных ключей .pem.

  3. Ошибки при установке плагинов — посмотрите вывод reconfigure и используйте системные логи (journalctl) для диагностики.

Критерии приёмки

  • chef-server-ctl status показывает все ключевые службы в состоянии run.
  • Веб-консоль доступна по FQDN и позволяет войти под созданным админом.
  • Созданная организация присутствует, и сохранён файл my_org.pem.
  • NTP синхронизирован (ntpq -p показывает источники и не пустой reach).

Ролевые чек-листы

  • Системный администратор:

    • Установил пакеты и настроил FQDN.
    • Настроил NTP и убедился в синхронизации.
    • Установил Chef Server и выполнил reconfigure.
    • Проверил статус служб и логи.
  • DevOps/Платформенная команда:

    • Создала организацию и администратора.
    • Настроила веб-консоль и права доступа.
    • Добавила ключи в защищённое хранилище.
  • Безопасность/инфопротект:

    • Проверила настройки TLS для веб-интерфейса.
    • Проверила политику хранения приватных ключей.

Мини-методология развёртывания (быстрая схема)

  1. Подготовка сервера: обновление, FQDN, NTP.
  2. Установка пакета Chef Server (.deb).
  3. Выполнение chef-server-ctl reconfigure.
  4. Установка и настройка chef-manage (веб-консоли).
  5. Создание администратора и организации, сохранение .pem файлов.
  6. Установка опциональных плагинов и тестирование.

Короткий глоссарий (1 строка)

  • Chef Server — центральный сервер для хранения политик и cookbooks.
  • Workstation — машина разработчика/администратора с инструментами Chef (knife).
  • Node — управляемый сервер/узел, подключаемый к Chef Server.
  • Cookbooks — набор рецептов и файлов для управления конфигурацией.

Факт-бокс

  • Требование: корректный FQDN и синхронизированное время.
  • Ключевые команды: chef-server-ctl reconfigure, chef-server-ctl status, chef-manage-ctl reconfigure.
  • Файлы: ~/.chef/*.pem — приватные ключи для администратора и организации.

Когда этот подход не подходит (контрпримеры)

  • Если вы хотите очень лёгкий конфигурационный инструмент для локальных рабочих станций — возможно, Chef Server избыточен; рассмотрите Ansible или simple scripts.
  • В серверless-ориентированных средах с минимальным количеством узлов централизованный Chef Server может быть избыточен.

Альтернативные варианты

  • Chef Solo / Chef Zero — использовать без централизованного сервера для простых сценариев.
  • Ansible — агентless решение, проще в развёртывании для небольших инфраструктур.

FAQ

Q: Можно ли использовать Ubuntu 18.04/20.04 вместо 17.04? A: Да, Chef поддерживает разные версии Ubuntu, но скачивайте пакет, соответствующий вашей версии ОС и архитектуре.

Q: Что делать, если reconfigure зависает? A: Проверяйте логи chef-server-ctl tail и системные логи (journalctl). Убедитесь, что хватает оперативной памяти и дискового пространства.

Q: Как восстановить приватный ключ .pem, если он потерян? A: Если приватный ключ утерян, создайте нового пользователя-администратора и заново ассоциируйте организацию; для существующих клиентов может потребоваться повторная регистрация.

Резюме

Вы установили Chef Server, настроили FQDN и NTP, выполнили reconfigure, установили веб-консоль и создали администратора и организацию. Далее: подключите рабочие станции (knife), настройте cookbooks и протестируйте run-list на тестовых нодах перед внедрением в production.

Короткие рекомендации: всегда держите приватные ключи в безопасном месте, тестируйте обновления в staging и следите за синхронизацией времени.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как включить Roku TV без пульта
Руководство

Как включить Roku TV без пульта

App Pairs на Android: как сохранить пары приложений
Android.

App Pairs на Android: как сохранить пары приложений

Google Docs: помощник по письму — функции и советы
Инструменты

Google Docs: помощник по письму — функции и советы

Перенос файлов Google Drive в другой аккаунт
Облако

Перенос файлов Google Drive в другой аккаунт

Как изменить язык Paint 3D в Windows 10
Windows

Как изменить язык Paint 3D в Windows 10

Резервная копия сохранений Animal Crossing
Игры

Резервная копия сохранений Animal Crossing