Pular para o conteúdo principal

Introdução ao Desdobramento do Ansible na Omnitouch

Visão Geral

Os Serviços de Rede Omnitouch usam o Ansible como sua plataforma de automação de infraestrutura para implantar soluções completas de rede celular (4G/5G) de maneira consistente, repetível e automatizada. Este documento fornece uma visão geral de como aproveitamos o Ansible para orquestrar implantações complexas de telecomunicações.

O que é Ansible?

Ansible é uma ferramenta de automação de código aberto que permite que você:

  • Configure sistemas
  • Implante software
  • Orquestre fluxos de trabalho complexos
  • Gerencie infraestrutura como código

O Ansible usa uma abordagem declarativa - você descreve o estado desejado de seus sistemas, e o Ansible garante que eles alcancem esse estado.

Como a Omnitouch Usa Ansible

Conceitos Chave

1. Inventário (Arquivos de Hosts)

Define quais sistemas gerenciar. Cada implantação de cliente tem um arquivo de hosts que descreve:

  • Todas as máquinas virtuais na rede
  • Seus endereços IP
  • Configuração de rede
  • Parâmetros específicos de serviço

Os arquivos de hosts são com os quais você trabalhará para definir sua rede.

Veja: Configuração do Arquivo de Hosts

2. Funções

Define como configurar cada componente. As funções são unidades reutilizáveis que contêm:

  • Tarefas (etapas a serem executadas)
  • Modelos (modelos de arquivos de configuração)
  • Manipuladores (ações acionadas por mudanças)
  • Variáveis (valores de configuração padrão)

Exemplos de funções para componentes do OmniCore: omnihss, omnisgwc, omnipgwc, omnidra, etc.

Essas são definidas pela equipe do ONS, enquanto você pode editá-las, geralmente há maneiras mais limpas de fazer quaisquer ajustes que você possa precisar a partir do seu arquivo de hosts.

3. Playbooks

Orquestra quando e onde as funções são aplicadas:

- name: Setup Omnicore MME
hosts: mme
roles:
- omnimme

Usamos esses essencialmente como grupos para as funções.

Na prática, cada playbook de serviço aplica uma única função, e a configuração compartilhada é puxada separadamente. Um pacote de serviço como services/epc.yml usa import_playbook para primeiro executar common.yml e depois cada playbook por serviço:

- name: Install Common
import_playbook: common.yml

- name: Run MME Playbook
import_playbook: omnimme.yml

4. Variáveis de Grupo

Fornece configuração específica do cliente que substitui os padrões das funções. É aqui que a personalização do cliente acontece sem modificar as funções base.

Veja: Variáveis de Grupo e Configuração

Arquitetura de Implantação

O Processo de Implantação

1. Definir Infraestrutura

Crie um arquivo de hosts descrevendo sua topologia de rede:

Nota de Planejamento: Antes de definir a infraestrutura, revise o Padrão de Planejamento de IP para orientações sobre segmentação de rede, alocação de endereços IP e organização de sub-redes.

Usuários do Proxmox: Se implantando no Proxmox, veja Implantação de VM/LXC do Proxmox para provisionamento automatizado de VM/container.

Veja: Configuração do Arquivo de Hosts e Referência de Configuração

mme:
hosts:
customer-mme01:
ansible_host: 10.10.1.15
mme_code: 1

2. Personalizar Configuração

Defina variáveis específicas do cliente em group_vars:

plmn_id:
mcc: '001'
mnc: '01'
customer_name_short: customer

#ToDo - Adicionar link aqui para referência de configuração para lista completa

3. Executar Playbooks

Implante a rede:

ansible-playbook -i hosts/customer/host_files/production.yml services/epc.yml

4. Implantação Automatizada

O Ansible irá:

  • Criar/provisionar VMs (se usando a integração Proxmox/VMware)
  • Configurar rede
  • Instalar pacotes de software do cache APT
  • Implantar código de aplicação
  • Configurar serviços com configurações do cliente
  • Iniciar serviços
  • Validar implantação

Componentes Chave que Implantamos

