跳到主要内容

Omnitouch 网络服务 - Ansible 部署系统

概述

该存储库包含 Ansible 剧本、角色和配置,用于从 Omnitouch 网络服务部署完整的蜂窝网络解决方案(4G EPC、5G 核心、IMS、SS7)。该系统能够实现生产级电信基础设施的自动化、可重复部署。

部署内容

OmniCore (4G/5G 数据包核心平台)

  • OmniHSS - 家庭用户服务器
  • OmniSGW - 服务网关(控制平面)
  • OmniPGW - 数据包网关(控制平面)
  • OmniUPF - 用���平面功能
  • OmniDRA - Diameter 路由代理
  • OmniTWAG - 可信 WLAN 接入网关

查看: https://docs.omnitouch.com.au/docs/repos/OmniCore

OmniCall (语音和消息平台)

  • OmniCall CSCF - 呼叫会话控制(P-CSCF、I-CSCF、S-CSCF)
  • OmniTAS - IMS 应用服务器(VoLTE、VoNR、VoWiFi)
  • OmniMessage - 短信中心(SMS-C)
  • OmniMessage SMPP - SMPP 协议支持
  • OmniSS7 - SS7 信令组件(STP、HLR、CAMEL)
  • VisualVoicemail - 语音邮件功能

查看: https://docs.omnitouch.com.au/docs/repos/OmniCall

OmniCharge/OmniCRM

  • OmniCRM - 客户关系管理、自助注册、计费

查看: https://docs.omnitouch.com.au/docs/repos/OmniCharge

支持服务

  • License Server - 集中式许可管理
  • DNS - 网络 DNS 解析
  • Monitoring - Prometheus 和 Grafana
  • APT Cache - 本地软件包存储库(可选)

文档

入门

  1. Ansible 部署简介
    • Ansible 如何用于部署蜂窝网络的概述
    • 关键概念:清单、角色、剧本、变量
    • 部署工作流程和好处

核心概念

  1. IP 规划标准

    • 网络架构和子网分配
    • 四子网部署模型
    • IP 地址分配指南
    • 公共 IP 处理
    • 实施方法(单独的 NIC 与 VLAN)
  2. Hosts 文件配置

    • 定义您的网络拓扑
    • 配置网络功能及其参数
    • 理解 PLMN 配置
    • 使用 Jinja2 模板
  3. 配置参考

    • 所有配置变量的完整指南
    • OmniCore 组件设置(HSS、PGW、SGW、DRA)
    • OmniCall 组件设置(TAS、消息、CSCF)
    • 运行时配置说明
    • 带示例的变量参考
  4. 组变量和配置

    • 在不修改角色的情况下自定义部署
    • 变量优先级和合并
    • Jinja2 模板集成
    • 配置覆盖的最佳实践

基础设施

  1. APT 缓存系统

    • 软件包分发选项(本地缓存与公共存储库)
    • 预编译软件包的交付方式
    • 设置离线/空气隔离部署
    • 本地 APT 缓存配置
  2. License Server

    • 集中式许可管理
    • 部署模型(本地、云、混合)
    • 许可控制的功能
    • 高可用性和故障排除

可观察性

实用工具

  1. 实用工具剧本
    • 健康检查:生成系统健康、服务状态和版本的 HTML 报告
    • 常见/设置用户:基础系统和用户配置
    • 重启:优雅的系统重启
    • IP 计划生成器:网络拓扑文档
    • 备份/恢复services/backup.yml 用于备份,util_playbooks/restore_hss.yml 用于恢复 HSS
    • 故障排除:数据包捕获检索、MTU 更新

完整图景

  1. 部署架构概述
    • 所有组件如何结合在一起
    • 网络分段和安全性
    • 服务依赖关系和部署顺序
    • 扩展和高可用性模式

快速开始

先决条件

  • Ubuntu 22.04+ 控制节点(amd64)
  • uv — 必需;管理 Python 环境和依赖
  • Python 3.12+(uv 可以自动安装合适的解释器)
  • 对目标主机的 SSH 访问
  • APT 存储库的适当凭据
  • 有效的 Omnitouch 许可证

安装

  1. 获取存储库

  2. 如果尚未安装,请安装 uv。使用适合您的控制节点的任何方法 — 请参见 uv 安装文档。例如:

pipx install uv                                    # 通过 pipx
curl -LsSf https://astral.sh/uv/install.sh | sh # 独立安装程序
  1. 安装 Ansible 和依赖项。这将创建一个 python venv。

在 Ubuntu 和 Debian 上:

apt install libssh-dev
uv sync

在 MacOS(使用 brew)上:

brew install libssh
CFLAGS="-I $(brew --prefix)/include -I ext -L $(brew --prefix)/lib -lssh" uv sync
  1. 激活环境(在所有 ansible 命令中保持激活):
source .venv/bin/activate
  1. 安装所需的 Ansible 集合(来自 requirements.yml):
ansible-galaxy collection install -r requirements.yml
  1. 验证安装:
ansible --version

代码检查

ansible-lint 在 CI 中运行。要自己运行它:

uv sync --group lint            # 安装 ansible-lint(开发专用组,不在 .deb 中提供)
uv run ansible-lint [paths...] # 整个存储库,或仅您修改的文件

配置

  1. 根据您的网络设计创建 hosts 文件。客户清单位于顶级 hosts/ 目录下(services/hosts 是其符号链接)。复制现有示例作为起点:
