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 - 本地软件包存储库(可选)
文档
入门
- Ansible 部署简介
- Ansible 如何用于部署蜂窝网络的概述
- 关键概念:清单、角色、剧本、变量
- 部署工作流程和好处
核心概念
-
- 网络架构和子网分配
- 四子网部署模型
- IP 地址分配指南
- 公共 IP 处理
- 实施方法(单独的 NIC 与 VLAN)
-
- 定义您的网络拓扑
- 配置网络功能及其参数
- 理解 PLMN 配置
- 使用 Jinja2 模板
-
- 所有配置变量的完整指南
- OmniCore 组件设置(HSS、PGW、SGW、DRA)
- OmniCall 组件设置(TAS、消息、CSCF)
- 运行时配置说明
- 带示例的变量参考
-
- 在不修改角色的情况下自定义部署
- 变量优先级和合并
- Jinja2 模板集成
- 配置覆盖的最佳实践
基础设施
-
- 软件包分发选项(本地缓存与公共存储库)
- 预编译软件包的交付方式
- 设置离线/空气隔离部署
- 本地 APT 缓存配置
-
- 集中式许可管理
- 部署模型(本地、云、混合)
- 许可控制的功能
- 高可用性和故障排除
- Netplan 配置 - 主机网络/接口配置
- Proxmox 部署 - 在 Proxmox 上配置虚拟机
- 服务剧本 -
services/*.yml剧本的参考 - OmniHSS 复制与节点操作 - 主动-主动网状,添加/播种 HSS 节点,验证
- 按角色防火墙 - 流模型、每站点源配置、监控/强制模式、端口矩阵
可观察性
实用工具
- 实用工具剧本
- 健康检查:生成系统健康、服务状态和版本的 HTML 报告
- 常见/设置用户:基础系统和用户配置
- 重启:优雅的系统重启
- IP 计划生成器:网络拓扑文档
- 备份/恢复:
services/backup.yml用于备份,util_playbooks/restore_hss.yml用于恢复 HSS - 故障排除:数据包捕获检索、MTU 更新
完整图景
- 部署架构概述
- 所有组件如何结合在一起
- 网络分段和安全性
- 服务依赖关系和部署顺序
- 扩展和高可用性模式
快速开始
先决条件
- Ubuntu 22.04+ 控制节点(amd64)
- uv — 必需;管理 Python 环境和依赖
- Python 3.12+(uv 可以自动安装合适的解释器)
- 对目标主机的 SSH 访问
- APT 存储库的适当凭据
- 有效的 Omnitouch 许可证
安装
pipx install uv # 通过 pipx
curl -LsSf https://astral.sh/uv/install.sh | sh # 独立安装程序
- 安装 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
- 激活环境(在所有
ansible命令中保持激活):
source .venv/bin/activate
- 安装所需的 Ansible 集合(来自
requirements.yml):
ansible-galaxy collection install -r requirements.yml
- 验证安装:
ansible --version
代码检查
ansible-lint 在 CI 中运行。要自己运行它:
uv sync --group lint # 安装 ansible-lint(开发专用组,不在 .deb 中提供)
uv run ansible-lint [paths...] # 整个存储库,或仅您修改的文件
配置
- 根据您的网络设计创建 hosts 文件。客户清单位于顶级
hosts/目录下(services/hosts是其符号链接)。复制现有示例作为起点:
cp hosts/Omnicore_Omnitouch/host_files/yktn_Nick2.yml hosts/YourCustomer/host_files/production.yml
查看:Hosts 文件配置
- 使用 group_vars 自定义(可选):
mkdir -p hosts/YourCustomer/group_vars
# 根据需要创建自定义文件
查看:组变量配置
- 在您的 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 缓存系统
- 配置许可服��器:
all:
vars:
license_server_api_urls: ["https://licenses.omnitouch.com/api"]
license_enforced: true
部署
部署您的完整网络:
# 部署整个网络
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)
- 混合(本地和云的组合��
- 空气隔离(完全离线)
获取帮助
- 查看 文档 以获取详细指南
- 查看 示例 hosts 文件 作为参考
- 查阅产品文档 https://docs.omnitouch.com.au/
- 联系 Omnitouch 支持以获取部署帮助
下一步
- 阅读 Ansible 部署简介
- 查看 IP 规划标准 以规划您的网络架构
- 查看 部署架构概述
- 创建您的 hosts 文件
- 根据需要使用 group_vars 进行自定义
- 部署您的网络!