Serviços de Rede Omnitouch - Sistema de Implantação Ansible
Visão Geral
Este repositório contém playbooks, funções e configurações do Ansible para implantar soluções completas de rede celular (4G EPC, 5G Core, IMS, SS7) dos Serviços de Rede Omnitouch. O sistema permite implantações automatizadas e repetíveis de infraestrutura de telecomunicações de nível de produção.
O Que é Implantado
OmniCore (Plataforma de Core de Pacotes 4G/5G)
- OmniHSS - Servidor de Assinante Residencial
- OmniSGW - Gateway de Serviço (plano de controle)
- OmniPGW - Gateway de Pacotes (plano de controle)
- OmniUPF - Função de Plano do Usuário
- OmniDRA - Agente de Roteamento Diameter
- OmniTWAG - Gateway de Acesso WLAN Confiável
Veja: https://docs.omnitouch.com.au/docs/repos/OmniCore
OmniCall (Plataforma de Voz e Mensagens)
- OmniCall CSCF - Controle de Sessão de Chamada (P-CSCF, I-CSCF, S-CSCF)
- OmniTAS - Servidor de Aplicação IMS (VoLTE, VoNR, VoWiFi)
- OmniMessage - Centro de SMS (SMS-C)
- OmniMessage SMPP - Suporte ao protocolo SMPP
- OmniSS7 - Componentes de sinalização SS7 (STP, HLR, CAMEL)
- VisualVoicemail - Funcionalidade de correio de voz
Veja: https://docs.omnitouch.com.au/docs/repos/OmniCall
OmniCharge/OmniCRM
- OmniCRM - Gestão de relacionamento com o cliente, autoinscrição, faturamento
Veja: https://docs.omnitouch.com.au/docs/repos/OmniCharge
Serviços de Suporte
- License Server - Licenciamento centralizado
- DNS - Resolução de DNS da rede
- Monitoring - Prometheus & Grafana
- APT Cache - Repositório de pacotes local (opcional)
Documentação
Começando
- Introdução à Implantação Ansible
- Visão geral de como o Ansible é usado para implantar redes celulares
- Conceitos-chave: inventário, funções, playbooks, variáveis
- Fluxo de trabalho de implantação e benefícios
Conceitos Principais
-
- Arquitetura de rede e alocação de sub-rede
- Modelo de implantação de quatro sub-redes
- Diretrizes de atribuição de endereços IP
- Manuseio de IPs públicos
- Métodos de implementação (NICs separadas vs VLANs)
-
- Definindo sua topologia de rede
- Configurando funções de rede e seus parâmetros
- Compreendendo a configuração PLMN
- Trabalhando com templates Jinja2
-
- Guia completo para todas as variáveis de configuração
- Configurações de componentes OmniCore (HSS, PGW, SGW, DRA)
- Configurações de componentes OmniCall (TAS, Message, CSCF)
- Configuração em tempo de execução explicada
- Referência de variáveis com exemplos
-
Variáveis de Grupo e Configuração
- Personalizando implantações sem modificar funções
- Precedência de variáveis e mesclagem
- Integração de templates Jinja2
- Melhores práticas para substituições de configuração
Infraestrutura
-
- Opções de distribuição de pacotes (cache local vs repositório público)
- Como pacotes pré-compilados são entregues
- Configurando implantações offline/isoladas
- Configuração de cache APT local
-
- Gerenciamento centralizado de licenças
- Modelos de implantação (local, nuvem, híbrido)
- Recursos controlados por licença
- Alta disponibilidade e solução de problemas
- Configuração do Netplan - Configuração de rede/interface do host
- Implantação Proxmox - Provisionamento de VMs no Proxmox
- Playbooks de Serviço - Referência para os playbooks
services/*.yml - Replicação OmniHSS & Operações de Nó - Malha ativa-ativa, adição/semeadura de nós HSS, validação
- Firewall por Função - Modelo de fluxo, configuração de origem por site, modos de monitoramento/aplicação, matriz de portas
Observabilidade
- Registro Centralizado - Pipeline de agregação de logs
- Monitoramento & Observabilidade - Prometheus, Grafana e métricas
Utilitários
- Playbooks de Utilidade
- Verificação de Saúde: Gera relatórios HTML de saúde do sistema, status de serviços e versões
- Usuários Comuns/Configuração: Configuração base do sistema e de usuários
- Reboot: Reinicializações suaves do sistema
- Gerador de Plano IP: Documentação da topologia da rede
- Backup/Restauração:
services/backup.ymlpara backups,util_playbooks/restore_hss.ymlpara restaurar o HSS - Solução de Problemas: Recuperação de captura de pacotes, atualizações de MTU
Imagem Completa
- Visão Geral da Arquitetura de Implantação
- Como todos os componentes se encaixam
- Segmentação de rede e segurança
- Dependências de serviço e ordem de implantação
- Padrões de escalabilidade e alta disponibilidade
Início Rápido
Pré-requisitos
- Nó de controle Ubuntu 22.04+ (amd64)
- uv — necessário; gerencia o ambiente Python e dependências
- Python 3.12+ (uv pode instalar um interpretador adequado automaticamente)
- Acesso SSH aos hosts de destino
- Credenciais apropriadas para o repositório APT
- Licença válida da Omnitouch
Instalação
-
Obtenha o Repositório
-
Instale uv se ainda não estiver instalado. Use o método que melhor se adequar ao seu nó de controle — veja a documentação de instalação do uv. Por exemplo:
pipx install uv # via pipx
curl -LsSf https://astral.sh/uv/install.sh | sh # instalador autônomo
- Instale o Ansible e as dependências. Isso cria um venv python.
No Ubuntu e Debian:
apt install libssh-dev
uv sync
No MacOS (usando brew):
brew install libssh
CFLAGS="-I $(brew --prefix)/include -I ext -L $(brew --prefix)/lib -lssh" uv sync
- Ative o ambiente (mantenha-o ativado para todos os comandos
ansible):
source .venv/bin/activate
- Instale as coleções Ansible necessárias (do
requirements.yml):
ansible-galaxy collection install -r requirements.yml
- Verifique a instalação:
ansible --version
Linting
ansible-lint roda no CI. Para executá-lo você mesmo:
uv sync --group lint # instala ansible-lint (um grupo apenas para desenvolvedores, não enviado no .deb)
uv run ansible-lint [paths...] # todo o repositório, ou apenas os arquivos que você tocou
Configuração
- Crie seu arquivo hosts com base no seu design de rede. Os inventários de clientes vivem sob o diretório
hosts/de nível superior (services/hostsé um link simbólico para ele). Copie um exemplo existente como ponto de partida:
cp hosts/Omnicore_Omnitouch/host_files/yktn_Nick2.yml hosts/YourCustomer/host_files/production.yml
Veja: Configuração do Arquivo Hosts
- Personalize com group_vars (opcional):
mkdir -p hosts/YourCustomer/group_vars
# Crie arquivos de personalização conforme necessário
Veja: Configuração de Variáveis de Grupo
- Configure o acesso ao repositório APT em seu arquivo hosts:
Para implantações com um servidor de cache APT local (recomendado):
apt_cache_servers:
hosts:
your-apt-cache:
ansible_host: 192.168.1.100
gateway: 192.168.1.1
# Nenhuma configuração adicional necessária!
# use_apt_cache e apt_repo.apt_server são configurados automaticamente
Ou para acesso direto ao repositório:
all:
vars:
apt_repo:
apt_server: "packages.omnitouch.com"
apt_repo_username: "seu-usuario"
apt_repo_password: "sua-senha"
use_apt_cache: false # Use repositório público diretamente (não cache)
Veja: Sistema de Cache APT
- Configure o servidor de licença:
all:
vars:
license_server_api_urls: ["https://licenses.omnitouch.com/api"]
license_enforced: true
Veja: Servidor de Licença
Implantação
Implante sua rede completa:
# Implante toda a rede
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/all.yml
# Ou implante 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
# Serviços de suporte são implantados via playbooks individuais (sem playbook de infra combinada):
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
Estrutura do Repositório
Omnicore/
├── README.md # Este arquivo
├── docs/ # Documentação
│ ├── 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 # Guia de playbooks de utilidade
│ ├── service-playbooks.md # Guia de playbooks de serviço
│ └── deployment-architecture.md
├── hosts/ # Inventários de clientes (nível superior)
│ └── Customer_Name/
│ ├── host_files/ # Arquivos de inventário
│ └── group_vars/ # Substituições de variáveis
├── services/ # Playbooks do Ansible
│ ├── hosts -> ../hosts # Link simbólico para hosts/ de nível superior
│ ├── epc.yml # Implante o core 4G
│ ├── ims.yml # Implante IMS
│ ├── omniss7.yml # Implante a pilha SS7
│ ├── dns.yml # Implante o serviço de suporte DNS
│ ├── backup.yml # Backup de bancos de dados principais
│ ├─��� all.yml # Implante tudo
│ ├── common.yml # Configuração base do sistema
│ ├── setup_users.yml # Gerenciamento de usuários
│ ├── reboot.yml # Utilitário de reinicialização suave
│ └── ... # Playbooks específicos de componentes
├── util_playbooks/ # Utilitários operacionais
│ ├── health_check.yml # Relatório de saúde do sistema
│ ├── ip_plan_generator.yml # Documentação da rede
│ ├── restore_hss.yml # Restaurar HSS a partir do backup
│ ├── getLocalCapture.yml # Recuperação de captura de pacotes
│ └── ... # Outros utilitários
├── roles/ # Funções do Ansible
│ ├── common/ # Configuração base
│ ├── omnihss/ # Implantação do OmniHSS
│ ├── omnisgwc/ # Implantação do OmniSGW
│ ├── omnipgwc/ # Implantação do OmniPGW
│ ├── applicationserver/ # OmniTAS (Servidor de Aplicação IMS)
│ ├── omnimessage/ # Implantação do OmniMessage
│ ├── license_server/ # Servidor de licença
│ ├── monitoring/ # Prometheus/Grafana
│ └── ... # Outras funções de componentes
├── packaging/ # Configuração de build .deb (nfpm, build.sh)
├── .github/workflows/build-deb.yml # CI build do omnicore .deb
├── requirements.yml # Requisitos de coleção Ansible (ansible-galaxy)
├── pyproject.toml # Dependências do Python (uv)
└── uv.lock # Bloqueio de dependência do Python fixo
OmniCore também pode ser instalado como um pacote .deb omnicore do servidor APT — construído por packaging/build.sh e .github/workflows/build-deb.yml.
Principais Recursos
Implantação Automatizada
- Rede celular completa implantada em horas
- Configuração consistente entre ambientes
- Implantações repetíveis para desenvolvimento, teste e produção
Configuração Flexível
- Templates Jinja2 para geração dinâmica de configuração
- group_vars para personalização específica do cliente
- Sem necessidade de modificar funções principais
Gerenciamento de Pacotes
- Pacotes binários pré-compilados (.deb)
- Cache APT local para implantações offline
- Repositório público para sites conectados à internet
Infraestrutura como Código
- Toda a configuração em controle de versão Git
- Rastrear alterações e permitir rollback
- Revisar alterações antes da implantação
Playbooks Comuns
| Playbook | Propósito |
|---|---|
services/all.yml | Implantar rede completa |
services/epc.yml | Implantar componentes 4G EPC |
services/ims.yml | Implantar serviços de voz IMS |
services/omniss7.yml | Implantar pilha SS7 |
services/dns.yml | Implantar serviço de suporte DNS |
services/monitoring.yml | Implantar apenas monitoramento |
services/license_server.yml | Implantar apenas servidor de licença |
services/apt_cache.yml | Configurar cache APT local |
util_playbooks/proxmox.yml | Criar VMs no Proxmox |
Plataformas Suportadas
Hypervisores
- Proxmox VE
- VMware vSphere
- Instâncias em nuvem (Vultr / AWS / GCP)
Modelos de Implantação
- No local (data center do cliente)
- Nuvem (AWS, Azure, GCP via vLab)
- Híbrido (mistura de local e nuvem)
- Isolado (completamente offline)
Obtendo Ajuda
- Verifique a documentação para guias detalhados
- Revise exemplos de arquivos hosts para referência
- Consulte a documentação do produto em https://docs.omnitouch.com.au/
- Entre em contato com o suporte da Omnitouch para assistência na implantação
Próximos Passos
- Leia a Introdução à Implantação Ansible
- Revise o Padrão de Planejamento de IP para planejar sua arquitetura de rede
- Revise a Visão Geral da Arquitetura de Implantação
- Crie seu arquivo hosts
- Personalize com group_vars conforme necessário
- Implante sua rede!