OmniCore (Plataforma de Core de Pacote 4G/5G)

  • OmniHSS - Servidor de Assinante Residencial
  • OmniSGW - Gateway de Serviço (plano de controle)
  • OmniPGW - Gateway de Pacote (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 - Função de Controle de Sessão de Chamada (P-CSCF, I-CSCF, S-CSCF)
  • OmniTAS - Servidor de Aplicação IMS (serviços VoLTE/VoNR)
  • 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

  • Plataforma CRM - Gestão de relacionamento com o cliente, autoinscrição, faturamento

Veja: https://docs.omnitouch.com.au/docs/repos/OmniCharge

Serviços de Suporte

  • DNS - Resolução de DNS da rede
  • Servidor de Licenças - Gestão de licenças
  • Monitoramento - Prometheus, Grafana

Veja: Visão Geral da Arquitetura de Implantação

Gestão de Pacotes

Usamos um modelo híbrido de distribuição de pacotes:

Pacotes APT Pré-compilados

Todo o software Omnitouch é distribuído como pacotes Debian (.deb):

  • Construídos a partir do código-fonte em nosso pipeline CI/CD
  • Versionados e testados
  • Hospedados em repositórios de pacotes

Sistema de Cache APT

Os clientes podem escolher entre:

  1. Cache APT Local - Espelho dos pacotes necessários no local para implantação offline
  2. Repositório Público - Acesso direto ao repositório de pacotes hospedado pela Omnitouch

Há também um .deb unificado omnicore (construído a partir de packaging/) que agrupa os playbooks e ferramentas para auto-provisionamento de uma implantação.

Veja: Sistema de Cache APT

Gestão de Licenças

Todos os componentes de software da Omnitouch requerem licenças válidas gerenciadas por meio de um servidor de licenças central:

  • Os componentes verificam a validade da licença na inicialização
  • Recursos são ativados/desativados com base na licença
  • O servidor de licenças pode ser local ou hospedado na nuvem

Veja: Servidor de Licenças

Benefícios Desta Abordagem

Repetibilidade

Os mesmos playbooks do Ansible podem implantar:

  • Laboratórios de desenvolvimento
  • Ambientes de teste
  • Redes de produção
  • Sites de clientes

Consistência

Cada implantação usa as mesmas configurações testadas, reduzindo erros humanos.

Controle de Versão

A infraestrutura é definida como código no Git:

  • Rastrear todas as mudanças
  • Revisar antes da implantação
  • Reverter se necessário

Personalização Sem Complexidade

Os clientes podem personalizar sua implantação através de group_vars sem modificar funções principais.

Implantação Rápida

Implante uma rede celular completa em horas, em vez de dias ou semanas.

Começando

Pré-requisitos

Antes de executar os playbooks do Ansible, você precisa instalar as dependências necessárias. Este projeto usa uv para gerenciar o ambiente Python, então uv é necessário.

1. Instalar uv

Se o uv ainda não estiver instalado, instale-o usando o método que melhor se adequa 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

2. Instalar Dependências

A partir da raiz do repositório, execute:

uv sync

Isso cria um .venv/ isolado e instala o Ansible mais todos os pacotes Python necessários (fixados em uv.lock) para automação de implantação da Omnitouch.

3. Ativar o Ambiente

Ative o ambiente virtual e mantenha-o ativado para todos os comandos do Ansible:

source .venv/bin/activate      # Windows: .venv\Scripts\activate

4. Instalar Coleções do Ansible

Instale as coleções do Ansible das quais os playbooks dependem (a partir de requirements.yml):

ansible-galaxy collection install -r requirements.yml

5. Executar Comandos do Ansible

Com o ambiente ativado, execute comandos do Ansible diretamente:

ansible --version

Nota: Desative o ambiente quando terminar executando deactivate.

Etapas de Implantação

  1. Revise a Configuração do Arquivo de Hosts para entender como definir sua rede
  2. Aprenda sobre Variáveis de Grupo para personalização
  3. Entenda o Sistema de Cache APT para gestão de pacotes
  4. Revise a Arquitetura de Implantação para ver como tudo se encaixa
  5. Implante!

Próximos Passos