OnGuard nombre provisional
Guardia nocturna · al mando Lucía Méndez · relevo a las 06:00
2 llaves a tu cargo
Ventana con una orden esperando su segunda llave Ventana aprobada Salió mal Ya pasó sin novedad

Anillo exterior: Networking · medio: Linux · interior: Windows

Bitácora de esta guardia

Lo que pasó, contado como lo contaría un compañero. Nada de tablas.
22:14

Ahora. Dos órdenes vencen antes de las y esperan una segunda llave.

j.ortega aplicó parches de seguridad en 42 servidores Linux, 5 a la vez. Reiniciaron 11. Sin novedad

a.rivas reinició el servicio «Spooler» en srv-print-03; el administrador lo hizo directo. Sin novedad

Respaldo programado de 18 equipos de red en sitio-norte. Uno no contestó: fw-edge-04. Con novedad

m.paz pidió rotar la cuenta de servicio de dom-ad-01. Espera la llave de otra persona. En espera

Limpieza de logs en grp-db-stg: 2 de 6 servidores terminaron; los otros 4 se detuvieron por falta de permiso. Con novedad

Mock de interfaz. Datos inventados; nada se ejecuta. La licencia de Contenedores, Apps y Bases de datos no está cargada, por eso sus puestos aparecen sellados.

Quiero a durante , , y reiniciando solo si el servicio responde.

Así la ejecutará OnGuard

sin escribir una línea de YAML
Verificarespacio y servicio Simularsin cambiar nada Doble llaveaprueba otra persona Ejecutar5 en 5, en la ventana Comprobarel servicio responde si algo falla en un servidor: se detiene y vuelve a la instantánea previa
Riesgo medio · requiere otra persona
Ver la partitura (el playbook de Ansible que se generó)
- name: Parches de seguridad (grp-web-prod)
  hosts: grp_web_prod
  serial: 5
  become: true
  tasks:
    - ansible.builtin.dnf: { name: '*', security: true, state: latest }
      register: parches
    - ansible.builtin.reboot:
      when: parches.changed
  post_tasks:
    - ansible.builtin.uri: { url: 'http://localhost/health', status_code: 200 }

# Las credenciales nunca viajan aquí: OnGuard las inyecta desde la bóveda durante la ejecución.

Nadie cambia 42 servidores con una sola llave.

Aplicar parches de seguridad a grp-web-prod, hoy de a .

Primera llave · quien pide

j.ortega
girada a las

Segunda llave · quien aprueba

Lucía Méndez, tú
Orden sellada a las . A las se ejecutará sola, 5 servidores a la vez. Quedó en la auditoría con la huella de lo que viste.

Lo que verás cambiar, en el primer servidor de la simulación

  • web-prod-07openssl 3.0.7-24 → openssl 3.0.7-27
  • web-prod-07kernel 5.14.0-362 → kernel 5.14.0-427
  • web-prod-07curl 7.76.1-26 → curl 7.76.1-29

La simulación recorrió los 42: 38 cambiarían, 4 ya están al día, ninguno dio error. Reinicio necesario en todos los que cambian de kernel.

Armar una acción

linux.parches_seguridad · versión 1.3 · borrador · la verá el catálogo cuando se publique
Desde ceroImportar un playbookModo avanzado (YAML)

La ruta de la acción

Lo que preguntará la orden

grupode qué servidores · lista del inventarioobligatorio
ventanacuándo · ventana de cambioobligatorio
paralelocuántos a la vez · número 1 a 20por defecto 5
excluirpaquetes que no tocar · listaopcional
ticketreferencia · texto cortoopcional

Cada fila se convierte en un hueco de la frase de «Dar una orden». Se validan por tipo antes de ejecutar nada.

Guardarraíles

✓Solo módulos de la lista permitida de Ajustes
✓Se puede simular (--check) y mostrar el diff
✓Sin secretos en el texto; los datos sensibles van con no_log
✓ansible-lint: 0 errores, 1 aviso
✓Idempotente: dos pasadas en laboratorio, la segunda sin cambios
!Riesgo calculado: medio → exigirá doble llave

La partitura, en vivo

# Generado por OnGuard · linux.parches_seguridad v1.3 - name: Parches de seguridad hosts: "{{ grupo }}" serial: "{{ paralelo | default(5) }}" become: true tasks: - block: - name: Verificar espacio libre ansible.builtin.assert: that: free_gb | int > 2 - name: Instalar parches de seguridad ansible.builtin.dnf: name: '*' security: true exclude: "{{ excluir | default([]) }}" register: parches - name: Reiniciar si hace falta ansible.builtin.reboot: reboot_timeout: 600 when: parches.changed - name: Comprobar el servicio ansible.builtin.uri: url: http://localhost/health status_code: 200 retries: 6 delay: 10 rescue: - name: Volver a la instantánea previa ansible.builtin.include_tasks: rescate/snapshot.yml - name: Avisar a la guardia ansible.builtin.include_tasks: avisar.yml

Elegir un paso a la izquierda resalta sus líneas. Nadie escribe esto a mano: es el resultado de la ruta y sus campos.

Libro de equipos

1,284 equipos · última sincronización 21:30 · fuentes: Active Directory, vCenter, CSV
ImportarSincronizar ahoraExportar para Ansible

Grupos

grp-web-prod · variables del grupo: entorno=prod · parches=mensual

EquipoSistemaVariablesZonaEstado
web-prod-01Rocky 9.4rol=nginxnorteresponde
web-prod-02Rocky 9.4rol=nginxnorteresponde
web-prod-07Rocky 9.3rol=api · reinicio=manualdmzresponde
web-prod-19Ubuntu 22.04rol=nginxdmzsin contacto 12 min
web-prod-23Rocky 9.4rol=nginxnorteresponde

