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

Spacewalk: установка и настройка на CentOS

• 6 min read • Инфраструктура • Обновлено 18 Nov 2025
Spacewalk: установка и настройка на CentOS
Spacewalk: установка и настройка на CentOS

Spacewalk — открытое решение для централизованного управления пакетами и обновлениями для дистрибутивов на базе Red Hat (CentOS, Fedora, Scientific Linux). В статье подробно показан пошаговый процесс установки сервера Spacewalk с встроенной PostgreSQL, создание каналов и репозиториев, регистрация клиентов и базовая отладка удалённых команд и развертывания конфигураций.

Важно: примеры в статье выполнены в тестовой сети с адресами 192.168.1.20–22; адаптируйте имена хостов, сертификаты и ключи под вашу инфраструктуру.

Введение

Spacewalk управляет обновлениями ПО для дистрибутивов, производных от Red Hat, за вашим фаерволом. Это open-source версия Red Hat Satellite 5. Для Satellite 6 аналог — Katello; его настройку автор покажет в отдельном руководстве.

В этом руководстве показан развернутый пример с тремя серверами и встроенной (embedded) PostgreSQL.

Используемая топология:

  • 192.168.1.20 — Spacewalk Server — CentOS 7
  • 192.168.1.21 — Spacewalk client — CentOS 6
  • 192.168.1.22 — Spacewalk client — CentOS 7

Краткие требования

  • CentOS 7 с минимальной установкой
  • SELinux в режиме enforcing
  • Доступ к репозиториям Spacewalk и EPEL

Проверка релиза:

cat /etc/redhat-release

Ожидаемый пример вывода:

CentOS Linux release 7.3.1611(Core)

Проверка статуса SELinux:

sestatus

Пример вывода:

SELinux status: enabled   
SELinuxfs mount: /sys/fs/selinux  
SELinux rootdirectory: /etc/selinux   
Loaded policy name: targeted   
Current mode:enforcing   
Mode from config file: enforcing   
Policy MLS status: enabled  
Policy deny_unknown status: allowed   
Max kernel policy version: 28  
[root@spacewalk ~]#

Добавьте запись в /etc/hosts на сервере, где разворачиваете Spacewalk:

192.168.1.20 spacewalk.sunil.cc spacewalk

Установка сервера Spacewalk

  1. Установите репозиторий Spacewalk для CentOS 7:
rpm -Uvh http://yum.spacewalkproject.org/2.6/RHEL/7/x86_64/spacewalk-repo-2.6-0.el7.noarch.rpm
  1. Создайте файл репозитория jpackage-generic (пример из источника):
cat > /etc/yum.repos.d/jpackage-generic.repo << EOF  
[jpackage-generic]  
name=JPackage generic  
baseurl=http://vesta.informatik.rwth-aachen.de/ftp/pub/comp/Linux/jpackage/5.0/generic/free/  
#mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=5.0  
enabled=1  
gpgcheck=1  
gpgkey=http://www.jpackage.org/jpackage.asc  
EOF
  1. Установите EPEL:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  1. Установите пакеты для встроенной PostgreSQL в Spacewalk:
yum install -y spacewalk-setup-postgresql spacewalk-postgresql

Настройка фаервола

Добавьте службы и порты, используемые Spacewalk (приведённая команда из примера):

firewall-cmd --add-service=http --permanent; firewall-cmd --add-service=https --permanent; firewall-cmd --add-port=5222/tcp --permanent;firewall-cmd --add-port=5269/tcp --permanent;firewall-cmd --add-port=69 â??permanent; firewall-cmd --add-port=5222/udp --permanent;firewall-cmd --add-port=5269/udp --permanent

Перезапустите и включите firewalld:

firewall-cmd --reload
systemctl enable firewalld
systemctl restart firewalld

Важно: команда в исходнике содержит символы кодировки для порта 69; проверьте и поправьте при необходимости.

Настройка PostgreSQL (встроенный бэкенд)

В примере заданы имя БД spacewalk, пользователь spacewalkuser и пароль spacewalkuser. Создание СУБД выполняется командой:

spacewalk-setup-postgresql create --db spacewalk --user spacewalkuser --password spacewalkuser

Вы увидите лог-вывод с инициализацией БД и сервисов (systemctl), это нормально.

Запуск установки Spacewalk

Запустите мастер настройки, пропуская установку БД, если вы уже создали её вручную:

spacewalk-setup  --skip-db-install

В процессе потребуется ввод администратора, e‑mail, параметры организации, пароли для SSL-CA и т.п. Следуйте подсказкам инсталятора. В конце появится сообщение о завершении и адресе веб‑интерфейса, например https://spacewalk.sunil.cc

