Día 5 "Red Hat Satellite Administration III" - jalvearg/Workshop-satellite GitHub Wiki

Tareas de Mantenimiento

Meta:
Realizar operaciones de mantenimiento sobre la plataforma RH Satellite

Objetivos:
- Respaldar la solucion

Secciones:
- Respaldo FULL e INCREMENTAL

Laboratorios:
- Respaldo de la plataforma
- Restauracion de la plataforma
- Ampliando discos

Requisitos:
- Satellite


## Respaldo y restauracion del sistema Satellite

Para respaldar el sistema, usamos el comando foreman-maintain backup, por temas de laboratorio usamos el comando de bakcup sin respaldar los datos de pulp, estos datos ocupan mucho espacio, por ello para temas de laboratorio usamos la directiva --skip-pupl-content


# foreman-maintain backup offline --skip-pulp-content /var/satellite-backup/

Starting backup: 2022-04-28 14:03:52 -0400
Running preparation steps required to run the next scenarios
================================================================================
Make sure Foreman DB is up: 
/ Checking connection to the Foreman DB                               [OK]      
--------------------------------------------------------------------------------


Running Backup
================================================================================
Confirm turning off services is allowed: 
WARNING: This script will stop your services.

Do you want to proceed?, [y(yes), q(quit)] yes
                                                                      [OK]      
--------------------------------------------------------------------------------
Prepare backup Directory: 
Creating backup folder /var/satellite-backup/satellite-backup-2022-04-28-14-03-52
                                                                      [OK]
--------------------------------------------------------------------------------
Check if the directory exists and is writable:                        [OK]
--------------------------------------------------------------------------------
Generate metadata: 
| Collecting list of plugins'ErbParser' ignorado                                
'RubyParser' ignorado
\ Saving metadata to metadata.yml                                     [OK]      
--------------------------------------------------------------------------------
Detect features available in the local proxy:                         [OK]
--------------------------------------------------------------------------------
disable active sync plans: 
| Total 1 sync plans are now disabled.                                [OK]      
--------------------------------------------------------------------------------
Add maintenance_mode chain to iptables:                               [OK]
--------------------------------------------------------------------------------
Stop applicable services: 

Stopping the following service(s):
rh-redis5-redis, postgresql, pulpcore-api, pulpcore-content, pulpcore-api.socket, pulpcore-content.socket, [email protected], [email protected], [email protected], [email protected], tomcat, dynflow-sidekiq@orchestrator, foreman, httpd, puppetserver, foreman.socket, dynflow-sidekiq@worker-1, dynflow-sidekiq@worker-hosts-queue-1, foreman-proxy
- stopping pulpcore-content.socket                                              
Warning: postgresql.service changed on disk. Run 'systemctl daemon-reload' to reload units.
| All services stopped                                                [OK]      
--------------------------------------------------------------------------------
Backup config files: 
/ Collecting config files to backup                                   [OK]      
--------------------------------------------------------------------------------
Backup Pulp data:                                                     [SKIPPED]
--------------------------------------------------------------------------------
Backup Candlepin DB offline: 
| Collecting data from /var/opt/rh/rh-postgresql12/lib/pgsql/data/    [OK]      
--------------------------------------------------------------------------------
Backup Foreman DB offline: 
Already done                                                          [OK]
--------------------------------------------------------------------------------
Backup Pulpcore DB offline: 
Already done                                                          [OK]
--------------------------------------------------------------------------------
Start applicable services: 

Starting the following service(s):
rh-redis5-redis, postgresql, pulpcore-api, pulpcore-content, [email protected], [email protected], [email protected], [email protected], tomcat, dynflow-sidekiq@orchestrator, foreman, httpd, puppetserver, dynflow-sidekiq@worker-1, dynflow-sidekiq@worker-hosts-queue-1, foreman-proxy
\ starting pulpcore-content                                                     
Warning: postgresql.service changed on disk. Run 'systemctl daemon-reload' to reload units.
- All services started                                                [OK]      
--------------------------------------------------------------------------------
re-enable sync plans: 
| Total 1 sync plans are now enabled.                                 [OK]      
--------------------------------------------------------------------------------
Remove maintenance_mode chain from iptables:                          [OK]
--------------------------------------------------------------------------------
Compress backup data to save space: 
/ Compressing backup of Postgres DB                                   [OK]      
--------------------------------------------------------------------------------

Done with backup: 2022-04-28 14:09:44 -0400
**** BACKUP Complete, contents can be found in: /var/satellite-backup/satellite-backup-2022-04-28-14-03-52 ****

En caso hagamos un backup full y luego deseamos crear respaldos incrementales sobre ese backup full usamos:


# satellite-maintain backup offline --incremental /var/backup_directory/full_backup /var/backup_directory

