Как установить сервер Chef Infra на Debian 12

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

Синхронизация времени между серверами

После настройки FQDN необходимо убедиться, что время на каждом сервере синхронизировано. В этом случае вы настроите NTP-сервер на сервере Chef Server и настроите рабочую станцию и клиент Chef для подключения к нему.

Настройка Chrony на сервере Chef

На сервере Chef выполните следующую команду, чтобы обновить индекс пакетов в репозитории и установить пакет Chrony.

sudo apt update
sudo apt install chrony -y

установить chrony

После установки 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

Вы должны получить результат, подобный следующему:

настроить chrony

На рабочей станции и клиенте 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.

настройка клиента рабочей станции chrony chef

Установка и настройка 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

Затем выполните приведенную ниже команду chef-server-ctl, чтобы перенастроить установку Chef Server.

sudo chef-server-ctl reconfigure

В ответ на запрос введите Y, чтобы подтвердить лицензию Chef.

переконфигурировать сервер 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.

chef -v

Следующий вывод подтверждает, что вы установили Chef 23 на ваш сервер Debian.

проверить версию chef

Настройка рабочей станции Chef

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

Сначала сгенерируйте новый SSH-ключ с помощью следующей команды. Введите, когда появится запрос ro, кодовую фразу для ключа.

ssh-keygen -t ed25519

сгенерировать ключ ssh

Теперь выполните приведенную ниже команду, чтобы загрузить ключ на сервер 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.

загрузить ключ через scp

Настройка 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 при появлении запроса. Если команда выполнена успешно, вы должны получить следующее сообщение.

выполнение команды Linux через chef на клиенте

Заключение

Поздравляем! Вы завершили установку сервера Chef и рабочей станции на серверы Debian 12. Вы также научились использовать инструмент командной строки Knife для загрузки клиентских узлов через SSH. Теперь вы можете добавлять новые клиентские узлы и настраивать поваренные книги и рецепты для установки приложений.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *