Hola Habr!
Poco antes de Navidad, se decidi贸 estudiar Spacewalk en el departamento de TI: este es el sistema Red Hat, un an谩logo gratuito de Satellite, para la gesti贸n de configuraci贸n centralizada, actualizaciones del sistema y soporte conveniente para todo el parque de servidores.
Debido al hecho de que la documentaci贸n disponible en el sitio web oficial es bastante escasa para comentarios adicionales de varios tipos de soluci贸n de problemas, la tarea consist铆a en estudiar el producto para su introducci贸n gradual primero a los servidores de prueba, y luego a los productos.
La idea principal de introducir Spacewalk no era solo la centralizaci贸n y la simplificaci贸n del control, sino tambi茅n para que nadie jugara actualizaciones en los servidores del nuevo proyecto con bol铆grafos juguetones, ya que los precedentes ya ocurrieron.
Despu茅s de dos semanas de trabajo, todo el conocimiento que recib铆 se ingres贸 en el an谩logo interno de Confluence, y un d铆a libre me llev贸 a escribir un art铆culo sobre Habr.
Antes de comenzar, me gustar铆a resaltar brevemente lo que fue y no fue afectado, para no calificar para el manual completo para trabajar con Spacewalk:
+ Instalaci贸n y configuraci贸n del servidor / cliente
+ Configuraci贸n del sistema en GUI
+ Solucione problemas de paquetes de instalaci贸n / actualizaci贸n, trabaje con configuraciones
+ Errata (recopilaci贸n de informaci贸n sobre actualizaciones cr铆ticas, vulnerabilidades, etc.)
- Proxy (la necesidad desapareci贸, despu茅s de abandonar HA)
- zapatero / kickstart
- OpenSCAP
Requisitos del sistema
Debido al hecho de que toda la infraestructura se ejecuta en VMWare, el trabajo se realiz贸 en una VM que ejecuta CentOS 7. Los requisitos de sistema recomendados por el desarrollador son:
- 4 GB de RAM
- 6GB de espacio libre para / var / sat茅lite /
- 12GB para DB
Yo us茅:
- 6 GB de RAM
- 4 CPU (s)
- HDD de 40 GB
Tambi茅n te aconsejo que deshabilites SELinux y, si no lo est谩s usando, firewalld. O agregue el servicio http a las excepciones.
Nota: al final del art铆culo habr谩 playbooks para Ansible, tanto para las partes del cliente como del servidor, as铆 como scripts de bash. Con su ayuda, ser谩 posible implementar toda la infraestructura en un par de minutos.
Instalaci贸n
La instalaci贸n en s铆 se describe tanto en la documentaci贸n oficial como en varios sitios, sin embargo, por la integridad del art铆culo, perm铆tanme mencionar este punto aqu铆.
Spacewalk funciona con dos DBMS: PostgreSQL y Oracle RDBMS. Tengo experiencia con el primero, y lo usar茅 ahora.
Hay dos opciones de instalaci贸n: ambas a trav茅s del instalador autom谩tico de Spacewalk, que se instalar谩 y configurar谩 a s铆 mismo y a la base de datos, sin embargo, en el mismo servidor, e instalaci贸n manual, donde puede colocar la base de datos y la aplicaci贸n en diferentes servidores. Considerar茅 ambas opciones, comenzar茅 con una instalaci贸n separada.
PostgreSQL
yum install -y postgresql-server
Tambi茅n es necesario conectar m贸dulos PL / Tcl para PG:
yum install -y postgresql-pltcl postgresql-setup initdb systemctl start postgresql
Cree una base de datos, un usuario y conecte el m贸dulo:
su - postgres -c 'PGPASSWORD=verystrong; createdb spcwlkdb ; createlang plpgsql spcwlkdb ; createlang pltclu spcwlkdb ; yes $PGPASSWORD | createuser -P -sDR spcwlkuser'
Para evitar problemas de conexi贸n, vale la pena cambiar
/var/lib/pgsql/data/pg_hba.conf , agregando las l铆neas ANTES de la l铆nea:
local spcwlkdb spcwlkuser md5 host spcwlkdb spcwlkuser 127.0.0.1/8 md5 local spcwlkdb postgres ident
Reiniciar todo:
systemctl restart postgresql
Si tiene la intenci贸n de instalar la aplicaci贸n y la base de datos en diferentes servidores, aseg煤rese de que el paquete
postgresql-contrib est茅 instalado en el servidor de la base de datos.
Caminata espacial
Conectamos repositorios:
rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm
Tambi茅n conecte epel:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Java:
(cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo)
Ahora directamente el instalador para Spacewalk-postgres:
yum -y install spacewalk-setup-postgresql
Con茅ctese a nuestra base de datos:
spacewalk-setup-postgresql create --db spcwlkdb --user spcwlkuser --password verystrong
En el caso de que est茅 utilizando un m茅todo de base de datos / aplicaci贸n por separado, deber谩 agregar el indicador
--standalone y especificar la direcci贸n IP del servidor de la base de datos; no olvide abrir el puerto 5432.
Nota: Aconsejo ajustar la base de datos de acuerdo con su hardware para una operaci贸n m谩s productiva de todo el sistema.Ahora instale Spacewalk y ejecute la instalaci贸n:
yum -y install spacewalk-postgresql spacewalk-setup --external-postgresql
A continuaci贸n, se formular谩n varias preguntas, tanto sobre el certificado SSL como sobre la base de datos. Puede ingresar todos los valores manualmente, o puede usar el
marcador --answer-file y especificar la ruta al archivo con respuestas para automatizar la instalaci贸n en el futuro:
admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = HMP ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y
Para controlar la aplicaci贸n directamente, debe usar:
/usr/sbin/spacewalk-service [stop|start|restart]
Para mostrar todos los servicios de terceros que contribuyen a la aplicaci贸n:
spacewalk-service status
Opci贸n dos, instalaci贸n autom谩tica
Despu茅s de conectar los repositorios, configure y ejecute:
yum -y install spacewalk-setup-postgresql yum -y install spacewalk-postgresql spacewalk-setup
Nuevamente, se har谩n preguntas sobre la base de datos y SSL, utilizamos la clave
--answer-file y la ruta al archivo con las respuestas.
Canales base e hijos, repos
Para administrar las estaciones del cliente, Spacewalk utiliza un sistema de los llamados canales, que pueden ser main (child) o child (child), un repositorio que necesita est谩 conectado a cada canal, as铆 como una clave, con la cual el cliente est谩 emparejado servidor
Como resultado, los repositorios se sincronizan con canales que, a su vez, est谩n conectados con clientes, y Spacewalk funciona de manera general. La errata, que puede estar vinculada a los canales, tambi茅n vale la pena mencionar, lo que simplifica la actualizaci贸n y el control del paquete.
Todos los clientes se pueden agrupar de acuerdo con varios criterios, tanto con los mismos canales como con diferentes canales o repositorios. Es posible trabajar con una gran cantidad de clientes a la vez, lo que ayuda a realizar actualizaciones en m谩s de 100 servidores.
Una lista de todos los paquetes instalados est谩 disponible, y despu茅s de la sincronizaci贸n de los repositorios y posible instalaci贸n. Algunos puntos son intuitivos y no tiene sentido considerar cada elemento l铆nea por l铆nea.
Todas las acciones en Spacewalk tienen lugar en un horario (Schedule), casi cualquier acci贸n se puede configurar para el momento que sea m谩s conveniente para usted.
Despu茅s de la instalaci贸n, ser谩 posible ir a la direcci贸n de su servidor, realizar m谩s configuraciones a trav茅s de la interfaz gr谩fica:

Ingrese la contrase帽a, el nombre del administrador, el nombre de la organizaci贸n (que tambi茅n es una de las formas de administrar clientes) y vaya al panel de inicio.
Por ahora, puede explorar las opciones disponibles usted mismo o pasar a crear canales.
Canales - Administrar canales de software - Crear canal:
Recomiendo configurar los nombres de los canales de acuerdo con los tipos y el tipo de sistema operativo que se vincular谩 a este canal, por ejemplo,
CentOS_7_x86_64 , puede elegir con seguridad sha256 como comprobaciones, el campo Resumen de Channell est谩 destinado a una peque帽a descripci贸n del canal. Adem谩s, opcionalmente puede proporcionar informaci贸n adicional.
Ahora cree un canal secundario y vinc煤lelo al principal. Vamos de la misma manera que al crear el canal principal, solo en el campo Canal principal indicaremos el canal creado previamente.
Vincula los repositorios a los canales principales y subsidiarios.
Canales - Administrar repositorios
Para los canales principales, uso los Recursos base, para los canales subsidiarios - Actualizaciones.
Despu茅s de crear los repositorios, debe conectarlos a los canales.
Canales: administre canales de software , abra su canal principal, abra la secci贸n Repositorios.

Habr谩 todos los repositorios creados, seleccione el que necesita, m谩rquelo y haga clic en Actualizar recursos.
A continuaci贸n, abra la subclave Sync:

Donde puede sincronizar el repositorio y el canal, configure la programaci贸n para la sincronizaci贸n.
Nota: en mi caso de bol铆grafos juguetones, tuve que eliminar el repositorio est谩ndar del sistema cliente.Instalaci贸n del cliente, emparejamiento del cliente con el servidor, administraci贸n de claves, configuraci贸n del canal de configuraci贸n
Como mencion茅 anteriormente, Spacewalk usa un sistema clave de Red Hat Network, que se usa para emparejar y administrar.
Para crear una clave, vaya a
Sistemas - Claves de activaci贸n - Crear clave:
Aqu铆 todo es extremadamente simple, vale la pena mencionar que puede configurar la clave usted mismo, su formato siempre ser谩
1-XXXXXX y, adem谩s, cada clave est谩 conectada al canal. El indicador Universal Default obliga a los nuevos sistemas a elegir par谩metros clave.
Instalaci贸n del clienteConecte el repositorio del cliente e instale los paquetes necesarios:
rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm
Nota: rhncfg-actions y deltarpm son necesarios para que las configuraciones y el control remoto funcionen correctamente.Spacewalk usa rhn_check para sincronizar el servidor del cliente, que se ejecuta cada 4 horas. Este valor se puede reducir a 60 minutos, pero para m铆 ninguna de las opciones era 贸ptima, por lo tanto, hay dos opciones: usar osad, que viene con Spacewalk, o simplemente agregar un cronjob para rhn_check, por ejemplo, por cada minuto mientras pruebe el sistema, entonces el valor puede cambiarse como desee.
crontab -e * * * * * /usr/sbin/rhn_check
Tampoco ser谩 incorrecto agregar / usr / bin / rhn-actions-control --enable-all a Cron tambi茅n, se usa para implementar configuraciones y, a veces, se vuelve est煤pido.
Volvemos a la gesti贸n de claves, copiamos la ID de clave que creamos y ejecutamos:
rhnreg_ks --serverUrl=http://your-server-ip/XMLRPC --activationkey=1-YOURKEY --force
Simplemente no olvide cambiar la IP y los valores clave a los suyos. Nuevamente, le aconsejo que use la bandera
--force , ya que not茅 problemas sin usar esta bandera.
Regresamos a
Sistemas - Todos , nos complace notar nuestro sistema. Ahora puede abrirlo y explorar qu茅 y c贸mo, pero por ahora recomiendo crear un grupo para una administraci贸n del sistema m谩s conveniente.
Sistemas - Grupos de sistemas - Crear grupo , complete el nombre y la descripci贸n, guarde, abra el grupo reci茅n creado, vaya a la secci贸n
Sistemas y agregue el sistema al grupo.
Ahora suscriba el sistema al canal,
Sistemas - Su sistema - Carpeta de software - Subcarpeta Canales de software:
Elige tu canal y haz clic en confirmaci贸n. Por diversi贸n, puede intentar instalar el paquete,
Software - Paquetes - Instalar .
Canal de configuraci贸nPara administrar las configuraciones entre el servidor del cliente / m谩quina local, as铆 como el control remoto, vale la pena configurar el canal de configuraci贸n y vincular el sistema a 茅l.
Vamos a
Configuraci贸n - Canales de configuraci贸n - Crear canal de configuraci贸n , establecer el nombre, descripci贸n, guardar, luego en
Configuraci贸n - Administrar canales de configuraci贸n - Suscribirse a canales y firmar el canal de configuraci贸n al canal de software y al sistema.

Ahora podemos implementar configuraciones desde el servidor y las m谩quinas locales, y crear particiones.
Configuraci贸n - Agregar archivos - Crear archivo / Cargar archivo:
Adem谩s, podemos enviar comandos remotos en forma de script bash:

Les recuerdo que todas las acciones pasan por un Programa, se puede encontrar una lista de todas las acciones aplicadas a este sistema en la secci贸n Eventos:
ErratasUna de las caracter铆sticas m谩s importantes de Spacewalk es el soporte de erratas, que se une convenientemente a los canales y le permite controlar el nivel de importancia de las 煤ltimas actualizaciones. Esto se configura directamente en el servidor, adem谩s de los scripts, debe descargar los paquetes necesarios para Pearl:
yum -y install perl-Frontier-RPC perl-Text-Unidecode wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl chmod +x errata-import.pl
Luego cree la actualizaci贸n principal y la errata del script de colecci贸n, que se almacenar谩 en
/ etc / rhn /:
En la exportaci贸n, especifique el nombre y la contrase帽a del administrador de Spacewalk, que especific贸 al principio.
Hagamos que el script sea ejecutable y agr茅guelo a Cron:
chmod +x spcwlk_errata.sh crontab -e 0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata.sh
Ejec煤telo ahora mismo para ver los cambios en la interfaz gr谩fica. La ejecuci贸n llevar谩 alg煤n tiempo.

Resumen
Un punto importante, en mi opini贸n, que personalmente extra帽茅, es configurar e instalar un proxy, as铆 como elevar todo el sistema como HA. Tuve una idea para configurar la aplicaci贸n a trav茅s de marcapasos y sincronizar en la base de datos. Como resultado, se decidi贸 abandonar esta idea, en vista de la flota no muy grande de servidores de estaciones de clientes. Sin embargo, si el sistema resulta extremadamente 煤til en los pr贸ximos seis meses, es posible que deba expandir el servidor original.
Automatizaci贸n
Servidor:Script Bash para la implementaci贸n del servidor (DISABLES firewalld): Script de Bash para instalar erratas (primero configure el nombre y la contrase帽a para el administrador de Spacewalk): Libro de jugadas de Ansible para la implementaci贸n del servidor (no olvide agregar el archivo de respuesta): - hosts: spcwlk-server tasks: - name: Install Spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install epel repo yum: name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state: present - name: Install PostgreSQL packages yum: name: - spacewalk-setup-postgresql - spacewalk-postgresql - wget - perl-Frontier-RPC - perl-Text-Unidecode - perl-XML-Simple - name: Creates directory for Spacewalk answer file file: path: /usr/share/spcwlk-tmp/ state: directory mode: 0755 - name: Deploy answer file copy: src: /etc/ansible/spcwlk_answer dest: /usr/share/spcwlk-tmp/spcwlk_answer - name: Spacewalk Server Deploy shell: spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer - name: Stop firewalld systemd: name: firewalld state: stopped enabled: no
Cliente:Script Bash para la implementaci贸n del cliente (no se olvide de la IP y la clave): Libro de jugadas anisble para la implementaci贸n del cliente: - hosts: spcwlk-clients tasks: - name: Install spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install client packages yum: name: - rhn-client-tools - rhn-check - rhn-setup - rhnsd - m2crypto - yum-rhn-plugin - rhncfg-actions - deltarpm - wget - name: Create cronjob for rhn_check cron: name: "rhn_check" minute: "*" hour: "*" day: "*" month: "*" weekday: "*" job: "/usr/sbin/rhn_check" - name: Enable controls for config and remote control deployment shell: /usr/bin/rhn-actions-control --enable-all - name: Get certificate from server to client get_url: url: http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT dest: /usr/share/rhn/ - name: Register client to server rhn_register: state: present server_url: http://YourServerIPAddress/XMLRPC activationkey: "{{ activation_key }}"
Gracias a todos por leer el art铆culo. Buena suerte