Перезапустите сервисы Spacewalk:

spacewalk-service restart

Доступ к веб-интерфейсу и первичная настройка

Откройте в браузере http://192.168.1.20 и заполните данные организации, создайте администратора через веб‑интерфейс.

Заполнение данных в Spacewalk

Запущенный Spacewalk

Создание каналов (Channels)

Spacewalk использует иерархию каналов: parent (родительский) и child (дочерние).

  • Меню Channels → Manage Software Channels → Create Channel

Пример: создаём parent-канал centos6.8-parent, затем дочерний centos-6.8 и связываем с репозиторием CentOS 6.8.

Список каналов

Создание parent-канала

Процесс одинаков для CentOS 7: создайте parent-канал и дочерние, затем укажите URL репозитория.

Создание репозитория для CentOS 7

Синхронизация репозиториев

Можно синхронизировать репозитории из веб‑интерфейса или командой spacewalk-repo-sync.

Посмотреть список каналов с привязанными репозиториями:

spacewalk-repo-sync --list

Запуск синхронизации для конкретного канала:

spacewalk-repo-sync -c centos-6.8

Примерный вывод показывает количество пакетов и прогресс; после завершения будет сообщение о времени и статусе.

Синхронизация из веб

Можно настроить расписание синхронизаций и опцию «sync only latest packages» на странице синхронизации.

Параметры синхронизации

Создание Activation Keys

Activation Keys упрощают регистрацию клиентов и назначение им каналов и политик.

  • Systems → Activation Keys → Create Key

Пример: создайте ключ 1-centos6 и привяжите parent-канал centos-6.8-parent; аналогично для CentOS 7.

Создание ключа

Ключи для CentOS 6 и 7

Настройка клиентов (Client Configuration)

В примере клиенты имеют адреса 192.168.1.21 (CentOS 6) и 192.168.1.22 (CentOS 7).

Добавление репозитория Spacewalk на клиентах

CentOS 6:

rpm -Uvh http://yum.spacewalkproject.org/2.6-client/RHEL/6/x86_64/spacewalk-client-repo-2.6-0.el6.noarch.rpm

CentOS 7:

rpm -Uvh http://yum.spacewalkproject.org/2.6-client/RHEL/7/x86_64/spacewalk-client-repo-2.6-0.el7.noarch.rpm

Установите необходимые пакеты (пример для CentOS 6, схож для CentOS 7):

yum install epel-release -y
yum install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin osad rhncfg-actions rhncfg-management -y

Регистрация клиента на Spacewalk

Сначала скачайте SSL‑сертификат сервера Spacewalk на клиент:

wget -O /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT http://spacewalk.sunil.cc/pub/RHN-ORG-TRUSTED-SSL-CERT

Затем зарегистрируйте систему с помощью activation key:

CentOS 6:

rhnreg_ks --force --activationkey="1-centos6" --serverUrl=http://spacewalk.sunil.cc/XMLRPC --sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT --profilename=$HOSTNAME

CentOS 7:

rhnreg_ks --force --activationkey="1-centos7" --serverUrl=http://spacewalk.sunil.cc/XMLRPC --sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT --profilename=$HOSTNAME

Синхронизируйте профиль:

rhn-profile-sync

Включение и запуск агента osad (для удалённых команд и объектов)

CentOS 6 (init/Службы):

chkconfig osad on
service osad restart
rhn-actions-control --enable-all

CentOS 7 (systemd):

systemctl enable osad
systemctl restart osad
rhn-actions-control --enable-all

После этого в веб‑интерфейсе Spacewalk хосты появятся в списке систем.

Список систем в Spacewalk

Выполнение удалённых команд и управление файлами

Через веб‑интерфейс можно запускать удалённые команды: выберите хост → Remote Command → введите команду → Schedule. Статус и вывод доступны в соответствующих вкладках.

Запуск удалённой команды

Для CLI-управления установите spacecmd на сервере Spacewalk:

yum install spacecmd -y

Пример работы spacecmd:

spacecmd
Spacewalk Username: administrator
Spacewalk Password:
INFO: Connected to https://spacewalk.sunil.cc/rpc/api as administrator
spacecmd {SSM:0}> system_list
centos6.sunil.cc
centos7.sunil.cc
spacecmd {SSM:0}> ssm_add centos6.sunil.cc
spacecmd {SSM:1}> ssm_list
centos6.sunil.cc
spacecmd {SSM:1}> exit

Создайте скрипт ff.sh локально на сервере Spacewalk и запустите его на группе систем:

cat ff.sh
#!/bin/bash
cat /etc/redhat-release

spacecmd -y system_runscript "ssm -f ff.sh"

