RedHat Satellite – ¿Qué es y para qué se usa y cómo se instala?

RedHat Satellite

Red Hat Satellite es una plataforma de gestión de sistemas Linux centralizada que permite a los usuarios y administradores de sistemas provisionar, configurar y actualizar sus sistemas de forma rápida y sencilla.

Red Hat Satellite se utiliza para gestionar una gran cantidad de sistemas Linux, desde unos pocos hasta miles. Ofrece una serie de beneficios, entre los que se incluyen:

  • Centralización de la gestión de sistemas: Red Hat Satellite permite a los usuarios y administradores de sistemas gestionar todos sus sistemas Linux desde una única ubicación. Esto facilita la supervisión, la configuración y la actualización de los sistemas.
  • Automatización: Red Hat Satellite ofrece una serie de herramientas de automatización que permiten a los usuarios y administradores de sistemas automatizar tareas comunes de gestión de sistemas. Esto ahorra tiempo y esfuerzo.
  • Seguridad: Red Hat Satellite ofrece una serie de características de seguridad que ayudan a proteger los sistemas Linux. Esto ayuda a garantizar que los sistemas estén protegidos contra amenazas.

Red Hat Satellite se puede utilizar para realizar una serie de tareas de gestión de sistemas, entre las que se incluyen:

  • Provisionamiento de sistemas: Red Hat Satellite puede utilizarse para crear nuevos sistemas Linux a partir de imágenes preconfiguradas.
  • Configuración de sistemas: Red Hat Satellite puede utilizarse para configurar los sistemas Linux según las necesidades de la organización.
  • Actualización de sistemas: Red Hat Satellite puede utilizarse para actualizar los sistemas Linux con las últimas correcciones de seguridad y actualizaciones de software.
  • Monitorización de sistemas: Red Hat Satellite puede utilizarse para supervisar el estado de los sistemas Linux.
  • Gestión de parches: Red Hat Satellite puede utilizarse para gestionar los parches de seguridad y actualizaciones de software para los sistemas Linux.

Tabla de contenidos

Novedades de la versión 6.13.5

Para hacer este post, me he basado en la versión 6.13.5 de RedHat Satellite, que es la útima que hay en estos momentos.

Esta versión incluye una serie de nuevas características y mejoras, entre las que se incluyen:

  • Soporte para Red Hat Enterprise Linux 9: Red Hat Satellite versión 6.13.5 es compatible con Red Hat Enterprise Linux 9, la última versión del sistema operativo Linux de Red Hat. Esto permite a los usuarios y administradores de sistemas gestionar sus sistemas Red Hat Enterprise Linux 9 desde una única ubicación.
  • Mejoras en la automatización con Ansible: Red Hat Satellite versión 6.13.5 incluye una serie de mejoras en la automatización con Ansible, el motor de automatización de código abierto de Red Hat. Estas mejoras hacen que sea más fácil y sencillo automatizar tareas comunes de gestión de sistemas con Ansible.
  • Nuevas funciones de seguridad: Red Hat Satellite versión 6.13.5 incluye una serie de nuevas funciones de seguridad que ayudan a proteger los sistemas Linux. Estas funciones incluyen la integración con Red Hat Insights, una plataforma de seguridad basada en la nube de Red Hat.

Requisitos previos

Antes de comenzar a instalar RedHat Satellite, hay unos requisitos previos que debemos cumplir.

  • Hardware:
    • Un servidor con al menos 20 GB de RAM y 4 de swap
    • Un procesador Intel o AMD de 64 bits (arquitectura x86) con, al menos, 4 cores funcionando a 2GHz
    • Un sistema operativo compatible con Red Hat Satellite, como Red Hat Enterprise Linux 8 con acceso a root (RedHat 9 no está soportado en la versión 6.13.5 del satélite).
  • Software:
    • Un navegador web compatible con HTML5
    • RedHat Satellite sólo soporta codificación UTF-8 en inglés (en_US.utf-8).
    • SELinux debe estar habilitado, aunque puede ser en modo permisivo.
  • Conexión a Internet:
    • Una conexión a Internet de banda ancha para descargar el software de Red Hat Satellite y las actualizaciones de contenido.
  • Suscripciones:
    • Una suscripción a Red Hat Satellite
    • Una suscripción a Red Hat Enterprise Linux para cada sistema que se va a gestionar
  • Almacenamiento:
Requerimientos de almacenamiento de RedHat Satellite

El tamaño base de cada uno de los filesystems es variable, pues dependerá de la cantidad de servidores cliente que se vayan a conectar al satélite. Podemos comenzar con una configuración base como la siguiente:

  • /var/lib/pulp: Este filesystem es utilizado por el servicio Pulp para almacenar contenido, como imágenes de sistemas operativos, paquetes de software y parches de seguridad. El tamaño recomendado de este filesystem es de, al menos, 50 GB.
  • /var/lib/pgsql: El tamaño de este filesystem dependerá del tamaño de la base de datos y la carga de trabajo prevista. Se recomienda asignar al menos 20-30 GB para el almacenamiento de datos de la base de datos, además del espacio adicional para los archivos de registro y otros datos relacionados.
  • /opt/puppetlabs: Este filesystem es utilizado por el servicio Puppet para almacenar contenido, como módulos y manifiestos. El tamaño recomendado de este filesystem dependerá de la cantidad de contenido que utilice Puppet.
  • /var/lib/qpidd: Este directorio generalmente almacena los datos y archivos asociados con el servicio de mensajería Qpid utilizado en Red Hat Satellite. El tamaño de este filesystem dependerá de la carga de trabajo prevista y de la cantidad de datos de mensajería que se espera procesar. Se recomienda asignar suficiente espacio para los datos de mensajería y para cualquier crecimiento futuro esperado. Un tamaño inicial de al menos 5-10 GB podría ser razonable, dependiendo de tus necesidades específicas.

Además de los requisitos previos anteriores, se recomienda que el servidor Red Hat Satellite se encuentre en una red aislada de la red de producción. Esto ayudará a proteger los sistemas de producción de posibles amenazas.

  • Puertos de comunicaciones:

Tráfico de entrada

Destination PortProtocolServiceSourceRequired ForDescription
53TCP and UDPDNSDNS Servers and clientsName resolutionDNS (optional)
67UDPDHCPClientDynamic IPDHCP (optional)
69UDPTFTPClientTFTP Server (optional) 
443TCPHTTPSCapsuleRed Hat Satellite APICommunication from Capsule
443, 80TCPHTTPS, HTTPClientContent RetrievalContent
443, 80TCPHTTPS, HTTPCapsuleContent RetrievalContent
443, 80TCPHTTPS, HTTPClientContent Host RegistrationCapsule CA RPM installation
443TCPHTTPSClientContent Host registrationInitiation Uploading facts Sending installed packages and traces
443TCPHTTPSRed Hat SatelliteContent MirroringManagement
443TCPHTTPSRed Hat SatelliteCapsule APISmart Proxy functionality
1883TCPMQTTClientPull based REX (optional)Content hosts for REX job notification (optional)
5646, 5647TCPAMQPCapsuleKatello agentForward message to Qpid dispatch router on Satellite (optional)
5910 – 5930TCPHTTPSBrowsersCompute Resource’s virtual console 
8000TCPHTTPClientProvisioning templatesTemplate retrieval for client installers, iPXE or UEFI HTTP Boot
8000TCPHTTPSClientPXE BootInstallation
8140TCPHTTPSClientPuppet agentClient updates (optional)
9090TCPHTTPSClientOpenSCAPConfigure Client
9090TCPHTTPSDiscovered NodeDiscoveryHost discovery and provisioning
9090TCPHTTPSRed Hat SatelliteCapsule APICapsule functionality

También tiene que estar abierto el puerto 443 hacia la URL de registro del sistema:

[root] # nc -zv -w 10 subscription.rhsm.redhat.com 443
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 209.132.178.16:443.
Ncat: 0 bytes sent, 0 bytes received in 0.30 seconds.
[root] #

Tráfico de salida

Destination PortProtocolServiceDestinationRequired ForDescription
 ICMPpingClientDHCPFree IP checking (optional)
7TCPechoClientDHCPFree IP checking (optional)
22TCPSSHTarget hostRemote executionRun jobs
22, 16514TCPSSH SSH/TLSCompute ResourceSatellite originated communications, for compute resources in libvirt 
53TCP and UDPDNSDNS Servers on the InternetDNS ServerResolve DNS records (optional)
53TCP and UDPDNSDNS ServerCapsule DNSValidation of DNS conflicts (optional)
53TCP and UDPDNSDNS ServerOrchestrationValidation of DNS conflicts
68UDPDHCPClientDynamic IPDHCP (optional)
80TCPHTTPRemote repositoryContent SyncRemote yum repository
389, 636TCPLDAP, LDAPSExternal LDAP ServerLDAPLDAP authentication, necessary only if external authentication is enabled. The port can be customized when LDAPAuthSource is defined
443TCPHTTPSSatelliteCapsuleCapsule Configuration management Template retrieval OpenSCAP Remote Execution result upload
443TCPHTTPSAmazon EC2, Azure, Google GCECompute resourcesVirtual machine interactions (query/create/destroy) (optional)
443TCPHTTPSconsole.redhat.comRed Hat Cloud plugin API calls 
443TCPHTTPScdn.redhat.comContent SyncRed Hat CDN
443TCPHTTPSapi.access.redhat.comSOS reportAssisting support cases filed through the Red Hat Customer Portal (optional)
443TCPHTTPScert-api.access.redhat.comTelemetry data upload and report 
443TCPHTTPSCapsuleContent mirroringInitiation
443TCPHTTPSInfoblox DHCP ServerDHCP managementWhen using Infoblox for DHCP, management of the DHCP leases (optional)
623  ClientPower managementBMC On/Off/Cycle/Status
5000TCPHTTPSOpenStack Compute ResourceCompute resourcesVirtual machine interactions (query/create/destroy) (optional)
5646TCPAMQPSatellite ServerKatello agentForward message to Qpid dispatch router on Capsule (optional)
5671  QpidRemote installSend install command to client
5671  Dispatch router (hub)Remote installForward message to dispatch router on Satellite
5671  Satellite ServerRemote install for Katello agentSend install command to client
5671  Satellite ServerRemote install for Katello agentForward message to dispatch router on Satellite
5900 – 5930TCPSSL/TLSHypervisornoVNC consoleLaunch noVNC console
7911TCPDHCP, OMAPIDHCP ServerDHCPThe DHCP target is configured using --foreman-proxy-dhcp-server and defaults to localhost ISC and remote_isc use a configurable port that defaults to 7911 and uses OMAPI
8443TCPHTTPSClientDiscoveryCapsule sends reboot command to the discovered host (optional)
9090TCPHTTPSCapsuleCapsule APIManagement of Capsules

Apertura de puertos desde el cliente hacia el satélite si tenemos activado Firewalld:

firewall-cmd \
--add-port="53/udp" --add-port="53/tcp" \
--add-port="67/udp" \
--add-port="69/udp" \
--add-port="80/tcp" --add-port="443/tcp" \
--add-port="5647/tcp" \
--add-port="8000/tcp" --add-port="9090/tcp" \
--add-port="8140/tcp"

firewall-cmd --runtime-to-permanent
  • El hostname del servidor tiene que ser en formato FQDN, de lo contrario, el comando de configuración del satálite dará el siguiente error:
# satellite-installer --scenario satellite
2024-01-24 15:24:55 [NOTICE] [root] Loading installer configuration. This will take some time.
2024-01-24 15:24:58 [NOTICE] [root] Running installer with log based terminal output at level NOTICE.
2024-01-24 15:24:58 [NOTICE] [root] Use -l to set the terminal output log level to ERROR, WARN, NOTICE, INFO, or DEBUG. See --full-help for definitions.
Unable to resolve forward DNS for ptvpsatelli04
Output of 'hostname -f' (ptvpsatelli04) does not seems to be valid FQDN

Make sure above command gives fully qualified domain name. At least one dot must be present and underscores are not allowed. If needed, change the hostname permanently via the 'hostname' or 'hostnamectl set-hostname' command
and editing the appropriate configuration file.
(e.g. on Red Hat systems /etc/sysconfig/network,
on Debian based systems /etc/hostname).

If 'hostname -f' still returns an unexpected result, check /etc/hosts and put
the hostname entry in the correct order, for example:

  1.2.3.4 hostname.example.com hostname

The fully qualified hostname must be the first entry on the line
Your system does not meet configuration criteria
#

Instalación de RedHat Satellite a través de los repositorios de RedHat

Si vamos a instalarlo desde una red aislada, necesitaremos configurar un proxy con salida a Internet para que el Satélite pueda realizar algunas funciones fundamentales, como la descarga de los repositorios de software.

Uso de un proxy

Para ello, configuraremos el fichero /etc/rhsm/rhsm.conf de la siguiente manera:

# an http proxy server to use (enter server FQDN)
proxy_hostname = myproxy.example.com

# port for http proxy server
proxy_port = 8080

# user name for authenticating to an http proxy, if needed
proxy_user =

# password for basic http proxy auth, if needed
proxy_password =

Registro del servidor del Satélite en RedHat

Registramos el sistema RedHat 8 de la manera habitual:

# subscription-manager register
Username: user_name
Password:
The system has been registered with ID: XXXXX


También podemos utilizar un proxy e incluir todos los parámetros en una única línea de comandos:

subscription-manager register --username UsuarioRedHat --password ContraseñaRedHat --auto-attach --proxy=IP_PROXY:PUERTO_PROXY

Si ya tenemos un «pool id» asociado a la suscripción de RedHat Satellite, lo buscaremos con el siguiente comando:

subscription-manager list --all --available --matches 'Red Hat Satellite Infrastructure Subscription'
subscription-manager attach --pool=pool_id

Configuración de los repositorios de instalación de RedHat Satélite

Desactivamos todos los repositorios:

subscription-manager repos --disable "*"

Habilitamos sólo los repositorios de RedHat Satellite:

subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms \
--enable=rhel-8-for-x86_64-appstream-rpms \
--enable=satellite-6.13-for-rhel-8-x86_64-rpms \
--enable=satellite-maintenance-6.13-for-rhel-8-x86_64-rpms

Habilitamos los módulos DNF:

dnf module enable satellite:el8

Instalamos el software de RedHat Satellite

Por fin llegamos al punto en que podemos instalar RedHat Satellite

dnf update -y
dnf install satellite

Es una buena práctica la instalación de Chrony para mantener el servidor en hora.

Para poder abrir casos al soporte de RedHat en caso de problemas, es recomendable instalar la utilidad sos (sosreport).

dnf install sos

Configuración inicial del Satélite

Una vez instalado el software, hay que realizar una configuración inicial.

El siguiente comando configurará los servicios necesarios y realizará las configuraciones iniciales. Puede tardar algún tiempo, ya que configura varios componentes y servicios en el sistema.

satellite-installer --scenario satellite
RedHat Satélite instalado

Cuando finalice, podremos verificar los servicios:

foreman-maintain service status

También podremos probar el acceso a la consola vía WEB:

https://<tu-servidor-satellite>/

Probando la instalación de un paquete con Foreman

Una vez instalado el satélite, utilizo el comando foreman-maintain para instalar un paquete con el objetivo de probar el servicio.

# foreman-maintain packages install firefox
Running install packages in unlocked session
================================================================================
Confirm installer run is allowed:

WARNING: This script runs satellite-installer after the yum execution
to ensure the Satellite is in a consistent state.
As a result some of your services may be restarted.

Do you want to proceed?, [y(yes), q(quit)] y
                                                                      [OK]
--------------------------------------------------------------------------------
Unlock packages:                                                      [OK]
--------------------------------------------------------------------------------
Install packages: Updating Subscription Management repositories.
Last metadata expiration check: 2:24:09 ago on Wed 31 Jan 2024 02:11:17 AM WET.
Dependencies resolved.
================================================================================
 Package          Arch   Version         Repository                        Size
================================================================================
Installing:
 firefox          x86_64 115.7.0-1.el8_9 rhel-8-for-x86_64-appstream-rpms 115 M
Installing dependencies:
 mozilla-filesystem
                  x86_64 1.9-19.el8      rhel-8-for-x86_64-appstream-rpms  11 k
 redhat-indexhtml noarch 8-7.el8         rhel-8-for-x86_64-baseos-rpms    242 k

Transaction Summary
================================================================================
Install  3 Packages

Total download size: 115 M
Installed size: 287 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): mozilla-filesystem-1.9-19.el8.x86_64.rpm  17 kB/s |  11 kB     00:00
(2/3): redhat-indexhtml-8-7.el8.noarch.rpm      357 kB/s | 242 kB     00:00
(3/3): firefox-115.7.0-1.el8_9.x86_64.rpm        55 MB/s | 115 MB     00:02
--------------------------------------------------------------------------------
Total                                            55 MB/s | 115 MB     00:02
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : redhat-indexhtml-8-7.el8.noarch                        1/3
  Installing       : mozilla-filesystem-1.9-19.el8.x86_64                   2/3
  Installing       : firefox-115.7.0-1.el8_9.x86_64                         3/3
  Running scriptlet: firefox-115.7.0-1.el8_9.x86_64                         3/3
  Verifying        : mozilla-filesystem-1.9-19.el8.x86_64                   1/3
  Verifying        : firefox-115.7.0-1.el8_9.x86_64                         2/3
  Verifying        : redhat-indexhtml-8-7.el8.noarch                        3/3
Installed products updated.

Installed:
  firefox-115.7.0-1.el8_9.x86_64       mozilla-filesystem-1.9-19.el8.x86_64
  redhat-indexhtml-8-7.el8.noarch

Complete!
                                                    [OK]
--------------------------------------------------------------------------------
Procedures::Installer::Upgrade: 2024-01-31 04:35:47 [NOTICE] [root] Loading installer configuration. This will take some time.
2024-01-31 04:35:49 [NOTICE] [root] Running installer with log based terminal output at level NOTICE.
2024-01-31 04:35:49 [NOTICE] [root] Use -l to set the terminal output log level to ERROR, WARN, NOTICE, INFO, or DEBUG. See --full-help for definitions.
2024-01-31 04:35:52 [NOTICE] [configure] Starting system configuration.
2024-01-31 04:36:04 [NOTICE] [configure] 250 configuration steps out of 1574 steps complete.
2024-01-31 04:36:09 [NOTICE] [configure] 500 configuration steps out of 1575 steps complete.
2024-01-31 04:36:12 [NOTICE] [configure] 750 configuration steps out of 1579 steps complete.
2024-01-31 04:36:12 [NOTICE] [configure] 1000 configuration steps out of 1585 steps complete.
2024-01-31 04:36:12 [NOTICE] [configure] 1250 configuration steps out of 1585 steps complete.
2024-01-31 04:37:00 [NOTICE] [configure] 1500 configuration steps out of 1585 steps complete.
2024-01-31 04:37:03 [NOTICE] [configure] System configuration has finished.
  Success!
  * Satellite is running at https://ptvpsatelli04.intranet.edp.com

  * To install an additional Capsule on separate machine continue by running:

      capsule-certs-generate --foreman-proxy-fqdn "$CAPSULE" --certs-tar "/root/$CAPSULE-certs.tar"
  * Capsule is running at https://ptvpsatelli04.intranet.edp.com:9090

  The full log is at /var/log/foreman-installer/satellite.log