cp hosts/Omnicore_Omnitouch/host_files/yktn_Nick2.yml hosts/YourCustomer/host_files/production.yml

查看:Hosts 文件配置

  1. 使用 group_vars 自定义(可选):
mkdir -p hosts/YourCustomer/group_vars
# 根据需要创建自定义文件

查看:组变量配置

  1. 在您的 hosts 文件中配置 APT 存储库访问

对于带有本地 APT 缓存服务器的部署(推荐):

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

# 不需要额外配置!
# use_apt_cache 和 apt_repo.apt_server 会自动设置

或直接访问存储库:

all:
vars:
apt_repo:
apt_server: "packages.omnitouch.com"
apt_repo_username: "your-username"
apt_repo_password: "your-password"
use_apt_cache: false # 直接使用公共存储库(不使用缓存)

查看:APT 缓存系统

  1. 配置许可服��器
all:
vars:
license_server_api_urls: ["https://licenses.omnitouch.com/api"]
license_enforced: true

查看:License Server

部署

部署您的完整网络:

# 部署整个网络
ansible-playbook -i services/hosts/YourCustomer/host_files/production.yml services/all.yml

# 或部署特定组件:
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/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

存储库结构

Omnicore/
├── README.md # 本文件
├── docs/ # 文档
│ ├── 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 # 实用工具剧本指南
│ ├── service-playbooks.md # 服务剧本指南
│ └── deployment-architecture.md
├── hosts/ # 客户清单(顶级)
│ └── Customer_Name/
│ ├── host_files/ # 清单文件
│ └── group_vars/ # 变量覆盖
├── services/ # Ansible 剧本
│ ├── hosts -> ../hosts # 指向顶级 hosts/ 的符号链接
│ ├── epc.yml # 部署 4G 核心
│ ├── ims.yml # 部署 IMS
│ ├── omniss7.yml # 部署 SS7 堆栈
│ ├── dns.yml # 部署 DNS 支持服务
│ ├── backup.yml # 备份核心数据库
│ ├── all.yml # 部署所有内容
│ ├── common.yml # 基础系统配置
│ ├── setup_users.yml # 用户管理
│ ├── reboot.yml # 优雅重启工具
│ └── ... # 特定组件的剧本
├── util_playbooks/ # 操作实用工具
│ ├── health_check.yml # 系统健康报告
│ ├── ip_plan_generator.yml # 网络文档
│ ├── restore_hss.yml # 从备份恢复 HSS
│ ├── getLocalCapture.yml # 数据包捕获检索
│ └── ... # 其他实用工具
├── roles/ # Ansible 角色
│ ├── common/ # 基础配置
│ ├── omnihss/ # OmniHSS 部署
│ ├── omnisgwc/ # OmniSGW 部署
│ ├── omnipgwc/ # OmniPGW 部署
│ ├── applicationserver/ # OmniTAS(IMS 应用服务器)
│ ├── omnimessage/ # OmniMessage 部署
│ ├── license_server/ # 许可服务器
│ ├── monitoring/ # Prometheus/Grafana
│ └── ... # 其他组件角色
├── packaging/ # .deb 构建配置(nfpm, build.sh)
├── .github/workflows/build-deb.yml # omnicore .deb 的 CI 构建
├── requirements.yml # Ansible 集合要求(ansible-galaxy)
├── pyproject.toml # Python 依赖(uv)
└── uv.lock # 固定的 Python 依赖锁

OmniCore 也可以作为 omnicore .deb 包从 apt 服务器安装 — 由 packaging/build.sh.github/workflows/build-deb.yml 构��。

主要特性

自动化部署

  • 完整的蜂窝网络在数小时内部署
  • 跨环境一致的配置
  • 可重复的开发、测试和生产部署

灵活配置

  • Jinja2 模板用于动态配置生成
  • group_vars 用于客户特定的自定义
  • 无需修改核心角色

软件包管理

  • 预编译的二进制软件包(.deb)
  • 本地 APT 缓存用于离线部署
  • 互联网连接站点的公共存储库

基础设施即代码

  • 所有配置在 Git 版本控制中
  • 跟踪更改并启用回滚
  • 在部署前审查更改

常见剧本

剧本目的
services/all.yml部署完整网络
services/epc.yml部署 4G EPC 组件
services/ims.yml部署 IMS 语音服务
services/omniss7.yml部署 SS7 堆栈
services/dns.yml部署 DNS 支持服务
services/monitoring.yml仅部署监控
services/license_server.yml仅部署许可服务器
services/apt_cache.yml设置本地 APT 缓存
util_playbooks/proxmox.yml在 Proxmox 上创建虚拟机

支持的平台

虚拟化管理程序

  • Proxmox VE
  • VMware vSphere
  • 云实例(Vultr / AWS / GCP)

部署模型

  • 本地(客户数据中心)
  • 云(AWS、Azure、GCP 通过 vLab)
  • 混合(本地和云的组合��
  • 空气隔离(完全离线)

获取帮助

  1. 查看 文档 以获取详细指南
  2. 查看 示例 hosts 文件 作为参考
  3. 查阅产品文档 https://docs.omnitouch.com.au/
  4. 联系 Omnitouch 支持以获取部署帮助

下一步

  1. 阅读 Ansible 部署简介
  2. 查看 IP 规划标准 以规划您的网络架构
  3. 查看 部署架构概述
  4. 创建您的 hosts 文件
  5. 根据需要使用 group_vars 进行自定义
  6. 部署您的网络!