Получить вывод по Action ID:

spacecmd schedule_getoutput 33

Пример вывода показывает содержимое /etc/redhat-release хоста.

Развертывание файлов конфигурации

Spacewalk поддерживает управление конфигурациями через config channels. Пример — изменение /etc/motd на клиенте CentOS 6.

  1. Создайте configuration channel и добавьте файл с нужным содержимым.

Создание конфигурационного канала

  1. Подпишитесь на канал на стороне клиента и вытащите файл:
rhncfg-client channels
rhncfg-client get

Проверка на клиенте:

ls -l /etc/motd
cat /etc/motd

Пример: файл успешно развернут и заменил /etc/motd.

Отладка и устранение неполадок

Если задачи долго остаются в статусе pending, проверьте сервис osa-dispatcher на сервере Spacewalk:

systemctl status osa-dispatcher

Если не работает — перезапустите все сервисы Spacewalk:

spacewalk-service restart

Убедитесь, что на сервере открыт порт 5222 (XMPP/OSAD) и клиенты могут подключаться.

На клиенте можно выполнить последовательность действий для восстановления связи osad:

systemctl stop osad
rm -rf /etc/sysconfig/rhn/osad-auth.conf
rhn_check -vvv
systemctl start osad
systemctl status osad
netstat -aunltp|grep 5222

Если соединение установлено, в netstat будет линия ESTABLISHED к серверу Spacewalk.

Практические чек-листы и методология развёртывания

Короткая методология для быстрой и предсказуемой установки:

  1. Подготовка хостов: DNS/hosts, SELinux, обновления.
  2. Установка репозиториев Spacewalk и EPEL.
  3. Настройка фаервола и открытие необходимых портов.
  4. Установка и инициализация БД (встроенной PostgreSQL).
  5. Запуск spacewalk-setup, ввод организационных данных и генерация сертификатов.
  6. Создание parent/child каналов, привязка репозиториев и синхронизация.
  7. Создание activation keys и регистрация клиентов.
  8. Включение osad на клиентах и верификация связи.
  9. Тестовые удалённые команды, развертывания конфигураций и мониторинг.

Роль‑ориентированные чек‑листы:

  • Администратор инфраструктуры:
    • Проверить доступность хостов и сетевые правила.
    • Настроить системные репозитории и бэкап конфигураций.
  • DevOps/Release инженер:
    • Создать каналы, синхронизировать репозитории, настроить расписания.
    • Тестировать обновления на тестовой группе перед продом.
  • Системный администратор клиента:
    • Инсталлировать агент, загрузить SSL сертификат, зарегистрировать хост.
    • Проверить вывод rhn-profile-sync и osad.

Мини‑чеклист при выпуске обновлений:

  • Создать тестовый канал → синхронизировать пакеты → задеплоить на тестовую группу → мониторить сбои → поднять на прод.

Фактбокс: ключевые числа из примера

  • Количество серверов в примере: 3
  • Порты: HTTP(80), HTTPS(443), OSAD/XMPP(5222 TCP/UDP), 5269 TCP/UDP, TFTP(69) при использовании PXE
  • Примеры каналов: centos-6.8, centos-7-child, centos6.8-parent

Решение распространённых проблем (короткая карта решений)

flowchart TD
  A[Команда в pending] --> B{osa-dispatcher активен?}
  B -- Да --> C{OSAD на клиенте запущен?}
  B -- Нет --> D[Перезапустить spacewalk-service]
  C -- Да --> E[Проверить сетевые правила и порт 5222]
  C -- Нет --> F[Запустить osad, проверить /etc/sysconfig/rhn/osad-auth.conf]

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

  • Веб‑интерфейс Spacewalk доступен по HTTPS без ошибок SSL.
  • Минимум одна система зарегистрирована и отображается в списке систем.
  • Удалённые команды успешно выполняются и возвращают код 0.
  • Один конфигурационный файл успешно развернут и проверен на клиенте.

Совет эксперта

“Используйте отдельные parent-каналы для каждой основной версии дистрибутива и дочерние — для minor‑релизов. Это упрощает откат и тестирование обновлений перед развёртыванием в прод.” — опытный инженер по инфраструктуре

Резюме

Spacewalk остаётся удобным инструментом для централизованного управления пакетами и конфигурациями в инфраструктуре на базе CentOS/RHEL. Следуя шагам подготовки, установки и регистрации клиентов, вы получите рабочую платформу для синхронизаций, удалённых команд и управления конфигурациями.

Дополнительные материалы и расширения: настройка Katello/Satellite 6 для более современных вариантов, интеграция с LDAP/AD, настройка бэкапа БД и мониторинга сервисов.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро