Saltar al contenido principal

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

  1. 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

  1. Estándar de Planificación 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 IPs públicas
    • Métodos de implementación (NICs separadas vs VLANs)
  2. 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
  3. Referencia de Configuración

    • 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
  4. 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

  1. Sistema de Caché APT

    • 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
  2. Servidor de Licencias

    • Gestión de licencias centralizada
    • Modelos de despliegue (local, nube, híbrido)
    • Funciones controladas por licencia
    • Alta disponibilidad y solución de problemas

Observabilidad

Utilidades

  1. 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.yml para copias de seguridad, util_playbooks/restore_hss.yml para restaurar el HSS
    • Solución de Problemas: Recuperación de captura de paquetes, actualizaciones de MTU

Imagen Completa

  1. 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

  1. Obtén el Repositorio

  2. 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
  1. 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
  1. Activa el entorno (mantenlo activado para todos los comandos ansible):
source .venv/bin/activate
  1. Instala las colecciones de Ansible requeridas (desde requirements.yml):
ansible-galaxy collection install -r requirements.yml
  1. 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

  1. 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/hosts es 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

  1. 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

  1. 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

  1. Configura el servidor de licencias:
all:
vars:
license_server_api_urls: ["https://licenses.omnitouch.com/api"]
license_enforced: true

Ver: Servidor de Licencias

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

PlaybookPropósito
services/all.ymlDesplegar red completa
services/epc.ymlDesplegar componentes EPC 4G
services/ims.ymlDesplegar servicios de voz IMS
services/omniss7.ymlDesplegar pila SS7
services/dns.ymlDesplegar servicio de soporte DNS
services/monitoring.ymlDesplegar solo monitoreo
services/license_server.ymlDesplegar solo servidor de licencias
services/apt_cache.ymlConfigurar caché APT local
util_playbooks/proxmox.ymlCrear 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

  1. Consulta la documentación para guías detalladas
  2. Revisa ejemplos de archivos de hosts como referencia
  3. Consulta la documentación del producto en https://docs.omnitouch.com.au/
  4. Contacta al soporte de Omnitouch para asistencia con el despliegue

Próximos Pasos

  1. Lee la Introducción al Despliegue de Ansible
  2. Revisa el Estándar de Planificación IP para planificar la arquitectura de tu red
  3. Revisa la Visión General de la Arquitectura de Despliegue
  4. Crea tu archivo de hosts
  5. Personaliza con group_vars según sea necesario
  6. ¡Despliega tu red!