خدمات شبكة Omnitouch - نظام نشر Ansible
نظرة عامة
تحتوي هذه المستودع على كتب تشغيل Ansible والأدوار والتكوين لنشر حلول الشبكة الخلوية الكاملة (4G EPC، 5G Core، IMS، SS7) من خدمات شبكة Omnitouch. يمكّن النظام من نشرات تلقائية وقابلة للتكرار للبنية التحتية للاتصالات من الدرجة الإنتاجية.
ما الذي يتم نشره
OmniCore (منصة 4G/5G Packet Core)
- OmniHSS - خادم المشتركين المنزليين
- OmniSGW - بوابة الخدمة (طبقة التحكم)
- OmniPGW - بوابة الحزمة (طبقة التحكم)
- OmniUPF - وظيفة مستوى المستخدم
- OmniDRA - وكيل توجيه القطر
- 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 المنفصلة مقابل VLANs)
-
- تعريف طوبولوجيا الشبكة الخاصة بك
- تكوين وظائف الشبكة ومعلماتها
- فهم تكوين PLMN
- العمل مع قوالب Jinja2
-
- دليل كامل لجميع متغيرات التكوين
- إعدادات مكونات OmniCore (HSS، PGW، SGW، DRA)
- إعدادات مكونات OmniCall (TAS، Message، CSCF)
- شرح تكوين وقت التشغيل
- مرجع المتغيرات مع أمثلة
-
- تخصيص النشرات دون تعديل الأدوار
- أولوية المتغيرات والدمج
- تكامل قوالب Jinja2
- أفضل الممارسات لتجاوز التكوين
البنية التحتية
-
- خيارات توزيع الحزم (ذاكرة التخزين المؤقت المحلية مقابل المستودع العام)
- كيفية تسليم الحزم المجمعة مسبقًا
- إعداد نشرات غير متصلة/مفصولة
- تكوين ذاكرة التخزين المؤقت المحلية APT
-
- إدارة ترخيص مركزية
- نماذج النشر (محلي، سحابي، هجين)
- ميزات خاضعة للترخيص
- التوافر العالي واستكشاف الأخطاء وإصلاحها
- تكوين Netplan - تكوين الشبكة/الواجهة المضيفة
- نشر Proxmox - توفير VMs على Proxmox
- كتب تشغيل الخدمة - مرجع لكتب التشغيل
services/*.yml - تكرار OmniHSS وعمليات العقد - شبكة نشطة-نشطة، إضافة/تكوين عقد HSS، التحقق
- جدار الحماية لكل دور - نموذج التدفق، تكوين المصدر لكل موقع، أوضاع المراقبة/التنفيذ، مصفوفة المنافذ
الرؤية
- تسجيل مركزي - خط أنابيب تجميع السجلات
- المراقبة والرؤية - Prometheus وGrafana والقياسات
الأدوات المساعدة
- كتب تشغيل الأدوات المساعدة
- Health Check: إنشاء تقارير HTML عن صحة النظام، حالة الخدمة والإصدارات
- Common/Setup Users: تكوين النظام الأساسي والمستخدمين
- Reboot: إعادة تشغيل النظام بشكل لطيف
- IP Plan Generator: توثيق طوبولوجيا الشبكة
- Backup/Restore:
services/backup.ymlللنسخ الاحتياطي،util_playbooks/restore_hss.ymlلاستعادة HSS - Troubleshooting: استرجاع التقاط الحزم، تحديثات MTU
الصورة الكاملة
- نظرة عامة على بنية النشر
- كيف تتناسب جميع المكونات معًا
- تقسيم الشبكة والأمان
- الاعتماديات الخدمية وترتيب النشر
- أنماط التوسع والتوافر العالي
البدء السريع
المتطلبات المسبقة
- عقدة تحكم Ubuntu 22.04+ (amd64)
- uv — مطلوب؛ يدير بيئة Python والاعتمادات
- Python 3.12+ (يمكن لـ uv تثبيت مترجم مناسب تلقائيًا)
- وصول SSH إلى المضيفين المستهدفين
- بيانات اعتماد مناسبة لمستودع APT
- ترخيص صالح من Omnitouch
التثبيت
-
احصل على المستودع
-
قم بتثبيت uv إذا لم يكن مثبتًا بالفعل. استخدم أي طريقة تناسب عقدة التحكم الخاصة بك — انظر وثائق تثبيت uv. على سبيل المثال:
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/(services/hostsهو رابط رمزي له). انسخ مثالاً موجودًا كنقطة انطلاق:
cp hosts/Omnicore_Omnitouch/host_files/yktn_Nick2.yml hosts/YourCustomer/host_files/production.yml
انظر: تكوين ملف المضيفين
- خصص باستخدام group_vars (اختياري):
mkdir -p hosts/YourCustomer/group_vars
# أنشئ ملفات التخصيص حسب الحاجة
انظر: تكوين متغيرات المجموعة
- قم بتكوين الوصول إلى مستودع 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 Cache
- قم بتكوين خادم الترخيص:
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 # بناء CI لحزمة omnicore .deb
├── 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 | إنشاء VMs على Proxmox |
المنصات المدعومة
Hypervisors
- Proxmox VE
- VMware vSphere
- مثيلات سحابية (Vultr / AWS / GCP)
نماذج النشر
- في الموقع (مركز بيانات العميل)
- سحابي (AWS، Azure، GCP عبر vLab)
- هجين (مزيج من المحلي والسحابي)
- مفصول (غير متصل تمامًا)
الحصول على المساعدة
- تحقق من الوثائق للحصول على أدلة مفصلة
- راجع ملفات المضيفين النموذجية للرجوع إليها
- استشر وثائق المنتج على https://docs.omnitouch.com.au/
- اتصل بدعم Omnitouch للحصول على مساعدة في النشر
الخطوات التالية
- اقرأ مقدمة في نشر Ansible
- راجع معيار تخطيط IP لتخطيط بنية شبكتك
- راجع نظرة عامة على بنية النشر
- أنشئ ملف المضيفين الخاص بك
- خصص باستخدام group_vars حسب الحاجة
- قم بنشر شبكتك!