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
- Установите репозиторий Spacewalk для CentOS 7:
rpm -Uvh http://yum.spacewalkproject.org/2.6/RHEL/7/x86_64/spacewalk-repo-2.6-0.el7.noarch.rpm- Создайте файл репозитория 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- Установите EPEL:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm- Установите пакеты для встроенной 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 и заполните данные организации, создайте администратора через веб‑интерфейс.


Создание каналов (Channels)
Spacewalk использует иерархию каналов: parent (родительский) и child (дочерние).
- Меню Channels → Manage Software Channels → Create Channel
Пример: создаём parent-канал centos6.8-parent, затем дочерний centos-6.8 и связываем с репозиторием CentOS 6.8.


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

Синхронизация репозиториев
Можно синхронизировать репозитории из веб‑интерфейса или командой 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.


Настройка клиентов (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.rpmCentOS 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=$HOSTNAMECentOS 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-allCentOS 7 (systemd):
systemctl enable osad
systemctl restart osad
rhn-actions-control --enable-allПосле этого в веб‑интерфейсе 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.
- Создайте configuration channel и добавьте файл с нужным содержимым.

- Подпишитесь на канал на стороне клиента и вытащите файл:
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.
Практические чек-листы и методология развёртывания
Короткая методология для быстрой и предсказуемой установки:
- Подготовка хостов: DNS/hosts, SELinux, обновления.
- Установка репозиториев Spacewalk и EPEL.
- Настройка фаервола и открытие необходимых портов.
- Установка и инициализация БД (встроенной PostgreSQL).
- Запуск spacewalk-setup, ввод организационных данных и генерация сертификатов.
- Создание parent/child каналов, привязка репозиториев и синхронизация.
- Создание activation keys и регистрация клиентов.
- Включение osad на клиентах и верификация связи.
- Тестовые удалённые команды, развертывания конфигураций и мониторинг.
Роль‑ориентированные чек‑листы:
- Администратор инфраструктуры:
- Проверить доступность хостов и сетевые правила.
- Настроить системные репозитории и бэкап конфигураций.
- 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, настройка бэкапа БД и мониторинга сервисов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента