Для работы в качестве управляемого клиента SUSE Manager машине с SLES 15 не требуется прямой доступ в Интернет. Однако ей необходим надежный сетевой доступ к внутреннему серверу или прокси-серверу SUSE Manager, а также соответствующие каналы продуктов SLES, репозиторий начальной загрузки, ключ активации и доверенные материалы, уже имеющиеся в этой среде.
Это различие имеет значение. «Автономная регистрация клиента» обычно означает, что хост SLES не может получить доступ к SUSE Customer Center или общедоступным репозиториям, но может получить доступ к внутренней системе SUSE Manager. Полностью изолированное от внешнего мира развертывание SUSE Manager представляет собой более сложную архитектурную проблему: содержимое репозитория сначала необходимо импортировать в отключенную среду с использованием поддерживаемых методов зеркалирования. SUSE описывает это отдельно в своем руководстве по настройке в отключенном режиме .
Цель этой процедуры — не просто добавить клиент в список систем. Хороший результат должен иметь четыре видимых признака: хост зарегистрирован под предполагаемым ключом активации и базовым каналом, клиент Salt запущен и взаимодействует с менеджером, метаданные пакетов поступают из SUSE Manager, а не из общедоступных репозиториев, и простое действие управления, такое как обновление или проверка состояния, завершается успешно.
Что должно означать слово «офлайн» перед началом работы
В данном руководстве клиент SLES 15 не имеет прямого доступа к Интернету. Он может определить и получить доступ к внутреннему серверу SUSE Manager или прокси-серверу по полному доменному имени (FQDN) по сети. Менеджер уже синхронизировал необходимый контент SLES 15. Если ваш сервер SUSE Manager отключен от Интернета, сначала подготовьте и синхронизируйте этот контент, используя описанный в документации SUSE рабочий процесс для отключенных серверов, прежде чем пытаться подключить клиента.
В текущей клиентской документации SUSE также отмечается, что SLE 15 по умолчанию использует Python 3, и что скрипты начальной загрузки, созданные для Python 2, следует перегенерировать. После обновления или миграции SUSE Manager также рекомендуется перегенерировать скрипты начальной загрузки перед подключением новых систем. См. раздел «Регистрация клиентов с помощью скрипта начальной загрузки» .
Шаг 1: Убедитесь, что синхронизированы правильные каналы SLES.
Прежде чем вносить изменения в клиентскую систему, убедитесь, что SUSE Manager содержит точно такую же версию SLES, пакет обновлений, архитектуру и необходимые модули для данной машины. Например, хост SLES 15 SP7 x86_64 не следует загружать с использованием контента, предназначенного для другого пакета обновлений или архитектуры.
В веб-интерфейсе SUSE Manager проверьте каналы продукта и состояние синхронизации. Конкретные названия каналов различаются в зависимости от версии и включенных модулей, поэтому не копируйте метку канала из другой среды, не проверив ее.

Примерный просмотр канала: перед созданием репозитория начальной загрузки убедитесь, что семейство продуктов SLES 15 и необходимые модули синхронизированы.
Проверка качества: базовый продукт и все каналы, необходимые для активации с помощью ключа, полностью синхронизированы. Если синхронизация неполная, остановитесь здесь. Регистрация может пройти частично, а затем завершиться с ошибкой, если не удастся загрузить необходимые клиентские пакеты.
Шаг 2: Подтвердите или сгенерируйте репозиторий начальной загрузки.
Каждому клиенту необходим доступ к загрузочному репозиторию, содержащему пакеты, используемые для первоначального подключения. SUSE Manager обычно автоматически создает и перегенерирует загрузочные репозитории после синхронизации необходимых каналов продукта, но вы также можете создать его вручную.
На сервере SUSE Manager 5.x, работающем в контейнере, сначала войдите в контейнер сервера:
mgrctl term
Затем перечислите доступные целевые объекты репозитория начальной загрузки:
mgr-create-bootstrap-repo -l

Используйте список репозиториев, чтобы определить целевой объект, соответствующий версии и архитектуре SLES, которые вы подключаете.
Создайте соответствующий репозиторий начальной загрузки, если он отсутствует или нуждается в перегенерации:
mgr-create-bootstrap-repo -c SLE-version-x86_64
В документации SUSE указано местоположение репозитория начальной загрузки (Bootstrap repository) /srv/www/htdocs/pub/repositories/. Если несколько продуктов используют одну и ту же кодовую базу, инструмент может запросить указание правильного родительского канала. Текущая процедура описана в разделе «Репозиторий начальной загрузки» (Bootstrap repository ).