Package versions are being locked.
                                      [OK]
--------------------------------------------------------------------------------
Check status of version locking of packages:
  Automatic locking of package versions is enabled in installer.
  Packages are locked.                                                [OK]
--------------------------------------------------------------------------------

#

No se puede utilizar dnf o yum. Si lo intentamos, dará el siguiente aviso de protección:

# dnf install -y firefox
Updating Subscription Management repositories.
Last metadata expiration check: 2:19:27 ago on Wed 31 Jan 2024 02:11:17 AM WET.
Reading Foreman protector configuration
*** Excluded total: 46780

WARNING: Excluding 46780 packages due to foreman-protector.
Use foreman-maintain packages install/update <package>
to safely install packages without restrictions.
Use foreman-maintain upgrade run for full upgrade.

All matches were filtered out by exclude filtering for argument: firefox
Error: Unable to find a match: firefox
#

En caso de que queramos saltanos esta protección, ejecutaremos:

foreman-maintain packages unlock
dnf groupinstall "Server with GUI"
foreman-maintain packages lock

«Server with GUI» se ha utilizado como ejemplo. Es el nombre del grupo de paquetes de Linux que queremos instalar.

Instalación de RedHat Satellite con el propio instalador que viene en la ISO del producto

Si por alguna razón no queremos utilizar los repositorios de RedHat para instalar RedHat Satellite, también podemos descargarnos la ISO del producto desde RedHat, montarla y ejecutar el instalador:

satellite-installer --scenario satellite \
--foreman-initial-organization "My_Organization" \
--foreman-initial-location "My_Location" \
--foreman-initial-admin-username admin_user_name \
--foreman-initial-admin-password admin_password

Acceso a la consola de administración de RedHat Satellite

La consola del satélite de RedHat le permite realizar una variedad de tareas, como:

  • Gestionar los sistemas registrados con el satélite de RedHat.
  • Gestionar las suscripciones de Red Hat.
  • Gestionar el contenido de Red Hat.
  • Generar informes.

Accederemos a la consola a través de su URL:

https://<dirección IP del servidor>:8080
Acceso a la consola de RedHat Satellite

o por línea de comandos:

satellite-shell

Importación del manifiesto de suscripciones de RedHat

Un manifiesto de suscripción de Red Hat es un archivo que contiene información sobre las suscripciones de Red Hat que están disponibles para un sistema. Este archivo se utiliza para permitir que Red Hat Satellite importe las suscripciones de Red Hat a un sistema.

El manifiesto de suscripción de Red Hat contiene la siguiente información:

  • El nombre de la suscripción
  • El tipo de suscripción
  • El período de suscripción
  • Los productos y servicios cubiertos por la suscripción

Para importar el manifiesto, seguiremos las instrucciones de RedHat:

Importación del manifiesto del satélite de RedHat

Creación de las Claves de Activación en el servidor del Satélite

Las claves de activación en Red Hat Satellite son una característica fundamental que permite a los administradores gestionar las suscripciones y configuraciones de Red Hat para los sistemas registrados. Estas claves simplifican el proceso de registro de nuevos sistemas al asociarlos automáticamente con el contenido específico, las suscripciones y las políticas de configuración definidas previamente.

Cuando configuras un sistema para registrarse en Satellite, puedes especificar una clave de activación. Esta clave asocia el sistema con un conjunto predefinido de configuraciones, incluyendo qué contenido (como repositorios de software) está disponible para el sistema, qué suscripciones se deben aplicar, y qué políticas de configuración se deben establecer.

Las claves de activación se crean en la interfaz de Satellite y pueden ser asociadas a uno o más sistemas. Estas claves permiten a los administradores:

  • Asignar suscripciones automáticamente: En lugar de tener que asignar manualmente suscripciones a cada sistema, las claves de activación pueden hacerlo automáticamente basándose en las suscripciones asociadas a la clave.
  • Configurar sistemas de manera coherente: Las claves pueden incluir configuraciones para que todos los sistemas registrados con una clave específica tengan la misma configuración inicial, asegurando una gestión más uniforme y eficiente.
  • Simplificar el registro de sistemas: Con una clave de activación, los pasos necesarios para registrar un sistema en Satellite se reducen significativamente, facilitando la automatización y el despliegue a gran escala de sistemas.

En la versión 6 de Red Hat Satellite, el manejo de las claves de activación es una parte integral de la gestión de ciclo de vida del contenido y la infraestructura, permitiendo a los administradores controlar de manera eficaz el acceso al contenido y las suscripciones en su entorno.

Proceso para generar las claves de activación desde el satélite

Los siguientes comandos deberemos ejecutarlos desde el servidor donde corre al satélite o, bien, nos conectaremos a la interfaz WEB del satélite:

  • Creamos la organización en el satélite:

Supongamos que tenemos servidores RedHat repartidos en diferentes zonas geográficas. Para aquellos que están en la Ciudad de Oporto, crearemos una organización llamada EDPR_Oporto, tal y como podemos ver a continuación:

