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

Установка 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
Автор
Редакция

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

Вернуть значок «Параметры» в меню «Пуск» Windows
Windows

Вернуть значок «Параметры» в меню «Пуск» Windows

Настроить полосы прокрутки в Windows 10 и 11
Windows

Настроить полосы прокрутки в Windows 10 и 11

Автоматические обновления безопасности Ubuntu 16.04
DevOps

Автоматические обновления безопасности Ubuntu 16.04

Ограничение разрешений приложений Android
Безопасность

Ограничение разрешений приложений Android

Установка Chef Server на Ubuntu 17.04
DevOps

Установка Chef Server на Ubuntu 17.04

Как исправить ошибку Microsoft Teams 500
Техподдержка

Как исправить ошибку Microsoft Teams 500