Успешная сборка репозитория означает, что начальные пакеты Salt и регистрации могут быть доступны из управляемой сети.
Когда следует изменить подход: если репозиторий не может быть сгенерирован из-за отсутствия обязательных каналов, не пытайтесь обойти ошибку, копируя случайные RPM-пакеты на клиентскую сторону. Сначала исправьте синхронизацию продуктов или импорт недоступного контента.
Шаг 3: Создайте ключ активации с указанием нужного канала.
Ключ активации — это больше, чем просто регистрационный токен. Он определяет важные параметры процесса регистрации, включая каналы и группы программного обеспечения, назначенные клиенту. Создайте ключ специально для версии SLES и роли, которую вы регистрируете.
В веб-интерфейсе откройте конфигурацию ключа активации и убедитесь, что его базовый канал и дочерние каналы соответствуют целевой машине SLES. Избегайте повторного использования ключа, созданного для другого пакета обновлений, только потому, что сама регистрация прошла успешно.

Ключ активации должен точно сопоставлять новый хост SLES 15 с теми внутренними каналами, которые вы планируете использовать.
Проверка качества: ключ активации однозначно соответствует одному базовому каналу для ОС и архитектуры клиента. Если наличие нескольких родительских каналов делает сопоставление неясным, исправьте это перед запуском скрипта начальной загрузки.
Шаг 4: Сгенерируйте новый скрипт начальной загрузки.
SUSE рекомендует использовать mgr-bootstrapдля создания скрипта регистрации. В SUSE Multi-Linux Manager 5.1 двумя обязательными аргументами являются --activation-keysи --script.
mgrctl term
mgr-bootstrap --activation-keys=<ACTIVATION_KEY> --script=bootstrap-sles15-offline.sh
Сгенерированный скрипт также можно создать через веб-интерфейс в разделе Администрирование > Конфигурация менеджера > Скрипт начальной загрузки . Для архитектуры на основе прокси-сервера сгенерируйте скрипт для полного доменного имени прокси-сервера, а не редактируйте ссылки на сервер позже без уведомления.

Сгенерируйте новый скрипт, привязанный к ключу активации и серверу или прокси-серверу, к которому может подключиться клиент в автономном режиме.
Оставляйте SSL включенным. SUSE прямо предостерегает от отключения SSL в конфигурации начальной загрузки. В изолированной сети доверие к сертификатам по-прежнему важно, поскольку клиент должен убедиться, что он взаимодействует с предполагаемой системой управления.
Шаг 5: Проверьте разрешение имен, маршрутизацию и доступность сертификата с клиентской стороны.
Перед выполнением скрипта проверьте внутренний путь от SLES 15 к SUSE Manager. Точные проверки зависят от вашей топологии, но как минимум убедитесь в разрешении DNS и доступности по HTTPS для FQDN менеджера или прокси-сервера, используемого скриптом.
getent hosts suma.example.com
curl -I https://suma.example.com/pub/
Если в среде используется метод связи Salt по умолчанию, клиент также должен иметь возможность установить необходимое соединение Salt с менеджером. В документации SUSE по ручной регистрации через командную строку указаны порты 4505 и 4506 для связи с Salt. См. раздел «Регистрация клиентов в командной строке» .

На этапе передачи следует использовать внутренний адрес менеджера или прокси-сервера; прямой доступ клиента к Интернету не требуется.
Проверка качества: клиент разрешает то же полное доменное имя (FQDN), что и в скрипте начальной загрузки, и может получить к нему доступ без переключения на общедоступный маршрут. Если это не удается, исправьте DNS, брандмауэр, маршрутизацию прокси-сервера или доверие к центру сертификации, прежде чем продолжить.
Шаг 6: Скопируйте скрипт начальной загрузки в изолированную сеть.
Если клиент может получить прямой доступ к веб-службе SUSE Manager, загрузите скрипт начальной загрузки с менеджера. Если клиент находится в сегменте с более строгими ограничениями, передайте файл с помощью утвержденного внутреннего механизма, такого как SCP, через промежуточный хост или съемный носитель. Сам скрипт не отменяет необходимости постоянного подключения к внутреннему менеджеру; он обрабатывает только первоначальную настройку.
curl -O https://suma.example.com/pub/bootstrap/bootstrap-sles15-offline.sh
chmod 700 bootstrap-sles15-offline.sh
В тех случаях, когда прямая HTTP-передача запрещена, проверьте контрольную сумму скрипта после его прохождения через контролируемый процесс передачи. Это особенно полезно в изолированных от сети или средах с высоким уровнем надежности.
Шаг 7: Запустите скрипт начальной загрузки от имени root и следите за ошибками в репозитории или сертификате.
Выполните скрипт локально на клиенте SLES:
sudo ./bootstrap-sles15-offline.sh
Скрипт устанавливает необходимые компоненты Salt, размещает доверенные материалы, применяет ключ активации и запускает процесс подключения. Точные названия пакетов могут различаться в зависимости от SUSE Manager и версии SLES. В текущей документации SUSE все чаще используется Salt Bundle, venv-salt-minion, в то время как некоторые пути загрузки SLES 15 могут начинаться с , salt-minionа затем изменяться во время подключения.

