Omnitouch Network Services - Sistema de Despliegue Ansible
Descripció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 calidad de producción.
Qué se despliega
OmniCore (Plataforma de Núcleo de Paquetes 4G/5G)
- OmniHSS - Servidor de Suscriptores en el Hogar
- 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 Confiable
Ver: https://docs.omnitouch.com.au/docs/repos/OmniCore
OmniCall (Plataforma de Voz y Mensajería)
- OmniCall CSCF - Control de Sesiones de Llamadas (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
Comenzando
- Introducción al Despliegue de Ansible
- Descripció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
-
Estándar de Planificación de IP
- Arquitectura de red y asignación de subredes
- Modelo de despliegue de cuatro subredes
- Directrices para la asignación de direcciones IP
- Manejo de IP 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 offline/aislados
- Configuración de caché APT local
-
- Gestión de licencias centralizada
- Modelos de despliegue (local, en la nube, híbrido)
- Características controladas por licencia
- Alta disponibilidad y solución de problemas
Utilidades
- Playbooks de Utilidad
- Health Check: Generar informes HTML de salud del sistema, estado de servicios y versiones
- Common/Setup Users: Configuración base del sistema y de usuarios
- Reboot: Reinicios del sistema de forma controlada
- IP Plan Generator: Documentación de la topología de red
- HSS Backup: Utilidades de respaldo de base de datos
- Troubleshooting: Recuperación de captura de paquetes, actualizaciones de MTU
Imagen Completa
- Descripción General de la Arquitectura de Despliegue
- Cómo se integran todos los componentes
- Segmentación de red y seguridad
- Dependencias de servicios y orden de despliegue
- Patrones de escalado y alta disponibilidad
Inicio Rápido
Requisitos Previos
- Nodo de control Ubuntu 20.04+
- Python 3.8+
- Acceso SSH a los hosts de destino
- Credenciales apropiadas para el repositorio APT
- Licencia válida de Omnitouch
Instalación
-
Obtén el Repositorio
-
Crea un entorno virtual de Python:
python3 -m venv venv
source venv/bin/activate
- Instala Ansible y dependencias:
pip install -r requirements.txt
- Verifica la instalación:
ansible --version
Configuración
- Crea tu archivo de hosts basado en tu diseño de red:
cp services/hosts/Example/host_files/template.yml services/hosts/YourCustomer/host_files/production.yml
Ver: Configuración del Archivo de Hosts
- Personaliza con group_vars (opcional):
mkdir -p services/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 # Usar 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
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/infra.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
│ ├── health-check-utility.md # Guía de playbooks de utilidad
│ └── deployment-architecture.md
├── services/ # Playbooks de Ansible
│ ├── hosts/ # Configuraciones específicas del cliente
│ │ └── Customer_Name/
│ │ ├── host_files/ # Archivos de inventario
│ │ └── group_vars/ # Sobrescrituras de variables
│ ├── epc.yml # Desplegar núcleo 4G
│ ├── ims.yml # Desplegar IMS
│ ├── omniss7.yml # Desplegar pila SS7
│ ├── infra.yml # Desplegar servicios de soporte
│ ├── all.yml # Desplegar todo
│ ├── common.yml # Configuración base del sistema
│ ├── setup_users.yml # Gestión de usuarios
│ ├── reboot.yml # Utilidad de reinicio controlado
│ └── ... # Playbooks específicos de componentes
├── util_playbooks/ # Utilidades operativas
│ ├── health_check.yml # Informes de salud del sistema
│ ├── ip_plan_generator.yml # Documentación de red
│ ├── hss_backup.yml # Respaldos de base de datos
│ ├── 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
│ ├── omni_tas/ # Despliegue de OmniTAS
│ ├── omnimessage/ # Despliegue de OmniMessage
│ ├── license_server/ # Servidor de licencias
│ ├── monitoring/ # Prometheus/Grafana
│ └── ... # Otros roles de componentes
└── requirements.txt # Dependencias de Python
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 configuraciones
- 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 offline
- Repositorio público para sitios conectados a Internet
Infraestructura como Código
- Toda la configuración en control de versiones Git
- Seguimiento de cambios y habilitación de retrocesos
- Revisión de 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/infra.yml | Desplegar servicios de soporte |
services/monitoring.yml | Desplegar solo monitoreo |
services/license_server.yml | Desplegar solo servidor de licencias |
services/apt.yml | Configurar caché APT local |
services/proxmox.yml | Crear VMs en Proxmox |
Plataformas Soportadas
Hipervisor
- 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 en las instalaciones y nube)
- Aislado (completamente offline)
Obtener Ayuda
- Consulta la documentación para guías detalladas
- Revisa ejemplos de archivos de hosts para referencia
- Consulta la documentación del producto en https://docs.omnitouch.com.au/
- Contacta al soporte de Omnitouch para asistencia en el despliegue
Próximos Pasos
- Lee la Introducción al Despliegue de Ansible
- Revisa el Estándar de Planificación de IP para planificar tu arquitectura de red
- Revisa la Descripción General de la Arquitectura de Despliegue
- Crea tu archivo de hosts
- Personaliza con group_vars según sea necesario
- ¡Despliega tu red!