Aller au contenu principal

Services Réseau Omnitouch - Système de Déploiement Ansible

Vue d'ensemble

Ce dépôt contient des playbooks Ansible, des rôles et une configuration pour déployer des solutions complètes de réseau cellulaire (4G EPC, 5G Core, IMS, SS7) des Services Réseau Omnitouch. Le système permet des déploiements automatisés et répétables d'infrastructure télécom de qualité production.

Ce qui est Déployé

OmniCore (Plateforme de Noyau de Paquet 4G/5G)

  • OmniHSS - Serveur d'Abonnés à Domicile
  • OmniSGW - Passerelle de Service (plan de contrôle)
  • OmniPGW - Passerelle de Paquet (plan de contrôle)
  • OmniUPF - Fonction de Plan Utilisateur
  • OmniDRA - Agent de Routage Diameter
  • OmniTWAG - Passerelle d'Accès WLAN de Confiance

Voir : https://docs.omnitouch.com.au/docs/repos/OmniCore

OmniCall (Plateforme de Voix et de Messagerie)

  • OmniCall CSCF - Contrôle de Session d'Appel (P-CSCF, I-CSCF, S-CSCF)
  • OmniTAS - Serveur d'Application IMS (VoLTE, VoNR, VoWiFi)
  • OmniMessage - Centre SMS (SMS-C)
  • OmniMessage SMPP - Support du protocole SMPP
  • OmniSS7 - Composants de signalisation SS7 (STP, HLR, CAMEL)
  • VisualVoicemail - Fonctionnalité de messagerie vocale

Voir : https://docs.omnitouch.com.au/docs/repos/OmniCall

OmniCharge/OmniCRM

  • OmniCRM - Gestion de la relation client, auto-inscription, facturation

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

Services de Support

  • License Server - Licences centralisées
  • DNS - Résolution DNS réseau
  • Monitoring - Prometheus & Grafana
  • APT Cache - Répertoire de paquets local (optionnel)

Documentation

Prise en Main

  1. Introduction au Déploiement Ansible
    • Vue d'ensemble de l'utilisation d'Ansible pour déployer des réseaux cellulaires
    • Concepts clés : inventaire, rôles, playbooks, variables
    • Flux de travail de déploiement et avantages

Concepts de Base

  1. Norme de Planification IP

    • Architecture réseau et allocation de sous-réseaux
    • Modèle de déploiement à quatre sous-réseaux
    • Directives d'attribution d'adresses IP
    • Gestion des IP publiques
    • Méthodes de mise en œuvre (NIC séparés vs VLANs)
  2. Configuration du Fichier Hosts

    • Définir votre topologie réseau
    • Configurer les fonctions réseau et leurs paramètres
    • Comprendre la configuration PLMN
    • Travailler avec des modèles Jinja2
  3. Référence de Configuration

    • Guide complet de toutes les variables de configuration
    • Paramètres des composants OmniCore (HSS, PGW, SGW, DRA)
    • Paramètres des composants OmniCall (TAS, Message, CSCF)
    • Configuration d'exécution expliquée
    • Référence des variables avec des exemples
  4. Variables de Groupe et Configuration

    • Personnaliser les déploiements sans modifier les rôles
    • Précédence et fusion des variables
    • Intégration de modèles Jinja2
    • Meilleures pratiques pour les remplacements de configuration

Infrastructure

  1. Système de Cache APT

    • Options de distribution de paquets (cache local vs. dépôt public)
    • Comment les paquets pré-compilés sont livrés
    • Mise en place de déploiements hors ligne/isolés
    • Configuration du cache APT local
  2. Serveur de Licences

    • Gestion centralisée des licences
    • Modèles de déploiement (local, cloud, hybride)
    • Fonctionnalités contrôlées par licence
    • Haute disponibilité et dépannage

Observabilité

Utilitaires

  1. Playbooks Utilitaires
    • Vérification de Santé : Générer des rapports HTML sur la santé du système, l'état des services et les versions
    • Utilisateurs Communs/Configuration : Configuration de base du système et des utilisateurs
    • Redémarrer : Redémarrages gracieux du système
    • Générateur de Plan IP : Documentation de la topologie réseau
    • Sauvegarde/Restauration : services/backup.yml pour les sauvegardes, util_playbooks/restore_hss.yml pour restaurer le HSS
    • Dépannage : Récupération de capture de paquets, mises à jour de MTU