# hammer organization create --name "EDPR Oporto"
Organization created.
# hammer organization list
---|----------------------|----------------------|-------------|---------------------
ID | TITLE                | NAME                 | DESCRIPTION | LABEL
---|----------------------|----------------------|-------------|---------------------
1  | Default Organization | Default Organization |             | Default_Organization
3  | EDPR Oporto          | EDPR Oporto          |             | EDPR_Oporto
---|----------------------|----------------------|-------------|---------------------
#
  • Creamos el Content View: Un Content View en Red Hat Satellite es una herramienta de gestión que permite a los administradores controlar y personalizar el contenido, como paquetes de software, erratas y distribuciones, que se distribuye a los hosts o servidores. Es un componente esencial en la gestión de configuraciones y parches dentro de Satellite. Las principales características de un Content View incluyen:
    • Filtrado y Agrupación de Contenido: Esta característica permite seleccionar y filtrar qué repositorios y paquetes específicos estarán disponibles para un grupo de hosts. Por ejemplo, se puede crear un Content View que solo incluya los paquetes necesarios para un servidor web o una base de datos.
    • Control de Versiones: Cada Content View puede tener múltiples versiones, lo que permite a los administradores hacer y rastrear cambios de manera controlada. Cada vez que se actualiza un Content View, por ejemplo, agregando nuevos paquetes o erratas, se crea una nueva versión.
    • Promoción a través de Entornos de Ciclo de Vida: Los Content Views pueden moverse a través de diferentes entornos de ciclo de vida, como desarrollo, prueba y producción. Esto ayuda a administrar el despliegue de software y actualizaciones de manera gradual y controlada.
    • Integración con Hosts y Claves de Activación: Los hosts se suscriben a un Content View, lo que determina qué software pueden ver e instalar. Las claves de activación se usan para asignar hosts a Content Views específicos cuando se registran en Satellite.

Generaremos nuestro Content View para los servidores de Oporto, de la siguiente manera:

# hammer content-view create --name "CV_Oporto" --description "ContentView para el satelite de Oporto" --organization "EDPR Oporto"
Content view created.
#

# hammer content-view publish --name "CV_Oporto" --organization "EDPR Oporto" --description "Publicación inicial"
[.....................................................................................................................................................................................................] [100%]
#

# hammer content-view list --organization "EDPR Oporto"
----------------|---------------------------|---------------------------|-----------|---------------------|---------------
CONTENT VIEW ID | NAME                      | LABEL                     | COMPOSITE | LAST PUBLISHED      | REPOSITORY IDS
----------------|---------------------------|---------------------------|-----------|---------------------|---------------
3               | CV_Oporto                 | CV_Oporto                 | false     | 2024/02/28 08:14:24 |
2               | Default Organization View | Default_Organization_View | false     | 2024/02/28 07:53:26 |
----------------|---------------------------|---------------------------|-----------|---------------------|---------------
#
  • Configuración del ciclo de vida: El entorno de ciclo de vida en Red Hat Satellite es un concepto utilizado para gestionar y promover el contenido a través de diferentes etapas del desarrollo de software, desde el desarrollo hasta la producción. Permite a los administradores de sistemas controlar la versión del software y los paquetes que se despliegan en los sistemas registrados en el Satellite.

Un entorno de ciclo de vida típicamente sigue una progresión desde un entorno de desarrollo, a un entorno de prueba/QA, y finalmente a un entorno de producción. Cada entorno de ciclo de vida puede tener asociadas diferentes versiones de Content Views, que son colecciones de repositorios que contienen paquetes, erratas y módulos específicos.

Cuando se crea o promueve un Content View a un entorno de ciclo de vida, se están definiendo explícitamente los paquetes y versiones que están disponibles para los sistemas asociados a ese entorno. Esto es esencial para asegurar que los sistemas en, por ejemplo, el entorno de producción solo tengan acceso a versiones de software que han sido probadas y aprobadas en los entornos de desarrollo y QA previamente.

Esta estructura no solo ayuda a mantener la estabilidad del entorno de producción, sino que también facilita un flujo de trabajo de gestión de cambios controlado y predecible, lo que es crucial para mantener la integridad y la seguridad del sistema en entornos empresariales complejos.

Supongamos que queremos crear un ciclo de vida para el entorno de desarrollo. Ejecutaremos los siguientes comandos desde el satélite:

# hammer lifecycle-environment create --name "LF_Oporto_Desarrollo" --organization "EDPR Oporto" --description "Life Cycle environment for Satellite in Oporto" --prior "Library"
Environment created.

# hammer content-view version promote --content-view "CV_Oporto" --to-lifecycle-environment "LF_Oporto_Desarrollo" --organization "EDPR Oporto"
[.....................................................................................................................................................................................................] [100%]
#

# hammer lifecycle-environment list
---|----------------------|--------
ID | NAME                 | PRIOR
---|----------------------|--------
5  | LF_Oporto_Desarrollo | Library
2  | Library              |
1  | Library              |
---|----------------------|--------
#
  • Finalmente, ya podemos generar las claves de activación:
# hammer activation-key create --name "Activation_Key_Oporto_Desarrollo" --unlimited-hosts --description "Activation Key for Satellite in Oporto Desarrollo" --lifecycle-environment "LF_Oporto_Desarrollo" --content-view "CV_Oporto" --organization "EDPR Oporto"
Activation key created.
#

# hammer activation-key list --organization "EDPR Oporto"
---|----------------------------------|----------------|-----------------------|-------------
ID | NAME                             | HOST LIMIT     | LIFECYCLE ENVIRONMENT | CONTENT VIEW
---|----------------------------------|----------------|-----------------------|-------------
3  | Activation_Key_Oporto_Desarrollo | 0 of Unlimited | LF_Oporto_Desarrollo  | CV_Oporto
---|----------------------------------|----------------|-----------------------|-------------
#

No confundir el archivo de manifiesto con las claves de activación

La creación de claves de activación en Red Hat Satellite y la importación de un archivo de manifiesto son dos componentes que sirven a diferentes propósitos dentro de la gestión de suscripciones y contenido en Satellite.

Archivo de Manifiesto

Cuando creas un archivo de manifiesto desde la página web de Red Hat y lo importas a Red Hat Satellite, efectivamente estás seleccionando y autorizando el acceso a un conjunto específico de contenido y suscripciones para tu organización dentro de Satellite. El archivo de manifiesto:

  • Define qué suscripciones y repositorios están disponibles para tu instancia de Satellite.
  • Establece un enlace entre tu cuenta de Red Hat y tu servidor Satellite, permitiendo a Satellite acceder a los contenidos de Red Hat que has suscrito.

Claves de Activación

