Configuration Reference
Overview
This document provides a comprehensive reference for configuring OmniCore deployments through hosts files. Configuration is primarily defined in host inventory files with minimal group_vars overrides needed for modern deployments.
For product-specific documentation, see:
- OmniCore: https://docs.omnitouch.com.au/docs/repos/OmniCore
- OmniCall: https://docs.omnitouch.com.au/docs/repos/OmniCall
- OmniCharge: https://docs.omnitouch.com.au/docs/repos/OmniCharge
Configuration Approach
Modern OmniCore deployments use a simplified configuration model:
Key Principle: Most configuration is defined directly in the hosts file, and role defaults handle many settings. Some components, however, are configured exclusively from group_vars and have no role default — notably OmniCRM (see below). In those cases a missing value fails the run loudly rather than falling back to a default.
Security note: Several role defaults are insecure placeholders intended for lab use only and must be overridden for any real deployment. Examples include database passwords (e.g.
sql_pass: password,omnitouch2024) and APT repository credentials (omni/omni). Always set real, unique secrets in your inventory or group_vars before deploying.
Network Planning
Before configuring hosts, review the IP Planning Standard for guidance on:
- Network segmentation strategies
- IP address allocation
- Subnet organization
- Public IP handling
Common Host Parameters
#ToDo - Just say to check hosts-file-configuration.md for this
Service-Specific Flags
cdrs_enabled: True # Enable CDR generation
in_pool: False # Exclude from load balancing pool
populate_crm: False # Populate CRM with initial data
Global Variables (all:vars)
The all:vars section contains deployment-wide settings. Modern deployments use minimal global variables, with many settings covered by role defaults. Note the exceptions below (OmniCRM, Grafana SMTP) where configuration must be supplied explicitly because no role default exists.
Essential Global Variables
Authentication & Access
ansible_connection: ssh
ansible_user: root
ansible_password: password
ansible_become_password: password
Alternative: Use SSH keys instead of passwords:
ansible_ssh_private_key_file: '/path/to/key.pem'
Customer Identity
customer_name_short: omnitouch
customer_legal_name: "Customer Lab"
site_name: Customer-Site
region: AU
TZ: Australia/Melbourne
PLMN Configuration
plmn_id:
mcc: '001' # Mobile Country Code (3 digits)
mnc: '01' # Mobile Network Code (2-3 digits)
mnc_longform: '001' # Zero-padded MNC (always 3 digits)
diameter_realm: epc.mnc{{ plmn_id.mnc_longform }}.mcc{{ plmn_id.mcc }}.3gppnetwork.org
Purpose: Uniquely identifies your mobile network. Used for Diameter realm construction.
Network Names
network_name_short: Omni
network_name_long: Omnitouch
tac_list: [10100,100] # Default TAC list (can override per-MME)
Displayed: Network names shown on UE devices in Settings > Mobile Network.
DNS Configuration
manage_resolv_conf: True # Set to False to prevent Ansible from managing /etc/resolv.conf
Note: When manage_resolv_conf is set to False, Ansible will not overwrite /etc/resolv.conf on that host. This is useful for hosts that require custom DNS configuration or are managed by external systems. Can be set per-host in the inventory or globally in all:vars.
APT Repository Configuration
Automatic Defaults: When an apt_cache_servers group is defined with hosts:
use_apt_cacheautomatically defaults toTrue(unless explicitly set toFalse)apt_repo.apt_serverautomatically defaults to the first cache server's IP
# Manual configuration (optional if apt_cache_servers group exists)
use_apt_cache: True # Use local APT cache vs direct repo access
apt_repo:
apt_server: "10.10.1.114" # APT cache server or repo server
# Credentials only needed when use_apt_cache: False
# apt_repo_username: "omni"
# apt_repo_password: "omni"
# Binary downloads and cache sync configuration
# Used for: (1) downloading binaries from /releases/ when use_apt_cache: false
# (2) cache server syncing from Omnitouch when use_apt_cache: true
remote_apt_server: "apt.omnitouch.com.au"
remote_apt_user: "omni"
remote_apt_password: "omni"
See: APT Cache System
License Server
# Optional: auto-derived from the `license_server` inventory group when unset.
# Each host in that group becomes https://<ansible_host>:8443/api.
license_server_api_urls: ["https://10.10.2.150:8443/api"]
license_enforced: false # Effective default is false (roles/omnihss/defaults/main.yml)
Note: If a license_server group exists in the inventory, license_server_api_urls is derived automatically from its members; you only need to set it manually to override that behaviour.
See: License Server
MME Settings
The MME selects S-GW and P-GW peers using a configurable method, set per gateway under omnimme. The method can be a single value or split by home/roaming traffic. Valid values are dns_lookup (resolve peers via DNS) and random_peer (pick from configured peers).
omnimme:
sgw:
selection_method: random_peer # single value, or...
# selection_method:
# home: random_peer
# roaming: dns_lookup
pgw:
selection_method:
home: random_peer
roaming: dns_lookup
SAEGW Settings
mtu: 1400 # Maximum Transmission Unit
OmniCRM Settings
OmniCRM configuration is sourced exclusively from the customer's group_vars (under hosts/); no defaults are baked into the role. crm_env_override is required — it names the per-site .env template, and a missing value fails the run loudly rather than shipping another site's secrets. The remaining files are optional (skipped if unset). All paths are resolved relative to the customer's group_vars directory.
crm_env_override: my-site.env # REQUIRED: per-site UI .env template (no default)
crm_config.yaml # API config (crm_config.yaml in group_vars; copied to the API)
cell_sites: cellSites.txt # optional: cell site data for the UI
message_templates: constants.js # optional: cell broadcast message templates
site_data: site_data.json # optional: cell broadcast geo bounds
Grafana SMTP Settings
Used by the monitoring role for Grafana alert email. grafana_smtp_user and grafana_smtp_password are required (no default — they must be set); grafana_smtp_host defaults to in-v3.mailjet.com:587. See roles/monitoring/templates/grafana/grafana.ini.
grafana_smtp_user: "smtp-user" # REQUIRED, no default
grafana_smtp_password: "smtp-password" # REQUIRED, no default
grafana_smtp_host: "in-v3.mailjet.com:587" # optional, this is the default
IMS Settings
ims_dra_support: False # Route IMS through DRA
enable_homer: False # Enable Homer SIP capture
RAN Monitor Configuration
use_nokia_monitor: True
use_casa_monitor: True
install_influxdb: True
influxdb_user: monitor
influxdb_password: "secure-password"
influxdb_organisation_name: omnitouch
influxdb_nokia_bucket_name: nokia-monitor
influxdb_casa_bucket_name: casa-monitor
influxdb_operator_token: "generated-token"
influxdb_url: http://127.0.0.1:8086
enable_pm_collection: False
enable_alarm_collection: False
enable_location_collection: False
enable_ran_status_collection: True
enable_nokia_rectifier_collection: False
collection_interval_in_seconds: 120
ran_monitor:
sql:
user: ran_monitor
password: "secure-password"
database_host: 127.0.0.1
database_name: ran_monitor
influxdb:
address: 10.10.2.135
port: 8086
nokia:
airscales:
- address: 10.7.15.66
name: site-Lab-Airscale
port: 8080
web_password: nemuuser
web_username: Nemuadmin
Firewall Configuration
firewall:
allowed_ssh_subnets:
- '10.0.1.0/24'
- '10.0.0.0/24'
allowed_ue_voice_subnets:
- '10.0.1.0/24'
allowed_carrier_voice_subnets:
- '10.0.1.0/24'
allowed_signaling_subnets:
- '10.0.1.0/24'
Roaming DNS Servers
roaming_dns_servers:
wildcard: ['10.0.99.1']
# Carrier-specific DNS (PLMN-based)
123456: # Example Carrier 1
- '10.10.2.197'
654321: # Example Carrier 2
- '10.10.0.4'
Local Users (SSH Keys)
local_users:
usera:
name: Example User A
public_key: "ssh-rsa AAAAB3Nza..."
userb:
name: Example User B
public_key: "ssh-ed25519 AAAAC3..."
Hypervisor Configuration
Proxmox
A site deploys as either VMs or LXC containers, selected per proxmoxServers entry via deployment_type (default vm). All entries in a site must agree; mixing fails validation. See Proxmox Deployment for the full walkthrough.
VM site
proxmoxServers:
customer-prxmx01:
# deployment_type omitted → defaults to "vm"
proxmoxServerAddress: 10.10.0.100
proxmoxServerPort: 8006
proxmoxApiTokenName: AnsibleToken
proxmoxApiTokenSecret: "token-secret"
proxmoxNodeName: pve01
proxmoxTemplateName: ubuntu-24.04-cloud-init-template
proxmoxTemplateId: 9000
proxmoxTemplateUser: omnitouch # optional cloud-init username; defaults to the first local_users key
proxmoxTemplatePassword: omnitouch # optional cloud-init password; defaults to the cloud-init username
storage: SSD_RAID0 # optional, default VM storage
LXC site
proxmox_lxc_nameserver: "1.1.1.1" # optional, injected into LXCs at create
proxmoxServers:
customer-prxmx01:
deployment_type: lxc
proxmoxServerAddress: 10.10.0.100
proxmoxServerPort: 8006
proxmoxApiTokenName: AnsibleToken
proxmoxApiTokenSecret: "token-secret"
proxmoxNodeName: pve01
proxmoxLxcOsTemplate: "local:vztmpl/ubuntu-24.04-standard_24.04-2_amd64.tar.zst"
proxmoxLxcDefaultStorage: SSD_RAID0 # optional, rootfs fallback
Group-level overrides (both types)
dns:
vars:
proxmox_interface: vmbr0 # required: bridge
gateway: 10.10.0.1 # required
netmask: 255.255.255.0 # required
vlanid: 100 # optional
proxmoxLxcCores: 2 # optional (LXC only)
proxmoxLxcMemoryMb: 4096 # optional (LXC only)
proxmoxLxcDiskSizeGb: 30 # optional (LXC only)
proxmoxLxcRootFsStorageName: SSD_RAID0 # optional (LXC only)
host_vm_network: vmbr1 # optional bridge override
VMware vCenter
vcenter_ip: "vcenter.example.com"
vcenter_username: "administrator@vsphere.local"
vcenter_password: "password"
vcenter_datacenter: "DC1"
vcenter_vm_template: ubuntu-24.04-model
vcenter_vm_disk_size: 50
vcenter_folder: "Omnicore"
host_vm_network: "Management"
vhosts:
"10.0.0.23":
vcenter_cluster_ip: 10.0.0.23
vcenter_datastore: "datastore1 (3)"
netmask: 255.255.255.0
Related Documentation
- IP Planning Standard - Network architecture and IP allocation guidelines
- Hosts File Configuration - How to structure hosts files
- Group Variables Configuration - When and how to use group_vars
- Netplan Configuration - Secondary IPs and multi-NIC setup
- Deployment Architecture - How components interact
- APT Cache System - Package management
- License Server - License configuration
Product Documentation
For detailed operational guides and advanced configuration:
- OmniCore Components: https://docs.omnitouch.com.au/docs/repos/OmniCore
- OmniCall Components: https://docs.omnitouch.com.au/docs/repos/OmniCall
- OmniCharge/OmniCRM: https://docs.omnitouch.com.au/docs/repos/OmniCharge