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
- 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
-
- 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)
-
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
-
- 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
-
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
-
- 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
-
- 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
- Configuration Netplan - Configuration réseau/interface de l'hôte
- Déploiement Proxmox - Provisionnement de VMs sur Proxmox
- Playbooks de Service - Référence pour les playbooks
services/*.yml - Réplication OmniHSS & Opérations de Nœud - Maille active-active, ajout/seeding de nœuds HSS, validation
- Pare-feu par Rôle - Modèle de flux, configuration source par site, modes de surveillance/renforcement, matrice de ports
Observabilité
- Journalisation Centralisée - Pipeline d'agrégation de journaux
- Surveillance & Observabilité - Prometheus, Grafana et métriques
Utilitaires
- 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.ymlpour les sauvegardes,util_playbooks/restore_hss.ymlpour restaurer le HSS - Dépannage : Récupération de capture de paquets, mises à jour de MTU
Image Complète
- 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
-
Obtenez le Dépôt
-
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
- 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
- Activez l'environnement (gardez-le activé pour toutes les commandes
ansible) :
source .venv/bin/activate
- Installez les collections Ansible requises (à partir de
requirements.yml) :
ansible-galaxy collection install -r requirements.yml
- 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
- 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/hostsest 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
- 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
- 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
- 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
| Playbook | Objectif |
|---|---|
services/all.yml | Déployer le réseau complet |
services/epc.yml | Déployer les composants EPC 4G |
services/ims.yml | Déployer les services vocaux IMS |
services/omniss7.yml | Déployer la pile SS7 |
services/dns.yml | Déployer le service de support DNS |
services/monitoring.yml | Déployer uniquement la surveillance |
services/license_server.yml | Déployer uniquement le serveur de licences |
services/apt_cache.yml | Configurer le cache APT local |
util_playbooks/proxmox.yml | Cré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
- Consultez la documentation pour des guides détaillés
- Consultez les fichiers hosts d'exemple pour référence
- Consultez la documentation produit sur https://docs.omnitouch.com.au/
- Contactez le support Omnitouch pour obtenir de l'aide sur le déploiement
Prochaines Étapes
- Lisez l'Introduction au Déploiement Ansible
- Consultez la Norme de Planification IP pour planifier votre architecture réseau
- Consultez la Vue d'ensemble de l'Architecture de Déploiement
- Créez votre fichier hosts
- Personnalisez avec group_vars selon les besoins
- Déployez votre réseau !