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

Введение
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. На странице входа используйте созданные имя пользователя и пароль.
Подсказка: если вы установили HTTPS/SSL позже, используйте https:// и проверьте сертификаты.
Установка дополнительных плагинов (опционально)
Отчётность (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.
- Ограничьте доступ к администраторским аккаунтам и применяйте сильные пароли.
- Минимизируйте список пользователей, обладающих правами создания организаций и политик.
Трублешутинг (частые проблемы)
- После reconfigure некоторые службы не запускаются — проверьте логи:
chef-server-ctl tail
Проблемы с FQDN — убедитесь, что hostname возвращает правильный FQDN и запись в /etc/hosts корректна.
Ошибки аутентификации — проверьте время на сервере (NTP) и корректность приватных ключей .pem.
Ошибки при установке плагинов — посмотрите вывод reconfigure и используйте системные логи (journalctl) для диагностики.
Критерии приёмки
- chef-server-ctl status показывает все ключевые службы в состоянии run.
- Веб-консоль доступна по FQDN и позволяет войти под созданным админом.
- Созданная организация присутствует, и сохранён файл my_org.pem.
- NTP синхронизирован (ntpq -p показывает источники и не пустой reach).
Ролевые чек-листы
Системный администратор:
- Установил пакеты и настроил FQDN.
- Настроил NTP и убедился в синхронизации.
- Установил Chef Server и выполнил reconfigure.
- Проверил статус служб и логи.
DevOps/Платформенная команда:
- Создала организацию и администратора.
- Настроила веб-консоль и права доступа.
- Добавила ключи в защищённое хранилище.
Безопасность/инфопротект:
- Проверила настройки TLS для веб-интерфейса.
- Проверила политику хранения приватных ключей.
Мини-методология развёртывания (быстрая схема)
- Подготовка сервера: обновление, FQDN, NTP.
- Установка пакета Chef Server (.deb).
- Выполнение chef-server-ctl reconfigure.
- Установка и настройка chef-manage (веб-консоли).
- Создание администратора и организации, сохранение .pem файлов.
- Установка опциональных плагинов и тестирование.
Короткий глоссарий (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 и следите за синхронизацией времени.
Похожие материалы

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

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

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

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

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