Esto es lo que lee Ansible: OnGuard lo entrega como inventario dinámico, con grupos y variables, y solo durante la ejecución.

Quién está de guardia

Personas, funciones y las reglas de las dos llaves
InvitarConectar Entra ID
PersonaFunciónAccesoÚltimo ingreso
Lucía MéndezAdministra · apruebaEntra ID · 2.º factor ✓hoy 21:50
Jorge OrtegaSolicita · LinuxEntra ID · 2.º factor ✓hoy 18:02
Ana RivasSolicita · Windowslocal · 2.º factor ✓hoy 17:11
Mateo PazSolicita · Windows · RedesEntra ID · 2.º factor ✓hoy 19:55
Rocío SotoAprueba · RedesEntra ID · 2.º factor ✗sin segundo factor

Reglas de las llaves

Quién puede girar cada llave.

Quien solicita no puede aprobar su propio cambiosiempre
Cambios de riesgo medio o alto exigen una segunda llaveactivo
El administrador puede ejecutar sin segunda llave (queda marcado como directo)por función
Una orden sin aprobar caduca al cerrar su ventanaactivo

Ajustes de Ansible

Cómo se conecta OnGuard con el motor que ejecuta de verdad

Motor

Quién ejecuta los playbooks.

✓ Probado hace 4 min · ansible-core 2.17.4 · python 3.12 · 4 workers libres Probar de nuevo

Imágenes de ejecución

El entorno cerrado donde corre Ansible.

onguard-ee-base 1.4 · ansible-core 2.17.4en uso
onguard-ee-windows 1.2 · pywinrm 0.4en uso
onguard-ee-red 1.1 · ansible.netcommonsin usar
Espejo sin Internet registry.interno:5000alcanzable

Colecciones permitidas

Solo estas pueden usar las acciones. Versiones fijadas.

ansible.builtinansible.windows 2.5.0community.general 9.4.0 ansible.posix 1.6.1cisco.ios 8.0.0community.docker 4.0.1 + Añadir colección

Credenciales y secretos

Nunca viajan en el playbook.

Workers por zona

Quién llega a cada red.

zona-norte 3 workers · 1,02 s de latenciaconectada
zona-dmz 1 workersin contacto hace 12 min
central 2 workersconectada

Límites

Para que una orden no se coma el servidor.

Servidores a la vez por defecto (forks)5
Tiempo máximo por ejecución30 min
Ejecuciones simultáneas4
Guardar las salidas durante90 días
Ocultar valores sensibles en pantalla y auditoríasiempre

En vivo

Parches de seguridad · grp-web-prod · 42 servidores · 5 a la vez · simulación con la hora de tu navegador

La ruta

  1. Verificar espacio libre
  2. Instalar parches de seguridad
  3. Reiniciar si hace falta
  4. Comprobar el servicio
  5. Rescate: volver atrás
esperando…

Servidores 0 de 42

esperandoal díaactualizadocon novedad

Lo que está pasando

Los mismos hechos, contados de dos maneras: para quien opera y para quien necesita ver la salida cruda.

Cómo está hecho

OnGuard pone el gobierno y la facilidad de uso; Ansible hace el trabajo
1 · PERSONAS Y SISTEMAS Solicitantenavegador · pide acciones Aprobadornavegador · segunda llave Entra ID / OIDCinicio de sesión · 2.º factor Jira · ServiceNowtickets y webhooks 1 3 ONGUARD · PLANO DE GOBIERNOLICENCIA POR MÓDULO Identidad y rolesSSO · MFA · funciones Catálogo y constructoracciones → playbooks Inventarioequipos · grupos · variables Doble llave y ventanasaprobación con diff Programador y colaórdenes · ventanas · reintentos Auditoría y salidascadena sellada · bitácora 2 PostgreSQLúnica base · con HA Bóveda de secretosefímeros por ejecución 2 · MOTOR DE EJECUCIÓN 4 7 ansible-runnerworkers · imágenes de ejecución cerradas AWX / AAPopcional · si ya existe Espejo de imágenescolecciones fijas · offline SIEMtickets · avisos 3 · WORKERS POR ZONA 5 worker · centralSSH · WinRM · APIs worker · zona norteSSH · WinRM · APIs worker · zona DMZSSH · WinRM · APIs 4 · ACTIVOS 6 Networkingmódulo activo Linuxmódulo activo Windowsmódulo activo ContenedoresSELLADO AppsSELLADO Bases de datosSELLADO
  1. El solicitante pide una acción. Completa la frase; los campos se validan por tipo.
  2. OnGuard arma el playbook, lo revisa con lint, lo simula con --check y calcula el riesgo.
  3. Otra persona gira la segunda llave viendo el cambio real. El administrador puede ejecutar directo, y queda marcado.
  4. En la ventana, el programador envía la orden al motor con el inventario dinámico y secretos que viven solo durante la ejecución.
  5. El motor reparte el trabajo a los workers de cada zona, que llegan a redes donde el central no llega.
  6. Los workers actúan sobre los activos. Los módulos sin licencia aparecen sellados y no ejecutan.
  7. Los resultados vuelven: bitácora, auditoría sellada, SIEM, tickets y avisos. Todo con la hora y la persona.

Lo que construye OnGuard

Identidad, catálogo, constructor de playbooks, inventario, aprobaciones, programador, salidas, auditoría y licencias.

Lo que reutiliza

ansible-core y colecciones aprobadas como motor; AWX/AAP si el cliente ya lo tiene; PostgreSQL como única base.

Lo que no hace

No reimplementa módulos de Ansible, no guarda credenciales en los playbooks y no obliga a reemplazar lo que ya funciona.