Las claves de activación, por otro lado, son utilizadas dentro de Satellite para simplificar el proceso de registro de sistemas clientes (hosts) a Satellite, y para asociar automáticamente esos sistemas con suscripciones específicas, vistas de contenido (que pueden incluir uno o más repositorios), y otros ajustes de configuración. Con las claves de activación puedes:

  • Asignar automáticamente suscripciones a sistemas clientes durante el registro.
  • Determinar qué contenido (vistas de contenido que pueden contener uno o varios repositorios) está disponible para los sistemas clientes.
  • Aplicar configuraciones predefinidas a los sistemas clientes, como variables de entorno, configuraciones de Puppet, etc.

Ubicación de los Logs de RedHat Satellite

Los logs se almacenan en /var/log/messages, /var/log/httpd y /var/lib/foreman-proxy/openscap/content. Podemos usar una política de logrotate para la retención de los logs y vaciado automático de los filesystems.

Sincronización de los repositorios

Pongamos por caso que necesitamos generar un repositorio mensual. Los pasos a seguir son:

  • Los repositorios en Satellite se organizan dentro de ‘productos’. Para crear un nuevo producto, puedes usar:
hammer product create --organization "MiOrganizacion" --name "MiProducto"

Siguiendo con el ejemplo anterior con los servidores de Oporto:

# hammer product create --organization "EDPR Oporto" --name "Repositorios_yum_dnf"
Product created.
#
  • Para crear un repositorio personalizado mensual, especifica el nombre del producto y la URL del repositorio. Por ejemplo, para crear un repositorio para marzo de 2024:
hammer repository create --organization "MiOrganizacion" --product "MiProducto" --name "202403" --content-type "yum" --url "http://mirror.example.com/path/to/repo"
# hammer repository create --name "rhel-9-for-x86_64-appstream-eus-rpms_202402" --url "https://cdn.redhat.com/content/eus/rhel9/$releasever/x86_64/appstream/os" --content-type "yum" --product "Repositorios_yum_dnf" --organization "EDPR Oporto"
Repository created.
#

# hammer repository list
---|---------------------------------------------|----------------------|--------------|--------------------------------------------------------------
ID | NAME                                        | PRODUCT              | CONTENT TYPE | URL
---|---------------------------------------------|----------------------|--------------|--------------------------------------------------------------
1  | rhel-9-for-x86_64-appstream-eus-rpms_202402 | Repositorios_yum_dnf | yum          | https://cdn.redhat.com/content/eus/rhel9//x86_64/appstream/os
---|---------------------------------------------|----------------------|--------------|--------------------------------------------------------------
#
  • Los repositorios de seguridad se crean de una manera similar a los repositorios mensuales, pero con un enfoque en los parches de seguridad. Por ejemplo, para marzo de 2024:
hammer repository create --organization "MiOrganizacion" --product "MiProducto" --name "202403_sec" --content-type "yum" --url "http://security-updates.example.com/path/to/repo"
  • Después de crear un repositorio, necesitamos sincronizarlo para descargar el contenido del repositorio remoto:
hammer repository synchronize --organization "MiOrganizacion" --product "MiProducto" --name "202403"
# hammer repository synchronize --id "1" --organization "EDPR Oporto"

Se entiende que el manifiesto se debe haber importado previamente.

Asignar Repositorios a un Host o Sistema

Supongamos que hemos creado un repositorio mensual llamado «202403» y un repositorio de seguridad «202403_sec» en un producto llamado «MiProducto». Ahora, queremos asegurarnos de que un host específico esté suscrito a estos repositorios.

Uso del satélite de RedHat desde los servidores cliente

Antes de hacer nada, nos aseguraremos de que se han abierto los puertos 80 y 443 hacia el servidor donde corre el satélite o las cápsulas.

Registro del host cliente en el satélite

Desde la consola del Satélite

  • Nos conectamos a la consola de administración de RedHat Satélite y vamos al menú Hosts –> Register host
RedHat Satelite - Registrar Host desde la WEB
  • Rellenamos todos los campos que nos pide
RedHat Satelite - Registrar Host desde la WEB - Generar comando

Si todavía no hemos importado la clave de activación deberemos hacerlo antes desde el menú Content -> Activation Keys y luego registramos el satélite:

subscription-manager register --org="Your_Org" --activationkey="Your_Activation_Key"

Finalmente, hacemos clic en el botón Generate. Esto generará un comando que deberemos ejecutar desde el sistema que queremos registrar.

Una vez ejecutado el comando, ya podremos registrar nuestro sistema (cliente) utilizando el satélite, ejecutando el siguiente comando desde el cliente:

subscription-manager config --rhsm.baseurl=https://satellite.example.com/pulp/content --server.hostname=satellite.example.com

Mediante el Katello

Para registrar un host en RedHat Satellite, debemos seguir una serie de pasos que incluyen la instalación del paquete de registro y la ejecución del comando de registro:

  • Instalar el Paquete de Registro de Satellite:

Primero, necesitamos instalar el paquete que permite el registro del host en tu servidor Satellite. Este paquete es conocido como katello-ca-consumer. La URL exacta depende de tu servidor Satellite específico. Por ejemplo:

rpm -Uvh http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm

Reemplaza http://satellite.example.com con la dirección de tu propio servidor Satellite.

  • Limpiar Registros Antiguos (si es necesario):

Si el host estaba registrado previamente en otro servidor Satellite o en Red Hat Network (RHN), debemos limpiar esos registros:

subscription-manager clean
  • Registrar el Host en Satellite:

Utilizaremos el comando subscription-manager para registrar el host en el servidor Satellite. Necesitaremos las credenciales de un usuario con permisos para registrar hosts.

subscription-manager register --org="TuOrganizacion" --activationkey="TuClaveDeActivacion"

Reemplaza "TuOrganizacion" con el nombre de tu organización en Satellite y "TuClaveDeActivacion" con la clave de activación correspondiente a los contenidos que deseas que el host consuma.

  • Verificar el Registro:

Podemos verificar que el host se ha registrado correctamente con:

subscription-manager status

Instalación de paquetes en el servidor cliente del satélite

Para que un servidor cliente utilice el satélite de RedHat, debe tener instalado el software cliente del satélite:

yum install -y satellite-client

Seguidamente, editaremos el fichero /etc/rhsm/rhsm.conf, con la configuración del servidor Satélite:

satellite_url=https://<dirección IP del servidor>:8080
satellite_activation_key=<clave de activación>

Reiniciaremos el servicio del cliente del satélite:

systemctl restart rhsm-client

Registraremos el Sistema:

subscription-manager register
subscription-manager attach --pool=<pool id>

A partir de aquí, ya podemos utilizar el dnf o yum update/install para instalar software o actualizar el sistema siempre que los repositorios ya se hayan sincronizado en el satélite.

Mediante la API del satélite

Podemos utilizar el comando curl para registrar un servidor cliente utilizando el satélite:

Modo seguro:
curl -X POST https://satellite.example.com/api/registration_commands --user "My_User_Name" -H 'Content-Type: application/json' -d '{ "registration_command": { "activation_keys": ["My_Activation_Key_1, My_Activation_Key_2"] }}'

Modo inseguro:
curl -X POST https://satellite.example.com/api/registration_commands --user "My_User_Name" -H 'Content-Type: application/json' -d '{ "registration_command": { "activation_keys": ["My_Activation_Key_1, My_Activation_Key_2"], "insecure": true }}'

Descarga de paquetes sin instalarlos

Podemos preparar los hosts para actualizaciones futuras usando el comando yum o dnf en modo solo caché. Por ejemplo:

yum makecache 

o para descargar paquetes específicos sin instalarlos:

yumdownloader <nombre_del_paquete>
o

yum update --downloadonly

Estos comandos deben ejecutarse en los hosts cliente, no en el servidor Satellite.

En el contexto de Satellite, el enfoque generalmente implica la preparación de los contenidos a través de Content Views y la gestión de la sincronización y distribución de paquetes a través de la infraestructura de Satellite, en lugar de comandos individuales de descarga en los hosts.

RedHat Satellite Capsule Servers

Los servidores Capsule de RedHat Satellite son servidores que se utilizan para escalar la infraestructura de RedHat Satellite. Normalmente, se instalan en diferentes ubicaciones geográficas para proporcionar una distribución más eficiente de los recursos y las cargas de trabajo.

Los servidores Capsule de RedHat Satellite ofrecen las siguientes ventajas:

  • Escalabilidad: Permiten escalar la infraestructura de RedHat Satellite para que pueda gestionar un número mayor de sistemas.
  • Rendimiento: Pueden ayudar a mejorar el rendimiento de la infraestructura de RedHat Satellite al distribuir la carga de trabajo entre varios servidores.
  • Disponibilidad: Pueden ayudar a mejorar la disponibilidad de la infraestructura de RedHat Satellite al proporcionar redundancia.

Los servidores Capsule de RedHat Satellite pueden utilizarse para proporcionar una variedad de servicios, como:

  • Almacenamiento de contenido: Los servidores Capsule pueden utilizarse para almacenar contenido de Red Hat, como imágenes de sistemas operativos, paquetes de software y parches de seguridad.
  • Provisión de sistemas: Los servidores Capsule tienen una funcionalidad para aprovisionar nuevos sistemas.
  • Implementación de software: Los servidores Capsule pueden utilizarse para instalar software en los sistemas.
  • Gestión de parches: Los servidores Capsule pueden utilizarse para gestionar los parches de seguridad en los sistemas.

Requerimientos previos

  • Procesador con arquitectura x86_64 con, al menos, 4 cores a 2GHz
  • La última versión de RedHat 8
  • Un mínimo de 12GB de RAM
  • Un suscripción válida de RedHat Satellite
  • Acceso como root
  • Resolución DNS directa e inversa
  • El satélie solamente soporta codificación UTF-8
  • SELinux habilitado, aunque puede estar funcionando en modo permisivo
  • Almacenamiento:
RedHatSatellite Capsule Server - Tamaño de los filesystems
  • Puertos de comunicaciones:

Tráfico entrante

Destination PortProtocolServiceSourceRequired ForDescription
53TCP and UDPDNSDNS Servers and clientsName resolutionDNS (optional)
67UDPDHCPClientDynamic IPDHCP (optional)
69UDPTFTPClientTFTP Server (optional) 
443, 80TCPHTTPS, HTTPClientContent RetrievalContent
443, 80TCPHTTPS, HTTPClientContent Host RegistrationCapsule CA RPM installation
443TCPHTTPSRed Hat SatelliteContent MirroringManagement
443TCPHTTPSRed Hat SatelliteCapsule APISmart Proxy functionality
443TCPHTTPSClientContent Host registrationInitiation Uploading facts Sending installed packages and traces
1883TCPMQTTClientPull based REX (optional)Content hosts for REX job notification (optional)
5646, 5647TCPAMQPClientGoferd message busForward message to client (optional) Katello agent to communicate with Qpid dispatcher
8000TCPHTTPClientProvisioning templatesTemplate retrieval for client installers, iPXE or UEFI HTTP Boot
8000TCPHTTPClientPXE BootInstallation
8140TCPHTTPSClientPuppet agentClient updates (optional)
8443TCPHTTPSClientContent Host registrationDeprecated and only needed for Client hosts deployed before upgrades
9090TCPHTTPSClientRegister EndpointClient registration with an external Capsule Server
9090TCPHTTPSClientOpenSCAPConfigure Client
9090TCPHTTPSDiscovered NodeDiscoveryHost discovery and provisioning
9090TCPHTTPSRed Hat SatelliteCapsule APICapsule functionality
Tráfico saliente
Destination PortProtocolServiceDestinationRequired ForDescription
 ICMPpingClientDHCPFree IP checking (optional)
7TCPechoClientDHCPFree IP checking (optional)
22TCPSSHTarget hostRemote executionRun jobs
53TCP and UDPDNSDNS Servers on the InternetDNS ServerResolve DNS records (optional)
53TCP and UDPDNSDNS ServerCapsule DNSValidation of DNS conflicts (optional)
68UDPDHCPClientDynamic IPDHCP (optional)
443TCPHTTPSSatelliteCapsuleCapsule Configuration management Template retrieval OpenSCAP Remote Execution result upload
443TCPHTTPSRed Hat PortalSOS reportAssisting support cases (optional)
443TCPHTTPSSatelliteContentSync
443TCPHTTPSSatelliteClient communicationForward requests from Client to Satellite
443TCPHTTPSInfoblox DHCP ServerDHCP managementWhen using Infoblox for DHCP, management of the DHCP leases (optional)
623  ClientPower managementBMC On/Off/Cycle/Status
5646TCPAMQPSatellite ServerKatello agentForward message to Qpid dispatch router on Capsule (optional)
7911TCPDHCP, OMAPIDHCP ServerDHCPThe DHCP target is configured using –foreman-proxy-dhcp-server and defaults to localhost ISC and remote_isc use a configurable port that defaults to 7911 and uses OMAPI
8443TCPHTTPSClientDiscoveryCapsule sends reboot command to the discovered host (optional)
En caso de tener Firewalld configurado entre el Satellite Server y los servidores Capsule, abriremos el siguiente puerto de comunicaciones en el satélite:
firewall-cmd --add-port="5646/tcp"
firewall-cmd --runtime-to-permanent

