sat15 - gpulido-redhat/workshopclaro GitHub Wiki

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:
- Registrar un sistema RHEL a la plataforma Satellite
- 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


## Registrar un sistema RHEL a la plataforma Satellite

Desde la linea de comandos descargamos los requisitos para registrar el sistema cliente
# curl --insecure --output katello-ca-consumer-latest.noarch.rpm https://satellite.opennova.pe/pub/katello-ca-consumer-latest.noarch.rpm
# yum localinstall katello-ca-consumer-latest.noarch.rpm

Registramos el sistema usando el Activation Key rhel8 que ya fue creador por el administrador
# subscription-manager register --org="OpenNova" --activationkey="rhel8"
# subscription-manager attach --auto

Debera validar que tenga al menos 3 repostorios: Base, AppStream y Tools de Satellite con el comando
# yum repolist

En caso de no tener los repositorios activados, hacerlo manualmente con:
# subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms
# subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms
# subscription-manager repos --enable=satellite-tools-6.7-for-rhel-8-x86_64-rpms

Instalamos los agentes de katello
# yum -y install katello-host-tools
# yum -y install katello-host-tools-tracer
# yum -y install katello-agent


## 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 modulos 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 aboe-chrony

Se importa las clases del modulo en el ambiente producción

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.7-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.opennova.pe

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

## Ejercicio propuesto 01

Con lo aprendido sobre clases de puppet implemente un nuevo grupo llamado Nro de Alumno-TUNED el cual implementara el perfil de afinamiento del sistema orientado a servicios de redes
- El paquete tuned ya viene implementado en los RHEL8
- El comando para listar los perfiles disponibles es tuned-adm list y el comando para validar el perfil actual es tuned-adm active
- El instructor ya habilito la clase tuned para que pueda ejecutar la configuración


- Solucion

Con el cliente listo y la clase de puppet habilitada por el instructor podemos crear nuestro grupo de configuración personalizadoTESTX-TUNED para enviar parámetros de configuración del perfil de tuned, 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

Creamos el grupo TUNED y asignamos la clase de tunes

Regresamos a la secciond e HOSTS > Todos los Host y seleccionamos nuestro cliente de prueba

Editamos las propiedades del cliente de prueba

En clases de puppet, añadimos el grupo de configuracion nuevo con opciones de tunes

Ahora podemos editar el perfil del sistema cliente

Para verificar el perfil actual de tuned usamos
# tuned-adm active

Para verificar los perfiles de tuned disponible usamos
# tuned-adm list

Realice algunas modificaciones al perfil de tuned y ejecutelo inmediatamente con el comando
# puppet agent --test

## Ejercicio propuesto 02

El auditor de la empresa considera que el login via SSH con el usuario ROOT es inseguro sugiere deshabilitar esa caracteristica en los servidores, utilizando lo aprendido realice las siguientes operaciones en secuencia:


- Cree un usuario personal en su sistema cliente
- Cree un nuevo grupo de configuración llamado Nro de Alumno-SSH
- Habilite la política de seguridad que bloquea el acceso ssh para el usuario root, validelo con un intento de conexión con root
- Loguese con su usuario personal y realice el cambio a root con el comando su - root
- Modifique la política para que vuelva a permitir el acceso remoto ssh para root y certifique la politica para responder al informe de auditoria
- El instructor ya habilito la clase sshd_config para que pueda modificar la configuración del archivo /etc/ssh/sshd_config

Solucion Creamos el usuario remote
# useradd remote

Cambiamos la clave de remote
# passwd remote

Creamos un nuevo grupo de configuracion

Nombramos el grupo de configuracion y añadimos la clase de ssh

Volvemos a seleccionar nuestro cliente

Editamos el cliente

Agregamos el grupo de configuracion al cliente

Modificamos el parametro de acceso remoto como root de yes a no

Aplicamos los cambios en el sistema cliente
# puppet agent --test

Intentemos crear una nueva session SSH con el usuario root, en caso de no poder crearla el ejercicio es correcto, podemos regresar a la configuracion anterior con el usuario remote


## 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

Definimos las credenciales del usuario a ejecutar y sobre todo la opción de ejecutar ahora

El programa debe finalizar con exito

Ingresamos al cliente satellite y validamos si se ejecuto la tarea

## Ejercicio propuesto 04

Es importante respaldar la configuración de un sistema, por buena practica estas confifuraciones se realizan en /etc, ejecute una tarea remota via satellite que permita este respaldo bajo las siguiente condiciones:
- El archivo de respaldo debe guardarse en la carpeta /tmp
- El archivo de respaldo debe tener el formato backup_config_DiaMesAño.tar.gz
- El respaldo debe realizarse de forma programada pero no inmediatamente sino 2 minutos después de la creación de la tarea


Tips de Linux
- el comando tar -czvf carpeta.tar.gz carpeta/ permite crear el archivo comprimido
- el comando date '+%d%m%Y%H%M%S' entrega la fecha en formato DiaMesAñoHoraMinutoSegundo

Solucion


volver

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