Image Complète

  1. Vue d'ensemble de l'Architecture de Déploiement
    • Comment tous les composants s'assemblent
    • Segmentation et sécurité du réseau
    • Dépendances de service et ordre de déploiement
    • Modèles de mise à l'échelle et de haute disponibilité

Démarrage Rapide

Prérequis

  • Nœud de contrôle Ubuntu 22.04+ (amd64)
  • uv — requis ; gère l'environnement Python et les dépendances
  • Python 3.12+ (uv peut installer automatiquement un interpréteur approprié)
  • Accès SSH aux hôtes cibles
  • Identifiants appropriés pour le dépôt APT
  • Licence Omnitouch valide

Installation

  1. Obtenez le Dépôt

  2. Installez uv s'il n'est pas déjà installé. Utilisez la méthode qui convient le mieux à votre nœud de contrôle — consultez la documentation d'installation de uv. Par exemple :

pipx install uv                                    # via pipx
curl -LsSf https://astral.sh/uv/install.sh | sh # installateur autonome
  1. Installez Ansible et les dépendances. Cela crée un venv python.

Sur Ubuntu et Debian :

apt install libssh-dev
uv sync

Sur MacOS (en utilisant brew) :

brew install libssh
CFLAGS="-I $(brew --prefix)/include -I ext -L $(brew --prefix)/lib -lssh" uv sync
  1. Activez l'environnement (gardez-le activé pour toutes les commandes ansible) :
source .venv/bin/activate
  1. Installez les collections Ansible requises (à partir de requirements.yml) :
ansible-galaxy collection install -r requirements.yml
  1. Vérifiez l'installation :
ansible --version

Linting

ansible-lint s'exécute dans CI. Pour l'exécuter vous-même :

uv sync --group lint            # installe ansible-lint (un groupe uniquement dev, non expédié dans le .deb)
uv run ansible-lint [paths...] # tout le dépôt, ou juste les fichiers que vous avez touchés

Configuration

  1. Créez votre fichier hosts basé sur votre conception réseau. Les inventaires clients se trouvent sous le répertoire hosts/ de niveau supérieur (services/hosts est un lien symbolique vers celui-ci). Copiez un exemple existant comme point de départ :
cp hosts/Omnicore_Omnitouch/host_files/yktn_Nick2.yml hosts/YourCustomer/host_files/production.yml

Voir : Configuration du Fichier Hosts

  1. Personnalisez avec group_vars (optionnel) :
mkdir -p hosts/YourCustomer/group_vars
# Créez des fichiers de personnalisation selon les besoins

Voir : Configuration des Variables de Groupe

  1. Configurez l'accès au dépôt APT dans votre fichier hosts :

Pour les déploiements avec un serveur de cache APT local (recommandé) :

apt_cache_servers:
hosts:
your-apt-cache:
ansible_host: 192.168.1.100
gateway: 192.168.1.1

# Aucune configuration supplémentaire requise !
# use_apt_cache et apt_repo.apt_server sont automatiquement définis

Ou pour un accès direct au dépôt :

all:
vars:
apt_repo:
apt_server: "packages.omnitouch.com"
apt_repo_username: "your-username"
apt_repo_password: "your-password"
use_apt_cache: false # Utiliser le dépôt public directement (pas de cache)

Voir : Système de Cache APT

  1. Configurer le serveur de licences :
all:
vars:
license_server_api_urls: ["https://licenses.omnitouch.com/api"]
license_enforced: true

Voir : Serveur de Licences

Déploiement

Déployez votre réseau complet :

# Déployer l'ensemble du réseau
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/all.yml

# Ou déployer des composants spécifiques :
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

# Les services de support se déploient via des playbooks individuels (pas de playbook infra combiné) :
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

Structure du Dépôt