Podemos crear algunos usuarios o registros en la plataforma de Satellite y ejecutar un respaldo, luego borrar el registro o usuario y ejecutar un restore con:
# satellite-maintain restore -w restore-installer-reset,pulp-migrate /var/backup_directory/full_backup

En caso de alertas de error, pueden omitirse ya que los backup y restores son parciales por la directiva --skip-pulp-content, ignore esos errores y recuerde que en un ambiente de produccion el respaldo de pulp si esta presente.


## Ampliando espacios en discos

Muchas veces, los discos del sistema se quedan sin espacio disponible, en estos casos podemos ampliarlos de forma dinamica en linea ya que usan el sistema LVM, para ellos necesitamos usar el comando fdisk con algun disco lire y particionarlo, en este ejemplo usamos el disco sdb


# fdisk /dev/sdb
Orden (m para obtener ayuda): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
Using default value 209715199
Partition 1 of type Linux and of size 100 GiB is set
Command (m for help): w

Una vez particionado el disco, lo mapeamos como pv
# pvcreate /dev/sdb1

Agregamos el PV al VG rhel
# vgextend rhel_satellite /dev/sdb1

Con el comando anterior extendemos la capacidad del VG y podemos agregar espacional a los volumenes, por ejemplo ampliamos en 10GB el volumen /var de 20GB a 30GB
# lvresize -L +5G /dev/rhel_satellite/root

Aplicamos el cambio en el filesystem con
# xfs_growfs /dev/rhel_satellite/root

Finalmente validamos el nuevo espacio con
# df -h


## Gestión de actualizaciones de un sistema cliente

Validamos la cantidad de erratas descubiertas en el servidor, tome nota de estos datos
# yum list-security

Si queremos validar el detalle de esas actualizaciones usamos
# yum list-security info

Seleccionamos una actualizacion del tipo bugfix para corregirlas
# yum update --advisory=RHBA-2020:3009

Vuelva a validar la cantidad de erratas descubiertas en el servidor y compare con el dato anterior
# yum list-security

Este mismo procedimiento puede ser realizado con la interfaz gráfica, login en la plataforma y en Hosts de contenido busque su sistema cliente

En el TAB de Errata busque una actualización que considere critica para el sistema, tome nota del codigo

Seleccione la actualización y aplíquela

Espere que que termine de actualizarse, vuelva a examinar el servidor y busque si la actualizacion aun esta por aplicar

Ejemplo de casos de soporte y acceso a la documentación oficial

Meta:
Conocer el flujo de creación de un caso de soporte

Objetivos:
- Generar sosreport
- Utilizar el tool de soporte

Secciones:
- Gestión de incidentes

Laboratorios:
- Instalar sosreport
- Tool de soporte de Red Hat

Requisitos:
- RHEL client


## Instalar el sosreport

El comando sosreport es una herramienta que recoge información sobre la configuración, información del sistema e información diagnóstica de un sistema Red Hat Enterprise Linux system. Por ejemplo: la versión de kernel que está corriendo, los módulos cargados y los archivos de configuración del sistema y de los servicios. El comando también corre programas externos para recoger más información y almacena el resultado en un archivo.

El resultado del comando sosreport es el punto de partida común para los ingenieros de soporte de Red Hat support cuando realizan el análisis inicial de un caso referido a un sistema Red Hat Enterprise Linux.

Para instalar el comando sosreport instalamos el paquete
# yum install sos

Cuando aperturamos un caso de soporte, el sistema de Red Hat nos genera un codigo de atencion, es recomendable ejecutar el comando sosreport referenciando ese numero de caso de soporte, por ejemplo si reportamos un incidente y el sistema nos genera el codigo 20091983 entonces usamos el siguiente procedimiento para empaquetar todos los archivos importantes via sosreport


# sosreport
Press ENTER to continue, or CTRL-C to quit.
Please enter the case id that you are generating this report for []: <strong>XXXXXXX</strong>
Your sosreport has been generated and saved in: <strong>/var/tmp/sosreport-prueba01-XXXXXXX-2022-04-28-ezrwzxn.tar.xz</strong>


## Tool de soporte

En caso desee subir el archivo sosreport directamente desde el sistema suscrito, puede apoyarse en el tool de soporte, instalelo con
# yum install redhat-support-tool

Luego ejecute el comando donde se indica el nro de caso de soporte despues de -c y el archivo sosreport despues de -f
# redhat-support-tool addattachment -c 0000000 -f /var/tmp/sosreport-00000.tar.xz

Se debe ingresar credenciales de cuenta de Red Hat para subir el archivo.

Realizar por lo menos una tarea automatizada con puppet y/o ansible

Meta:
Conocer las herramientas de automatización de Satellite

Objetivos:
- Automatizar operaciones con puppet
- Automatizar operaciones con ansible

Secciones:
- Gestión de operaciones

Laboratorios:
- Instalar un paquete vía Satellite
- Registrar clases de puppet
- Registrar clientes de puppet
- Configuración de parámetros de CHRONY con puppet

Requisitos:
- Satellite
- RHEL client


## Instalar un paquete vía Satellite

La plataforma de satellite permite instalar un paquete a los clientes registrados, intentemos instalar el paquete CHRONY al cliente satellite, antes de iniciar la instalación ingrese al terminal del cliente satellite y valide que no tenga el rpm de chrony instalado


# rpm -q chrony
package chrony is not installed

Ingresamos al cliente en la sección de Hosts > Hosts de contenido y seleccionamos el cliente

En la sección de Paquetes le damos a Acciones

Ejecutamos la accion de instalar el paquete chrony

Esperamos que la tarea termine de ejecutar con exito

Volvemos a ejecutar el comando de verificación en el cliente
# rpm -q chrony

Ahora el paquete esta instalado sin embargo el servicio no esta activo
# systemctl status chronyd

Tampoco esta configurado con algun servidor que provea la hora
# cat /etc/chrony.conf | grep server

Satellite nos ayuda a instalar el paquete y para la configuracion de los sistema nos apoyaremos en puppet.


## Registrar clases de puppet(Solo el instructor)

Las clases de puppet a través de los módulos de puppet facilitan la configuración de servicios a través del uso de parámetros, estos módulos pueden ser cargados por la linea de comandos o por entorno gráfico, a continuación el instructor cargara el modulo de puppet CHRONY para los siguientes laboratorios

Para buscar modulos relacionados con el servicio chrony
# puppet module search chrony

Una vez identificado el modulo lo instalamos con
# puppet module install puppet-chrony

Se importa las clases del modulo en el ambiente

Se habilita la customización de parámetros de la clase chrony y la infraestructura que lista para que pueda enviar la configuración en el siguiente laboratorio


## Registrar clientes de puppet

Para la ejecución de las tareas de puppet primero se debe registrar el cliente de puppet en el servidor cliente de satellite, para ello primero validamos que el cliente tenga el repositorio de satellite-tools-6.10-for-rhel-8-x86_64-rpms con
# yum repolist

Luego instalamos el cliente con
# yum install -y puppet

Ahora modificamos el archivo de configuración /etc/puppetlabs/puppet/puppet.conf para que incluya la linea
server=satellite.local

Iniciamos el servicio y habilitamos puppet
systemctl start puppet
systemctl enable puppet

Validamos la configuración del cliente
# puppet agent --test --noop

Se creo una petición de certificado digital pero esta pendiente de aprobación, para ello vamos a la sección de Infraestructura > Capsulas inteligentes y seleccionamos el servidor satellite

En la sección de CA Puppet se vera una alerta de certificado, ingresamos

Buscamos nuestro cliente de satellite y le damos registrar

Validamos de nuevo el cliente y verificamos que no aparezcan errores (ejecutar 2 veces)
# puppet agent --test --noop

Notamos que el cliente esta registrado en el ambiente Produccion y no hay operaciones por validar, se encuentra listo para enviar la configuración deseada


## Configuración de parámetros de CHRONY con puppet

Con el cliente listo y la clase de puppet habilitada por el instructor podemos crear nuestro grupo de configuración personalizado para enviar parámetros de configuración del servidor NTP/CHRONY, el objetivo de crear un grupo de configuración es segmentar la cantidad de servidores que requieren esa configuración especifica, el primer paso es ir a la sección Configurar > Grupos de configuración y creamos un grupo nuevo

Nombramos el grupo con un nombre que nos identifique e incluimos la clase CHRONY a nuestro grupo nuevo

En la sección de Hosts > Todos los hosts, seleccionamos nuestro cliente satellite

Editamos el cliente

Nos aseguramos que los parámetros de puppet del cliente estén configurados

En Clases de Puppet añadimos nuestro grupo de configuracion

Aceptamos la configuración y volvemos a ingresar a Editar, ahora vamos a la sección de Parámetros y sobrescribimos los parámetros

En el cliente satellite ejecutamos el comando del verificacion del agente y analizamos la salida
# puppet agent --test --noop

Como vera el comando puppet valida que no esta el servicio activo y que no tiene configuraciones de servidores de hora, para aplicar estas nuevas configuración usamos el comando
# puppet agent --test

Ahora validamos los servicios de chrony con
# systemctl status chronyd
# cat /etc/chrony.conf | grep server


## Otras opciones para programación de tareas

Satellite ademas de puppet cuenta con diferentes opción de integración con otra herramientas de ejecución de tareas, entre ellas ansible o incluso lo mas simple como comandos SSH, en el siguiente ejemplo ejecutamos la tarea remota de copia de un log importante

En la sección de Todos los hosts, seleccionamos nuestro cliente de satellite

Programamos un trabajo remoto

Definimos el trabajo remoto

El programa debe finalizar con exito

Ingresamos al cliente satellite y validamos si se ejecuto la tarea.

⚠️ **GitHub.com Fallback** ⚠️