خدمات شبكة أومنيتاتش - نظام نشر أنسبل
نظرة عامة
تحتوي هذه المستودع على كتب لعب أنسبل، وأدوار، وتكوين لنشر حلول الشبكة الخلوية الكاملة (4G EPC، 5G Core، IMS، SS7) من خدمات شبكة أومنيتاتش. يمكّن النظام من نشرات آلية وقابلة للتكرار للبنية التحتية للاتصالات من الدرجة الإنتاجية.
ما الذي يتم نشره
أومنيكور (منصة 4G/5G Packet Core)
- أومنيHSS - خادم المشتركين المنزليين
- أومنيSGW - بوابة الخدمة (طبقة التحكم)
- أومنيPGW - بوابة الحزمة (طبقة التحكم)
- أومنيUPF - وظيفة مستوى المستخدم
- أومنيDRA - وكيل توجيه القطر
- أومنيTWAG - بوابة الوصول WLAN الموثوقة
انظر: https://docs.omnitouch.com.au/docs/repos/OmniCore
أومنيكول (منصة الصوت والرسائل)
- أومنيكول CSCF - التحكم في جلسة المكالمات (P-CSCF، I-CSCF، S-CSCF)
- أومنيTAS - خادم تطبيق IMS (VoLTE، VoNR، VoWiFi)
- أومنيMessage - مركز الرسائل القصيرة (SMS-C)
- أومنيMessage SMPP - دعم بروتوكول SMPP
- أومنيSS7 - مكونات الإشارة SS7 (STP، HLR، CAMEL)
- VisualVoicemail - وظيفة البريد الصوتي
انظر: https://docs.omnitouch.com.au/docs/repos/OmniCall
أومنيتشارج/أومنيCRM
- أومنيCRM - إدارة علاقات العملاء، التسجيل الذاتي، الفوترة
انظر: https://docs.omnitouch.com.au/docs/repos/OmniCharge
خدمات الدعم
- خادم الترخيص - الترخيص المركزي
- DNS - حل DNS الشبكة
- المراقبة - بروميثيوس وغرافانا
- APT Cache - مستودع الحزم المحلي (اختياري)
الوثائق
البدء
- مقدمة في نشر أنسبل
- نظرة عامة على كيفية استخدام أنسبل لنشر الشبكات الخلوية
- المفاهيم الرئيسية: الجرد، الأدوار، كتب اللعب، المتغيرات
- سير عمل النشر والفوائد
المفاهيم الأساسية
-
- معمارية الشبكة وتخصيص الشبكات الفرعية
- نموذج نشر بأربعة شبكات فرعية
- إرشادات تخصيص عنوان IP
- التعامل مع IP العامة
- طرق التنفيذ (NICs المنفصلة مقابل VLANs)
-
- تعريف طوبولوجيا الشبكة الخاصة بك
- تكوين وظائف الشبكة ومعلماتها
- فهم تكوين PLMN
- العمل مع قوالب Jinja2
-
- دليل كامل لجميع متغيرات التكوين
- إعدادات مكونات أومنيكور (HSS، PGW، SGW، DRA)
- إعدادات مكونات أومنيكول (TAS، Message، CSCF)
- شرح تكوين وقت التشغيل
- مرجع المتغيرات مع أمثلة
-
- تخصيص النشرات دون تعديل الأدوار
- أسبقية المتغيرات والدمج
- تكامل قالب Jinja2
- أفضل الممارسات لتجاوز التكوين
البنية التحتية
-
- خيارات توزيع الحزم (ذاكرة التخزين المؤقت المحلية مقابل المستودع العام)
- كيفية تسليم الحزم المجمعة مسبقًا
- إعداد النشرات غير المتصلة/المعزولة
- تكوين ذاكرة التخزين المؤقت المحلية APT
-
- إدارة الترخيص المركزية
- نماذج النشر (محلي، سحابي، هجين)
- الميزات التي يت�� التحكم فيها بالترخيص
- التوافر العالي واستكشاف الأخطاء وإصلاحها
- تكوين Netplan - تكوين شبكة المضيف/الواجهة
- نشر Proxmox - توفير VMs على Proxmox
- كتب لعب الخدمة - مرجع لكتب اللعب
services/*.yml - استنساخ أومنيHSS وعمليات العقد - شبكة نشطة-نشطة، إضافة/تغذية عقد HSS، التحقق
- جدار الحماية حسب الدور - نموذج التدفق، تكوين المصدر لكل موقع، أوضاع المراقبة/التطبيق، مصفوفة المنافذ
القابلية للمراقبة
- التسجيل المركزي - خط أنابيب تجميع السجلات
- Syslog جهاز الشبكة - توجيه Syslog لجهاز التوجيه والأجهزة إلى لوكي، تسميات الأجهزة، إعداد RouterOS
- المراقبة والقابلية للمراقبة - بروميثيوس، غرافانا والقياسات
الأدوات الم��اعدة
- كتب لعب الأدوات المساعدة
- فحص الصحة: إنشاء تقارير HTML عن صحة النظام، حالة الخدمة والإصدارات
- المستخدمون المشترك/الإعداد: تكوين النظام الأساسي والمستخدم
- إعادة التشغيل: إعادة تشغيل النظام بشكل لطيف
- مولد خطة IP: توثيق طوبولوجيا الشبكة
- النسخ الاحتياطي/الاستعادة:
services/backup.ymlللنسخ الاحتياطية،util_playbooks/restore_hss.ymlلاستعادة HSS - استكشاف الأخطاء وإصلاحها: استرداد التقاط الحزم، تحديثات MTU
الصورة الكاملة
- نظرة عامة على هندسة النشر
- كيف تتناسب جميع المكونات معًا
- تقسيم الشبكة والأمان
- تبعيات الخدمة وترتيب النشر
- أنماط التوسع والتوافر العالي
البدء السريع
المتطلبات المسبقة
- عقدة تحكم Ubuntu 22.04+ (amd64)
- uv: مطلوب. يدير بيئة Python والاعتمادات
- Python 3.12+ (يمكن لـ uv تثبيت مترجم مناسب تلقائيًا)
- وصول SSH إلى المضيفين المستهدفين
- بيانات اعتماد مناسبة لمستودع APT
- ترخيص أومنيتاتش صالح
التثبيت
-
احصل على المستودع
-
قم بتثبيت uv إذا لم يكن مثبتًا بالفعل. استخدم أي طريقة تناسب عقدة التحكم الخاصة بك. انظر وثائق تثبيت uv. على سبيل المثال:
pipx install uv # عبر pipx
curl -LsSf https://astral.sh/uv/install.sh | sh # مثبت مستقل
- قم بتثبيت أنسبل والاعتمادات. هذا ينشئ بيئة 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
- قم بتثبيت مجموعات أنسبل المطلوبة (من
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/ # كتب لعب أنسبل
│ ├── 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/ # أدوار أنسبل
│ ├── common/ # التكوين الأساسي
│ ├── omnihss/ # نشر أومنيHSS
│ ├── omnisgwc/ # نشر أومنيSGW
│ ├── omnipgwc/ # نشر أومنيPGW
│ ├── applicationserver/ # أومنيTAS (خادم تطبيق IMS)
│ ├── omnimessage/ # نشر أومنيMessage
│ ├── license_server/ # خادم الترخيص
│ ├── monitoring/ # بروميثيوس/غرافيانا
│ └── ... # أدوار مكونات أخرى
├── packaging/ # تكوين بناء .deb (nfpm، build.sh)
├── .github/workflows/build-deb.yml # بناء CI لحزمة omnicore .deb
├── requirements.yml # متطلبات مجموعة أنسبل (ansible-galaxy)
├── pyproject.toml # اعتمادات Python (uv)
└── uv.lock # قفل اعتماد Python المثبت
أومنيكور قابل للتثبيت أيضًا كحزمة 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/
- اتصل بدعم أومنيتاتش للحصول على مساعدة في النشر
الخطوات التالية
- اقرأ مقدمة ��ي نشر أنسبل
- راجع معيار تخطيط IP لتخطيط معمارية شبكتك
- راجع نظرة عامة على هندسة النشر
- أنشئ ملف المضيفين الخاص بك
- خصص باستخدام group_vars حسب الحاجة
- انشر شبكتك!