Skip to main content

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

  1. 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

  1. IP Planning Standard

    • Network architecture and subnet allocation
    • Four-subnet deployment model
    • IP address assignment guidelines
    • Public IP handling
    • Implementation methods (separate NICs vs VLANs)
  2. Hosts File Configuration

    • Defining your network topology
    • Configuring network functions and their parameters
    • Understanding PLMN configuration
    • Working with Jinja2 templates
  3. Configuration Reference

    • 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
  4. Group Variables and Configuration

    • Customizing deployments without modifying roles
    • Variable precedence and merging
    • Jinja2 template integration
    • Best practices for configuration overrides

Infrastructure

  1. APT Cache System

    • Package distribution options (local cache vs. public repository)
    • How pre-compiled packages are delivered
    • Setting up offline/air-gapped deployments
    • Local APT cache configuration
  2. License Server

    • Centralized license management
    • Deployment models (local, cloud, hybrid)
    • License-controlled features
    • High availability and troubleshooting

Complete Picture

  1. 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

  1. Get the Repository

  2. Create Python virtual environment:

python3 -m venv venv
source venv/bin/activate
  1. Install Ansible and dependencies:
pip install -r requirements.txt
  1. Verify installation:
ansible --version

Configuration

  1. Create your hosts file based on your network design:
cp services/hosts/Example/host_files/template.yml services/hosts/YourCustomer/host_files/production.yml

See: Hosts File Configuration

  1. Customize with group_vars (optional):
mkdir -p services/hosts/YourCustomer/group_vars
# Create customization files as needed

See: Group Variables Configuration

  1. 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

  1. 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

PlaybookPurpose
services/all.ymlDeploy complete network
services/epc.ymlDeploy 4G EPC components
services/ims.ymlDeploy IMS voice services
services/omniss7.ymlDeploy SS7 stack
services/infra.ymlDeploy support services
services/monitoring.ymlDeploy monitoring only
services/license_server.ymlDeploy license server only
services/apt.ymlSet up local APT cache
services/proxmox.ymlCreate 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

  1. Check the documentation for detailed guides
  2. Review example hosts files for reference
  3. Consult product documentation at https://docs.omnitouch.com.au/
  4. Contact Omnitouch support for deployment assistance

Next Steps

  1. Read the Introduction to Ansible Deployment
  2. Review the IP Planning Standard to plan your network architecture
  3. Review the Deployment Architecture Overview
  4. Create your hosts file
  5. Customize with group_vars as needed
  6. Deploy your network!