Habilitar conexiones desde el Satellite Server y los clientes hacia el Capsule server: 

firewall-cmd \
--add-port="53/udp" --add-port="53/tcp" \
--add-port="67/udp" \
--add-port="69/udp" \
--add-port="80/tcp" --add-port="443/tcp" \
--add-port="5647/tcp" \
--add-port="8140/tcp" \
--add-port="8443/tcp" \
--add-port="8000/tcp" --add-port="9090/tcp"

firewall-cmd --runtime-to-permanent

Instalación de un Capsule Server

Registro del Capsule Server en el Satellite Server

Una vez que ya hemos configurado los requerimientos previos, registraremos el servidor Cápsula en el servidor Satélite.

  • Generamos el comando de registro desde el Satéllite Server:
hammer host-registration generate-command --activation-keys "My_Activation_Key"

En caso de no usar certificado SSL, podemos desactivarlo:

hammer host-registration generate-command --activation-keys "My_Activation_Key" --insecure true

  • Entramos en el servidor Cápsula y ejecutamos el comando de registro generado anteriormente.
  • Comprobamos en el fichero /etc/yum.repos.d/redhat.repo que se han generado los nuevos repositorios que apuntan al satélite, correctamente.

El comando de registro también lo podemos generar entrando a la consola de administración del Servidor Satélite:

  1. In the Satellite web UI, navigate to Hosts > Register Host.
  2. From the Activation Keys list, select the activation keys to assign to your host.
  3. Click Generate to create the registration command.

Asociar nuestra suscripción de RedHat a los Capsule Servers

Una vez registrado el servidor Cápsula debemos identificar y asociar el pool id de nuestra suscripción de RedHat.

Buscamos el pool ID:

subscription-manager list --all --available --matches 'Red Hat Satellite Infrastructure Subscription'

Con este comando obtendremos información acerca de nuestra suscripción de RedHat. Uno de los datos que aparecerán, será el pool id. Ejemplo:

Pool ID:             8aca43dd771bf31101771c0231f906a5

En el servidor Cápsula, nos registramos al Pool ID que hayamos obtenido con el comando anterior:

subscription-manager attach --pool=pool_id

Configuración de los repositorios de instalación del Capsule Server

  • Deshabilitamos todos los repositorios:
subscription-manager repos --disable "*"

  • Habilitamos, solamente, los repositorios de instalación de Capsule Server:
subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms \
--enable=rhel-8-for-x86_64-appstream-rpms \
--enable=satellite-capsule-6.13-for-rhel-8-x86_64-rpms \
--enable=satellite-maintenance-6.13-for-rhel-8-x86_64-rpms

  • Habilitamos el siguiente modulo:
dnf module enable satellite-capsule:el8
dnf repolist enabled

Instalación del Capsule Server

dnf update
dnf install satellite-capsule

Igual que hicimos con el servidor satélite, en los servidores cápsula también instalaremos chrony.

Uso del Capsule Server desde los servidores cliente de RedHat

Una vez que ya está en funcionamiento el servidor cápsula, el siguiente paso es utilizarlo desde un servidor cliente para instalar o actualizar software. Para ello, seguiremos los siguientes pasos en el servidor cliente:

  • Editamos el fichero /etc/rhsm/rhsm.conf
  • Añadimos la configuración del Capsule Server:
satellite_url=https://<dirección IP del servidor>:8080
satellite_activation_key=<clave de activación>
capsule_server_url=https://<dirección IP del servidor Capsule>:8080

Podemos añadir tantos servidores Cápsula como tengamos disponibles en nuestra red:

capsule_server_url=https://<dirección IP del servidor Capsule 1>:8080
capsule_server_url=https://<dirección IP del servidor Capsule 2>:8080
  • Reiniciamos el servicio del cliente de RedHat Satellite:
systemctl restart rhsm-client

  • Sincronizamos los repositorios:
subscription-manager sync

A partir de aquí, ya podemos utilizar yum o dnf de la manera habitual.

¿Desde qué URL se descarga el software el Satélite?

El satélite actúa como un servidor intermediario entre los sistemas y los repositorios de Red Hat. En un escenario típico, el Satellite no descarga software directamente desde una URL de Red Hat en Internet, sino que sincroniza los contenidos de los repositorios de Red Hat a tu infraestructura local. Luego, los sistemas cliente se conectan al Satellite para obtener sus actualizaciones y paquetes.

El flujo de trabajo sería:

  • Sincronización del Repositorio: Satellite se sincroniza con los repositorios de Red Hat para obtener los paquetes más recientes. Esta sincronización se realiza a través de una conexión a Internet hacia los repositorios de Red Hat, pero la URL exacta puede variar dependiendo de la configuración y los repositorios específicos que estés utilizando.
  • Servidor de Satellite Como Fuente: Una vez que el Satellite tiene una copia local de los paquetes, actúa como un servidor de repositorio para tus sistemas internos. Los sistemas cliente se configuran para apuntar a tu servidor Satellite en lugar de a los repositorios de Red Hat en Internet. La URL a la que apuntan estos sistemas será algo específico de tu red, generalmente algo como http://satellite.example.com/path/to/repo.
  • Gestión de Contenidos: Cuando configuramos los sistemas cliente, podemos especificar qué canales o repositorios dentro del Satellite queremos utilizar. Esto se hace normalmente a través de la interfaz web de Satellite o mediante herramientas de línea de comandos como subscription-manager.

Las siguientes URLs deberían ser accesibles:

Fuentes de información

COMPÁRTEME

Deja un comentario