Chef – это мощное программное обеспечение для автоматизации в Debian Linux, предназначенное для управления и конфигурирования крупномасштабных серверных сред. Оно облегчает развёртывание, конфигурирование и управление приложениями и инфраструктурой с помощью кода, продвигая принципы инфраструктуры как кода (IaC). Chef использует язык домена (DSL), написанный на Ruby, для определения “рецептов” и “поваренных книг”, которые определяют, как должны быть сконфигурированы серверы. Это позволяет системным администраторам и командам DevOps автоматизировать повторяющиеся задачи, обеспечивать согласованность в разных средах и легко масштабировать инфраструктуру. Chef поддерживает широкий спектр ресурсов и интеграций, что делает его универсальным инструментом для управления сложными средами на Debian, Ubuntu Linux и других платформах.
В этом руководстве мы покажем вам, как шаг за шагом установить Chef Server и Chef Workstation на серверы Debian 12.
Предварительные условия
Чтобы выполнить это руководство, убедитесь, что у вас есть следующее:
- 3 сервера Debian 12.
- Некорневой пользователь с правами администратора.
Настройка FQDN
В этом первом шаге вы настроите FQDN (полное доменное имя) для сервера Chef, рабочей станции Chef и клиента.
Выполните следующие действия hostnamectl команда для настройки fqdn для каждого сервера.
sudo hostnamectl set-hostname chef.local sudo hostnamectl set-hostname workstation.local sudo hostnamectl set-hostname client.local
Откройте /etc/hosts файл на каждом сервере с помощью следующей команды редактора nano.
sudo nano /etc/hosts
Вставьте следующую конфигурацию и не забудьте изменить подробный IP-адрес, имя хоста и fqdn на свои настройки.
192.168.5.15 chef.local chef 192.168.5.20 workstation.local workstation 192.168.5.21 client.local client
После завершения работы сохраните и закройте файл.
Теперь выполните приведенную ниже команду, чтобы убедиться, что каждый fqdn указывает на правильный IP-адрес сервера.
sudo hostname -f ping -c3 chef.local
Синхронизация времени между серверами
После настройки FQDN необходимо убедиться, что время на каждом сервере синхронизировано. В этом случае вы настроите NTP-сервер на сервере Chef Server и настроите рабочую станцию и клиент Chef для подключения к нему.
Настройка Chrony на сервере Chef
На сервере Chef выполните следующую команду, чтобы обновить индекс пакетов в репозитории и установить пакет Chrony.
sudo apt update sudo apt install chrony -y
После установки Chrony откройте файл /etc/chrony/chrony.conf с помощью следующей команды редактора nano.
sudo nano /etc/chrony/chrony.conf
Вставьте следующую конфигурацию, чтобы установить сервер NTP по умолчанию. Обязательно выберите ближайшее расположение вашего сервера, подробности смотрите на сайте ntp.org.
Кроме того, вы настроите Chrony внутри сервера Chef в качестве NTP-сервера для рабочей станции Chef и клиентов.
pool 0.nl.pool.ntp.org iburst pool 1.nl.pool.ntp.org iburst pool 2.nl.pool.ntp.org iburst pool 3.nl.pool.ntp.org iburst
allow 192.168.5.0/24
После завершения работы сохраните и закройте файл.
Далее выполните следующую команду, чтобы установить часовой пояс по умолчанию и включить NTP.
sudo timedatectl set-timezone Europe/Amsterdam sudo timedatectl set-ntp true
Затем перезапустите службу chrony, чтобы применить изменения.
sudo systemctl restart chrony
Наконец, проверьте источник NTP с помощью следующей команды.
chronyc sources
Вы должны получить результат, подобный следующему:
На рабочей станции и клиенте Chef
Теперь перейдите на рабочую станцию Chef и клиентскую машину. Затем выполните следующую команду, чтобы обновить репозиторий и установить Chrnoy на оба сервера.
sudo apt update sudo apt install chrony -y
После этого измените конфигурацию Chrony /etc/chrony/chrony.conf с помощью следующей команды редактора nano.
sudo nano /etc/chrony/chrony.conf
Закомментируйте источник NTP по умолчанию, чтобы отключить его, затем введите IP-адрес сервера Chef в качестве сервера NTP, как показано ниже.
# default chrony server 192.168.5.15 iburst
Сохраните и закройте файл после завершения.
Далее выполните следующую команду, чтобы установить часовой пояс по умолчанию и включить NTP.
sudo timedatectl set-timezone Europe/Amsterdam sudo timedatectl set-ntp true
Затем перезапустите службу Chrony, чтобы применить изменения.
sudo systemctl restart chrony
Наконец, проверьте источники NTP на рабочей станции Chef и клиенте с помощью следующей команды.
chronyc sources
Вы должны увидеть, что источником NTP по умолчанию как для рабочей станции Chef, так и для клиента является сервер Chef, IP-адрес которого 192.168.5.15.
Установка и настройка Chef Server
Теперь, когда вы настроили FQDN и синхронизировали время на серверах, вы готовы к установке Chef. Сначала вы установите и настроите Chef Server.
Chef Server – это центральная экосистема Chef, которая соединяет все части, поэтому сначала вы должны настроить его. В данном случае мы будем использовать Chef Server с 8 ГБ оперативной памяти.
Установка Chef Server через DEB
Перейдите на сервер Chef и выполните приведенную ниже команду, чтобы загрузить пакет сервера Chef. В этом примере вы будете использовать Chef 15.
VERSION="15.7.0" wget https://packages.chef.io/files/stable/chef-server/${VERSION}/ubuntu/22.04/chef-server-core_${VERSION}-1_amd64.deb
Теперь установите сервер Chef через .deb-файл с помощью команды ниже. Установка займет несколько минут.
sudo apt install ./chef-server-core_*.deb
После завершения установки вы должны получить подтверждение ‘Спасибо за установку Chef Infra Server‘.
Затем выполните приведенную ниже команду chef-server-ctl, чтобы перенастроить установку Chef Server.
sudo chef-server-ctl reconfigure
В ответ на запрос введите Y, чтобы подтвердить лицензию Chef.
Начнется инициализация сервера Chef. После завершения вы должны получить подтверждение типа ‘Chef Infra Server Reconfigured‘.
Настройка пользователей и организаций
Теперь, когда вы изменили конфигурацию Chef Server, вам нужно настроить пользователей и организации на вашей установке Chef Server.
Создайте новый каталог ~/.chef с помощью следующей команды.
mkdir -p ~/.chef
Затем создайте нового пользователя Chef с помощью следующей команды. В этом примере мы создадим нового пользователя alice с паролем, и сертификат TLS будет храниться по адресу ~/.chef/alice.pem.
sudo chef-server-ctl user-create alice Alice Wonderland [email protected] 'password' --filename ~/.chef/alice.pem
Теперь создайте новую организацию с помощью приведенной ниже команды. Обязательно измените имя организации, связанного с ней пользователя и путь к сертификату TLS.
sudo chef-server-ctl org-create hworgz 'HW Corp, Inc.' --association_user alice --filename ~/.chef/hworgz-validator.pem
Когда все будет готово, проверьте пользователя и организацию в списке на сервере Chef, используя приведенную ниже команду.
sudo chef-server-ctl user-list sudo chef-server-ctl org-list
Если все прошло успешно, вы должны увидеть сервер Chef с пользователем alice и организация hworgz например, следующее.
Кроме того, вы можете проверить сгенерированные TLS-сертификаты с помощью команды, приведенной ниже. Вы должны увидеть alice.pem и hworgz-validator.pem сертификаты.
ls ~/.chef/
На этом установка Chef Server завершена.
Установка и настройка Chef Workstation
После установки сервера Chef Server необходимо установить рабочую станцию Chef. Рабочая станция Chef – это узел, который администраторы/пользователи используют для создания и тестирования кулинарных книг и рецептов.
В этом примере вы установите рабочую станцию Chef на сервер Debian 12 с 2 ГБ оперативной памяти.
Установка рабочей станции Chef через DEB
Перейдите на рабочую станцию Chef и выполните приведенную ниже команду для загрузки пакета Chef Workstation с помощью команды wget. В данном случае вы установите Chef Workstation 23.
VERSION="23.7.1042" wget https://packages.chef.io/files/stable/chef-workstation/${VERSION}/debian/11/chef-workstation_${VERSION}-1_amd64.deb
После загрузки выполните следующую команду для установки пакета рабочей станции Chef в вашу систему.
sudo apt install ./chef-workstation_*.deb
После завершения вы должны получить подтверждение ‘Спасибо за установку Chef Workstation‘.
И наконец, выполните приведенную ниже команду, чтобы проверить версию Chef.
chef -v
Следующий вывод подтверждает, что вы установили Chef 23 на ваш сервер Debian.
Настройка рабочей станции Chef
Теперь, когда вы установили рабочую станцию Chef, вам нужно настроить ее.
Сначала сгенерируйте новый SSH-ключ с помощью следующей команды. Введите, когда появится запрос ro, кодовую фразу для ключа.
ssh-keygen -t ed25519
Теперь выполните приведенную ниже команду, чтобы загрузить ключ на сервер Chef Server chef.local. Это будет использоваться для получения сертификатов TLS с сервера Chef на рабочую станцию.
ssh-copy-id [email protected]
Введите пароль, когда вас об этом попросят.
Затем создайте новое репо Chef с помощью команды ниже. В этом примере вы создадите новое репо Chef test-repo.
chef generate repo test-repo
Теперь создайте новую директорию ~/test-repo/.chef и перейдите в нее.
mkdir ~/test-repo/.chef; cd ~/test-repo/.chef
Скопируйте сертификаты TLS с сервера Chef на рабочую станцию в текущую директорию с помощью следующей команды.
scp [email protected]:~/.chef/*.pem .
После завершения проверьте список файлов в каталоге ~/test-repo/.chef каталог.
ls ~/test-repo/.chef/
Убедитесь, что сертификаты TLS доступны на сервере рабочей станции Chef.
Настройка Knife Utility – интерфейса для Chef Server
Теперь, когда вы установили рабочую станцию Chef, вам нужно настроить Knife на рабочей станции Chef. Нож – это инструмент командной строки для взаимодействия с сервером Chef, который позволяет управлять узлами, книгами рецептов, рецептами, ролями и окружениями.
На машине рабочей станции Chef перейдите в раздел ~/test-repo/.chef каталог и создайте новый файл knife.rb с помощью следующей команды редактора nano.
cd ~/test-repo/.chef nano knife.rb
Вставьте следующий Ruby-скрипт и не забудьте изменить данные о пользователе, организациях, файлах сертификата TLS и URL-адресе Chef-сервера.
current_dir = File.dirname(__FILE__) log_level :info log_location STDOUT node_name 'alice' client_key "alice.pem" validation_client_name 'hworgz-validator' validation_key "hworgz-validator.pem" chef_server_url 'https://chef.local/organizations/hworgz' cache_type 'BasicFile' cache_options( :path => "#{ENV['HOME']}/.chef/checksums" ) cookbook_path ["#{current_dir}/../cookbooks"]
После завершения работы сохраните и закройте файл.
Теперь перейдите к ~/test-repo каталог и получите сертификаты с сервера Chef Server с помощью приведенной ниже команды knife.
cd ~/test-repo knife ssl fetch
После завершения вы должны получить следующий результат.
Теперь вы можете использовать нож для связи с сервером Chef Server и клиентской машиной bootstrap.
knife client list
Бутстрапирование клиента/узла из рабочей станции Chef
В следующем разделе вы узнаете, как использовать Knife для автоматической загрузки узла 192.168.5.21 по SSH с рабочей станции Chef.
Сначала перейдите в раздел ~/test-repo/.chef каталог.
cd ~/test-repo/.chef
Выполните приведенную ниже команду knife для загрузки клиента 192.168.5.21. Не забудьте изменить пользователя root и пароль пароль с вашей информацией.
В этом примере вы добавите узел 192.168.5.21 и назовете его как клиент.
knife bootstrap 192.168.5.21 -U root -P password --node-name client
Введите Y, чтобы продолжить и продолжить процесс.
После завершения вы должны получить подтверждение ‘Инфрафаза завершена‘.
Теперь проверьте список доступных узлов в среде Chef с помощью команды ниже. Если все прошло успешно, вы должны увидеть, что клиентский узел доступен.
knife node list
Затем проверьте данные клиентского узла с помощью команды knife, приведенной ниже.
knife node show client
В следующем выводе вы можете увидеть клиентский узел Debian 12 с FQDN client.local.
Наконец, теперь вы можете выполнять произвольные команды на клиентском узле с помощью команды knife, приведенной ниже.
knife ssh "client" "whoami;top" -u alice
Введите пароль для пользователя Chef alice при появлении запроса. Если команда выполнена успешно, вы должны получить следующее сообщение.
Заключение
Поздравляем! Вы завершили установку сервера Chef и рабочей станции на серверы Debian 12. Вы также научились использовать инструмент командной строки Knife для загрузки клиентских узлов через SSH. Теперь вы можете добавлять новые клиентские узлы и настраивать поваренные книги и рецепты для установки приложений.