Вместо того чтобы судить об успехе только по последней строке, следите за выводом процесса загрузки на предмет ошибок сертификата, недоступных пакетов, несоответствий репозитория или проблем с ключом активации.
Проверка качества: отсутствуют ошибки разрешения пакетов, сбои доверия TLS и ссылки на общедоступные репозитории, недоступные для офлайн-клиента. Если скрипт пытается использовать некорректные репозитории, следует вернуться к шагам 1–4, а не запускать его повторно.
Шаг 8: Проверьте клиент в SUSE Manager и протестируйте трафик управления.
После завершения процесса подключения откройте раздел «Системы» в SUSE Manager и найдите новый клиент. Проверьте его имя хоста, базовый канал, группу систем и текущий статус. Наличие системы в списке является необходимой контрольной точкой, но это не полный тест приемки.

Регистрация считается завершенной только тогда, когда система отображается с ожидаемым назначением канала и клиент Salt остается активным.
На стороне клиента проверьте имя службы, соответствующее установленному стеку Salt:
systemctl status venv-salt-minion
# or, where applicable:
systemctl status salt-minion
Затем выполните одно действие управления с низким уровнем риска из SUSE Manager, например, обновите данные пакета или выполните безобидный запрос состояния. Убедитесь, что действие завершилось и что клиент снова подключился к системе.
Как определить, действительно ли хороша офлайн-регистрация?
| Проверять | Хороший результат | Причина остановиться и исправить |
| Содержание продукта | Корректная синхронизация пакета обновлений SLES 15, архитектуры и модулей осуществляется внутри системы. | Отсутствующие или смешанные каналы пакета обновлений |
| Репозиторий Bootstrap | Сгенерировано для соответствующей целевой аудитории продукта. | Создание не удалось или родительский канал указан неоднозначно. |
| Ключ активации | Назначает целевые базовые и дочерние каналы. | Ключевые моменты, касающиеся другой роли или версии ОС. |
| Сетевой путь | Клиент разрешает и связывается с менеджером/прокси-сервером по полному доменному имени (FQDN) внутри компании. | Требуется публичный DNS-сервер или интернет-путь. |
| ТЛС | Ошибок проверки сертификата нет. | SSL отключен или цепочка доверия не разрешена |
| Соль | Сервис Salt Bundle/minion остается активным, а действия по управлению завершены. | Клиент появляется один раз, но не может зарегистрироваться в дальнейшем. |
Типичные модели отказов и что они обычно означают.
Скрипт не может загрузить пакет.
Сначала сравните соответствие репозитория загрузки и канала активации с точным релизом SLES клиента. SUSE предупреждает, что информация о репозитории должна совпадать с базовым каналом; в противном случае процесс загрузки не сможет получить правильные пакеты.
Клиент регистрируется, но операции с пакетами завершаются с ошибкой.
Проверьте, сохранились ли локальные репозитории от предыдущей конфигурации. Процесс начальной загрузки Salt в SUSE разработан с учетом репозиториев, обслуживаемых SUSE Manager, и локально назначенные репозитории могут мешать согласованному управлению каналами. В автономной среде особенно высока вероятность сбоя любых оставшихся ссылок на публичные репозитории.
Сервис Salt запускается, но система остается неактивной.
Проверьте DNS, политику брандмауэра и способ связи. Если стандартное подключение Salt через границу сети невозможно, SUSE рекомендует использовать SSH Push в качестве альтернативы для клиентов в зонах, защищенных брандмауэром или отключенных от сети. Это изменение в дизайне, а не незначительная корректировка начальной загрузки, поэтому используйте его только тогда, когда этого действительно требует сетевая модель.
Скопированный скрипт загрузки работал до обновления, но теперь перестал работать.
Перегенерируйте его. SUSE рекомендует пересоздавать скрипты начальной загрузки после миграции и при подключении систем SLE 15, которые в противном случае могли бы унаследовать более старые предположения Python.
Ограничения данного метода
Эта процедура не приводит к автоматическому появлению содержимого SUSE Manager в изолированной среде. Если менеджер не может получить доступ к SUSE Customer Center, вам все равно потребуется поддерживаемый рабочий процесс с отключенным содержимым, например, зеркалирование с помощью RMT/SMT или другой документированный способ синхронизации. Скрипт начальной загрузки также не заменяет сетевой доступ между клиентом и его внутренним менеджером или прокси-сервером после регистрации.
Наконец, команды и имена служб могут различаться в зависимости от поколения SUSE Manager и пакетов обновлений SLES. В статье в качестве отправной точки используется текущий процесс загрузки SUSE 5.x, но вам следует сопоставить процедуру с документацией для той версии, которая установлена в вашей среде.
Официальные ссылки