Omnitouch Network Services - Ansible Deployment System
Overview
This repository contains Ansible playbooks, roles, and configuration for deploying complete cellular network solutions (4G EPC, 5G Core, IMS, SS7) from Omnitouch Network Services. The system enables automated, repeatable deployments of production-grade telecom infrastructure.
What Gets Deployed
OmniCore (4G/5G Packet Core Platform)
- OmniHSS - Home Subscriber Server
- OmniSGW - Serving Gateway (Control plane)
- OmniPGW - Packet Gateway (Control plane)
- OmniUPF - User Plane Function
- OmniDRA - Diameter Routing Agent
- OmniTWAG - Trusted WLAN Access Gateway
See: https://docs.omnitouch.com.au/docs/repos/OmniCore
OmniCall (Voice & Messaging Platform)
- OmniCall CSCF - Call Session Control (P-CSCF, I-CSCF, S-CSCF)
- OmniTAS - IMS Application Server (VoLTE, VoNR, VoWiFi)
- OmniMessage - SMS Center (SMS-C)
- OmniMessage SMPP - SMPP protocol support
- OmniSS7 - SS7 signaling components (STP, HLR, CAMEL)
- VisualVoicemail - Voicemail functionality
See: https://docs.omnitouch.com.au/docs/repos/OmniCall
OmniCharge/OmniCRM
- OmniCRM - Customer relationship management, self-signup, billing
See: https://docs.omnitouch.com.au/docs/repos/OmniCharge
Support Services
- License Server - Centralized licensing
- DNS - Network DNS resolution
- Monitoring - Prometheus & Grafana
- APT Cache - Local package repository (optional)
Documentation
Getting Started
- Introduction to Ansible Deployment
- Overview of how Ansible is used to deploy cellular networks
- Key concepts: inventory, roles, playbooks, variables
- Deployment workflow and benefits
Core Concepts
-
- Network architecture and subnet allocation
- Four-subnet deployment model
- IP address assignment guidelines
- Public IP handling
- Implementation methods (separate NICs vs VLANs)
-
- Defining your network topology
- Configuring network functions and their parameters
- Understanding PLMN configuration
- Working with Jinja2 templates
-
- Complete guide to all configuration variables
- OmniCore component settings (HSS, PGW, SGW, DRA)
- OmniCall component settings (TAS, Message, CSCF)
- Runtime configuration explained
- Variable reference with examples
-
Group Variables and Configuration
- Customizing deployments without modifying roles
- Variable precedence and merging
- Jinja2 template integration
- Best practices for configuration overrides
Infrastructure
-
- Package distribution options (local cache vs. public repository)
- How pre-compiled packages are delivered
- Setting up offline/air-gapped deployments
- Local APT cache configuration
-
- Centralized license management
- Deployment models (local, cloud, hybrid)
- License-controlled features
- High availability and troubleshooting
Complete Picture
- Deployment Architecture Overview
- How all components fit together
- Network segmentation and security
- Service dependencies and deployment order
- Scaling and high availability patterns
Quick Start
Prerequisites
- Ubuntu 20.04+ control node
- Python 3.8+
- SSH access to target hosts
- Appropriate credentials for APT repository
- Valid Omnitouch license
Installation
-
Get the Repository
-
Create Python virtual environment:
python3 -m venv venv
source venv/bin/activate
- Install Ansible and dependencies:
pip install -r requirements.txt
- Verify installation:
ansible --version
Configuration
- Create your hosts file based on your network design:
cp services/hosts/Example/host_files/template.yml services/hosts/YourCustomer/host_files/production.yml
- Customize with group_vars (optional):
mkdir -p services/hosts/YourCustomer/group_vars
# Create customization files as needed
See: Group Variables Configuration
- Configure APT repository access in your hosts file:
all:
vars:
apt_repo:
apt_server: "packages.omnitouch.com"
apt_repo_username: "your-username"
apt_repo_password: "your-password"
use_apt_cache: false # Use public repo directly (not cache)
See: APT Cache System
- Configure license server:
all:
vars:
license_server_api_urls: ["https://licenses.omnitouch.com/api"]
license_enforced: true
See: License Server
Deployment
Deploy your complete network:
# Deploy entire network
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/all.yml
# Or deploy specific components:
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
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/infra.yml
Repository Structure
Omnicore/
├── README.md # This file
├── docs/ # Documentation
│ ├── ansible-introduction.md
│ ├── IP_Planning_Standard.md
│ ├── hosts-file-configuration.md
│ ├── group-vars-configuration.md
│ ├── apt-cache-system.md
│ ├── license-server.md
│ └── deployment-architecture.md
├── services/ # Ansible playbooks
│ ├── hosts/ # Customer-specific configurations
│ │ └── Customer_Name/
│ │ ├── host_files/ # Inventory files
│ │ └── group_vars/ # Variable overrides
│ ├── epc.yml # Deploy 4G core
│ ├── ims.yml # Deploy IMS
│ ├── omniss7.yml # Deploy SS7 stack
│ ├── infra.yml # Deploy support services
│ ├── all.yml # Deploy everything
│ └── ... # Component-specific playbooks
├── roles/ # Ansible roles
│ ├── common/ # Base configuration
│ ├── omnihss/ # OmniHSS deployment
│ ├── omnisgwc/ # OmniSGW deployment
│ ├── omnipgwc/ # OmniPGW deployment
│ ├── omni_tas/ # OmniTAS deployment
│ ├── omnimessage/ # OmniMessage deployment
│ ├── license_server/ # License server
│ ├── monitoring/ # Prometheus/Grafana
│ └── ... # Other component roles
└── requirements.txt # Python dependencies
Key Features
Automated Deployment
- Complete cellular network deployed in hours
- Consistent configuration across environments
- Repeatable deployments for dev, test, and production
Flexible Configuration
- Jinja2 templates for dynamic configuration generation
- group_vars for customer-specific customization
- No need to modify core roles
Package Management
- Pre-compiled binary packages (.deb)
- Local APT cache for offline deployments
- Public repository for internet-connected sites
Infrastructure as Code
- All configuration in Git version control
- Track changes and enable rollback
- Review changes before deployment
Common Playbooks
| Playbook | Purpose |
|---|---|
services/all.yml | Deploy complete network |
services/epc.yml | Deploy 4G EPC components |
services/ims.yml | Deploy IMS voice services |
services/omniss7.yml | Deploy SS7 stack |
services/infra.yml | Deploy support services |
services/monitoring.yml | Deploy monitoring only |
services/license_server.yml | Deploy license server only |
services/apt.yml | Set up local APT cache |
services/proxmox.yml | Create VMs on Proxmox |
Supported Platforms
Hypervisors
- Proxmox VE
- VMware vSphere
- Cloud instances (Vultr / AWS / GCP)
Deployment Models
- On-premise (customer data center)
- Cloud (AWS, Azure, GCP via vLab)
- Hybrid (mix of on-prem and cloud)
- Air-gapped (completely offline)
Getting Help
- Check the documentation for detailed guides
- Review example hosts files for reference
- Consult product documentation at https://docs.omnitouch.com.au/
- Contact Omnitouch support for deployment assistance
Next Steps
- Read the Introduction to Ansible Deployment
- Review the IP Planning Standard to plan your network architecture
- Review the Deployment Architecture Overview
- Create your hosts file
- Customize with group_vars as needed
- Deploy your network!