Omnicore/
├── README.md # Ce fichier
├── docs/ # Documentation
│ ├── 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 # Guide des playbooks utilitaires
│ ├── service-playbooks.md # Guide des playbooks de service
│ └── deployment-architecture.md
├── hosts/ # Inventaires clients (niveau supérieur)
│ └── Customer_Name/
│ ├── host_files/ # Fichiers d'inventaire
│ └── group_vars/ # Remplacements de variables
├── services/ # Playbooks Ansible
│ ├── hosts -> ../hosts # Lien symbolique vers hosts/ de niveau supérieur
│ ├── epc.yml # Déployer le noyau 4G
│ ├── ims.yml # Déployer IMS
│ ├── omniss7.yml # Déployer la pile SS7
│ ├── dns.yml # Déployer le service de support DNS
│ ├── backup.yml # Sauvegarder les bases de données principales
│ ├── all.yml # Déployer tout
│ ├── common.yml # Configuration de base du système
│ ├── setup_users.yml # Gestion des utilisateurs
│ ├── reboot.yml # Utilitaire de redémarrage gracieux
│ └── ... # Playbooks spécifiques aux composants
├── util_playbooks/ # Utilitaires opérationnels
│ ├── health_check.yml # Rapport sur la santé du système
│ ├── ip_plan_generator.yml # Documentation réseau
│ ├── restore_hss.yml # Restaurer HSS à partir de la sauvegarde
│ ├── getLocalCapture.yml # Récupération de capture de paquets
│ └── ... # Autres utilitaires
├── roles/ # Rôles Ansible
│ ├── common/ # Configuration de base
│ ├── omnihss/ # Déploiement OmniHSS
│ ├── omnisgwc/ # Déploiement OmniSGW
│ ├── omnipgwc/ # Déploiement OmniPGW
│ ├── applicationserver/ # OmniTAS (Serveur d'Application IMS)
│ ├── omnimessage/ # Déploiement OmniMessage
│ ├── license_server/ # Serveur de licences
│ ├── monitoring/ # Prometheus/Grafana
│ └── ... # Autres rôles de composants
├── packaging/ # Configuration de construction .deb (nfpm, build.sh)
├── .github/workflows/build-deb.yml # CI build du .deb omnicore
├── requirements.yml # Exigences de collection Ansible (ansible-galaxy)
├── pyproject.toml # Dépendances Python (uv)
└── uv.lock # Verrou de dépendance Python fixé

OmniCore est également installable en tant que paquet .deb omnicore depuis le serveur APT — construit par packaging/build.sh et .github/workflows/build-deb.yml.

Fonctionnalités Clés

Déploiement Automatisé

  • Réseau cellulaire complet déployé en quelques heures
  • Configuration cohérente à travers les environnements
  • Déploiements répétables pour le développement, les tests et la production

Configuration Flexible

  • Modèles Jinja2 pour la génération dynamique de configuration
  • group_vars pour la personnalisation spécifique au client
  • Pas besoin de modifier les rôles de base

Gestion des Paquets

  • Paquets binaires pré-compilés (.deb)
  • Cache APT local pour les déploiements hors ligne
  • Dépôt public pour les sites connectés à Internet

Infrastructure en tant que Code

  • Toute la configuration dans le contrôle de version Git
  • Suivre les modifications et permettre le rollback
  • Examiner les modifications avant le déploiement

Playbooks Courants

PlaybookObjectif
services/all.ymlDéployer le réseau complet
services/epc.ymlDéployer les composants EPC 4G
services/ims.ymlDéployer les services vocaux IMS
services/omniss7.ymlDéployer la pile SS7
services/dns.ymlDéployer le service de support DNS
services/monitoring.ymlDéployer uniquement la surveillance
services/license_server.ymlDéployer uniquement le serveur de licences
services/apt_cache.ymlConfigurer le cache APT local
util_playbooks/proxmox.ymlCréer des VMs sur Proxmox

Plateformes Supportées

Hyperviseurs

  • Proxmox VE
  • VMware vSphere
  • Instances Cloud (Vultr / AWS / GCP)

Modèles de Déploiement

  • Sur site (centre de données client)
  • Cloud (AWS, Azure, GCP via vLab)
  • Hybride (mélange de sur site et cloud)
  • Isolé (complètement hors ligne)

Obtenir de l'Aide

  1. Consultez la documentation pour des guides détaillés
  2. Consultez les fichiers hosts d'exemple pour référence
  3. Consultez la documentation produit sur https://docs.omnitouch.com.au/
  4. Contactez le support Omnitouch pour obtenir de l'aide sur le déploiement

Prochaines Étapes

  1. Lisez l'Introduction au Déploiement Ansible
  2. Consultez la Norme de Planification IP pour planifier votre architecture réseau
  3. Consultez la Vue d'ensemble de l'Architecture de Déploiement
  4. Créez votre fichier hosts
  5. Personnalisez avec group_vars selon les besoins
  6. Déployez votre réseau !