Servicios de Red Omnitouch - Sistema de Despliegue de Ansible
Visión General
Este repositorio contiene playbooks de Ansible, roles y configuración para desplegar soluciones completas de red celular (4G EPC, 5G Core, IMS, SS7) de Omnitouch Network Services. El sistema permite despliegues automatizados y repetibles de infraestructura de telecomunicaciones de grado producción.
Qué se Despliega
OmniCore (Plataforma de Núcleo de Paquetes 4G/5G)
- OmniHSS - Servidor de Suscriptores en Casa
- OmniSGW - Puerta de Enlace de Servicio (plano de control)
- OmniPGW - Puerta de Enlace de Paquetes (plano de control)
- OmniUPF - Función de Plano de Usuario
- OmniDRA - Agente de Enrutamiento Diameter
- OmniTWAG - Puerta de Enlace de Acceso WLAN de Confianza
Ver: https://docs.omnitouch.com.au/docs/repos/OmniCore
OmniCall (Plataforma de Voz y Mensajería)
- OmniCall CSCF - Control de Sesiones de Llamada (P-CSCF, I-CSCF, S-CSCF)
- OmniTAS - Servidor de Aplicaciones IMS (VoLTE, VoNR, VoWiFi)
- OmniMessage - Centro de SMS (SMS-C)
- OmniMessage SMPP - Soporte para el protocolo SMPP
- OmniSS7 - Componentes de señalización SS7 (STP, HLR, CAMEL)
- VisualVoicemail - Funcionalidad de correo de voz
Ver: https://docs.omnitouch.com.au/docs/repos/OmniCall
OmniCharge/OmniCRM
- OmniCRM - Gestión de relaciones con clientes, auto-registro, facturación
Ver: https://docs.omnitouch.com.au/docs/repos/OmniCharge
Servicios de Soporte
- License Server - Licenciamiento centralizado
- DNS - Resolución de DNS de red
- Monitoring - Prometheus & Grafana
- APT Cache - Repositorio de paquetes local (opcional)
Documentación
Introducción
- Introducción al Despliegue de Ansible
- Visión general de cómo se utiliza Ansible para desplegar redes celulares
- Conceptos clave: inventario, roles, playbooks, variables
- Flujo de trabajo de despliegue y beneficios
Conceptos Clave
-
- Arquitectura de red y asignación de subredes
- Modelo de despliegue de cuatro subredes
- Directrices para la asignación de direcciones IP
- Manejo de IPs públicas
- Métodos de implementación (NICs separadas vs VLANs)
-
Configuración del Archivo de Hosts
- Definiendo tu topología de red
- Configurando funciones de red y sus parámetros
- Entendiendo la configuración de PLMN
- Trabajando con plantillas Jinja2
-
- Guía completa de todas las variables de configuración
- Configuraciones de componentes de OmniCore (HSS, PGW, SGW, DRA)
- Configuraciones de componentes de OmniCall (TAS, Message, CSCF)
- Configuración en tiempo de ejecución explicada
- Referencia de variables con ejemplos
-
Variables de Grupo y Configuración
- Personalizando despliegues sin modificar roles
- Precedencia de variables y fusión
- Integración de plantillas Jinja2
- Mejores prácticas para sobrescrituras de configuración
Infraestructura
-
- Opciones de distribución de paquetes (caché local vs. repositorio público)
- Cómo se entregan los paquetes precompilados
- Configuración de despliegues fuera de línea/aislados
- Configuración de caché APT local
-
- Gestión de licencias centralizada
- Modelos de despliegue (local, nube, híbrido)
- Funciones controladas por licencia
- Alta disponibilidad y solución de problemas
- Configuración de Netplan - Configuración de red/interfaz de host
- Despliegue de Proxmox - Aprovisionamiento de VMs en Proxmox
- Playbooks de Servicio - Referencia para los playbooks
services/*.yml - Replicación de OmniHSS y Operaciones de Nodo - Malla activa-activa, adición/semilla de nodos HSS, validación
- Cortafuegos por Rol - Modelo de flujo, configuración de origen por sitio, modos de monitoreo/aplicación, matriz de puertos
Observabilidad
- Registro Centralizado - Canalización de agregación de registros
- Monitoreo y Observabilidad - Prometheus, Grafana y métricas
Utilidades
- Playbooks de Utilidad
- Verificación de Salud: Generar informes HTML sobre la salud del sistema, estado de servicios y versiones
- Común/Configuración de Usuarios: Configuración base del sistema y de usuarios
- Reinicio: Reinicios suaves del sistema
- Generador de Plan IP: Documentación de la topología de red
- Copia de Seguridad/Restauración:
services/backup.ymlpara copias de seguridad,util_playbooks/restore_hss.ymlpara restaurar el HSS - Solución de Problemas: Recuperación de captura de paquetes, actualizaciones de MTU
Imagen Completa
- Visión General de la Arquitectura de Despliegue
- Cómo encajan todos los componentes
- Segmentación de red y seguridad
- Dependencias de servicio y orden de despliegue
- Patrones de escalado y alta disponibilidad
Inicio Rápido
Requisitos Previos
- Nodo de control Ubuntu 22.04+ (amd64)
- uv — requerido; gestiona el entorno Python y las dependencias
- Python 3.12+ (uv puede instalar un intérprete adecuado automáticamente)
- Acceso SSH a los hosts de destino
- Credenciales apropiadas para el repositorio APT
- Licencia válida de Omnitouch
Instalación
-
Obtén el Repositorio
-
Instala uv si aún no está instalado. Usa el método que mejor se adapte a tu nodo de control — consulta la documentación de instalación de uv. Por ejemplo:
pipx install uv # a través de pipx
curl -LsSf https://astral.sh/uv/install.sh | sh # instalador independiente
- Instala Ansible y dependencias. Esto crea un entorno virtual de Python.
En Ubuntu y Debian:
apt install libssh-dev
uv sync
En MacOS (usando brew):
brew install libssh
CFLAGS="-I $(brew --prefix)/include -I ext -L $(brew --prefix)/lib -lssh" uv sync
- Activa el entorno (mantenlo activado para todos los comandos
ansible):
source .venv/bin/activate
- Instala las colecciones de Ansible requeridas (desde
requirements.yml):
ansible-galaxy collection install -r requirements.yml
- Verifica la instalación:
ansible --version
Linting
ansible-lint se ejecuta en CI. Para ejecutarlo tú mismo:
uv sync --group lint # instala ansible-lint (un grupo solo para desarrollo, no incluido en el .deb)
uv run ansible-lint [paths...] # todo el repositorio, o solo los archivos que tocaste
Configuración
- Crea tu archivo de hosts basado en tu diseño de red. Los inventarios de clientes se encuentran en el directorio
hosts/de nivel superior (services/hostses un enlace simbólico a él). Copia un ejemplo existente como punto de partida:
cp hosts/Omnicore_Omnitouch/host_files/yktn_Nick2.yml hosts/YourCustomer/host_files/production.yml
Ver: Configuración del Archivo de Hosts
- Personaliza con group_vars (opcional):
mkdir -p hosts/YourCustomer/group_vars
# Crea archivos de personalización según sea necesario
Ver: Configuración de Variables de Grupo
- Configura el acceso al repositorio APT en tu archivo de hosts:
Para despliegues con un servidor de caché APT local (recomendado):
apt_cache_servers:
hosts:
your-apt-cache:
ansible_host: 192.168.1.100
gateway: 192.168.1.1
# ¡No se necesita configuración adicional!
# use_apt_cache y apt_repo.apt_server se configuran automáticamente
O para acceso directo al repositorio:
all:
vars:
apt_repo:
apt_server: "packages.omnitouch.com"
apt_repo_username: "your-username"
apt_repo_password: "your-password"
use_apt_cache: false # Usa el repositorio público directamente (no caché)
Ver: Sistema de Caché APT
- Configura el servidor de licencias:
all:
vars:
license_server_api_urls: ["https://licenses.omnitouch.com/api"]
license_enforced: true
Despliegue
Despliega tu red completa:
# Desplegar toda la red
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/all.yml
# O despliega componentes específicos:
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/epc.yml
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/ims.yml
# Los servicios de soporte se despliegan a través de playbooks individuales (sin playbook de infraestructura combinado):
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/dns.yml
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/monitoring.yml
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/license_server.yml
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/apt_cache.yml
Estructura del Repositorio
Omnicore/
├── README.md # Este archivo
├── docs/ # Documentación
│ ├── ansible-introduction.md
│ ├── IP_Planning_Standard.md
│ ├── hosts-file-configuration.md
│ ├── group-vars-configuration.md
│ ├── apt-cache-system.md
│ ├── license-server.md
│ ├── utility-playbooks.md # Guía de playbooks de utilidad
│ ├── service-playbooks.md # Guía de playbooks de servicio
│ └── deployment-architecture.md
├── hosts/ # Inventarios de clientes (nivel superior)
│ └── Customer_Name/
│ ├── host_files/ # Archivos de inventario
│ └── group_vars/ # Sobrescrituras de variables
├── services/ # Playbooks de Ansible
│ ├── hosts -> ../hosts # Enlace simbólico a hosts/ de nivel superior
│ ├── epc.yml # Desplegar núcleo 4G
│ ├── ims.yml # Desplegar IMS
│ ├── omniss7.yml # Desplegar pila SS7
│ ├── dns.yml # Desplegar servicio de soporte DNS
│ ├── backup.yml # Copia de seguridad de bases de datos centrales
│ ├── all.yml # Desplegar todo
│ ├── common.yml # Configuración base del sistema
│ ├── setup_users.yml # Gestión de usuarios
│ ├── reboot.yml # Utilidad de reinicio suave
│ └── ... # Playbooks específicos de componentes
├── util_playbooks/ # Utilidades operativas
│ ├── health_check.yml # Informe de salud del sistema
│ ├── ip_plan_generator.yml # Documentación de red
│ ├── restore_hss.yml # Restaurar HSS desde copia de seguridad
│ ├── getLocalCapture.yml # Recuperación de captura de paquetes
│ └── ... # Otras utilidades
├── roles/ # Roles de Ansible
│ ├── common/ # Configuración base
│ ├── omnihss/ # Despliegue de OmniHSS
│ ├── omnisgwc/ # Despliegue de OmniSGW
│ ├── omnipgwc/ # Despliegue de OmniPGW
│ ├── applicationserver/ # OmniTAS (Servidor de Aplicaciones IMS)
│ ├── omnimessage/ # Despliegue de OmniMessage
│ ├── license_server/ # Servidor de licencias
│ ��── monitoring/ # Prometheus/Grafana
│ └── ... # Otros roles de componentes
├── packaging/ # Configuración de construcción .deb (nfpm, build.sh)
├── .github/workflows/build-deb.yml # Construcción CI del .deb de omnicore
├── requirements.yml # Requisitos de colecciones de Ansible (ansible-galaxy)
├── pyproject.toml # Dependencias de Python (uv)
└── uv.lock # Bloqueo de dependencia de Python fijado
OmniCore también se puede instalar como un paquete .deb omnicore desde el servidor APT — construido por packaging/build.sh y .github/workflows/build-deb.yml.
Características Clave
Despliegue Automatizado
- Red celular completa desplegada en horas
- Configuración consistente en todos los entornos
- Despliegues repetibles para desarrollo, pruebas y producción
Configuración Flexible
- Plantillas Jinja2 para generación dinámica de configuración
- group_vars para personalización específica del cliente
- No es necesario modificar roles centrales
Gestión de Paquetes
- Paquetes binarios precompilados (.deb)
- Caché APT local para despliegues fuera de línea
- Repositorio público para sitios conectados a Internet
Infraestructura como Código
- Toda la configuración en control de versiones de Git
- Rastrear cambios y habilitar retrocesos
- Revisar cambios antes del despliegue
Playbooks Comunes
| Playbook | Propósito |
|---|---|
services/all.yml | Desplegar red completa |
services/epc.yml | Desplegar componentes EPC 4G |
services/ims.yml | Desplegar servicios de voz IMS |
services/omniss7.yml | Desplegar pila SS7 |
services/dns.yml | Desplegar servicio de soporte DNS |
services/monitoring.yml | Desplegar solo monitoreo |
services/license_server.yml | Desplegar solo servidor de licencias |
services/apt_cache.yml | Configurar caché APT local |
util_playbooks/proxmox.yml | Crear VMs en Proxmox |
Plataformas Soportadas
Hipervisores
- Proxmox VE
- VMware vSphere
- Instancias en la nube (Vultr / AWS / GCP)
Modelos de Despliegue
- En las instalaciones (centro de datos del cliente)
- Nube (AWS, Azure, GCP a través de vLab)
- Híbrido (mezcla de instalaciones y nube)
- Aislado (completamente fuera de línea)
Obtener Ayuda
- Consulta la documentación para guías detalladas
- Revisa ejemplos de archivos de hosts como referencia
- Consulta la documentación del producto en https://docs.omnitouch.com.au/
- Contacta al soporte de Omnitouch para asistencia con el despliegue
Próximos Pasos
- Lee la Introducción al Despliegue de Ansible
- Revisa el Estándar de Planificación IP para planificar la arquitectura de tu red
- Revisa la Visión General de la Arquitectura de Despliegue
- Crea tu archivo de hosts
- Personaliza con group_vars según sea necesario
- ¡Despliega tu red!