انتقل إلى المحتوى الرئيسي

خدمات شبكة أومنيتاتش - نظام نشر أنسبل

نظرة عامة​

تحتوي هذه المستودع على كتب لعب أنسبل، وأدوار، وتكوين لنشر حلول الشبكة الخلوية الكاملة (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 - مستودع الحزم المحلي (اختياري)

الوثائق​

البدء​

  1. مقدمة في نشر أنسبل
    • نظرة عامة على كيفية استخدام أنسبل لنشر الشبكات الخلوية
    • المفاهيم الرئيسية: الجرد، الأدوار، كتب اللعب، المتغيرات
    • سير عمل النشر والفوائد

المفاهيم الأساسية​

  1. معيار تخطيط IP

    • معمارية الشبكة وتخصيص الشبكات الفرعية
    • نموذج نشر بأربعة شبكات فرعية
    • إرشادات تخصيص عنوان IP
    • التعامل مع IP العامة
    • طرق التنفيذ (NICs المنفصلة مقابل VLANs)
  2. تكوين ملف المضيفين

    • تعريف طوبولوجيا الشبكة الخاصة بك
    • تكوين وظائف الشبكة ومعلماتها
    • فهم تكوين PLMN
    • العمل مع قوالب Jinja2
  3. مرجع التكوين

    • دليل كامل لجميع متغيرات التكوين
    • إعدادات مكونات أومنيكور (HSS، PGW، SGW، DRA)
    • إعدادات مكونات أومنيكول (TAS، Message، CSCF)
    • شرح تكوين وقت التشغيل
    • مرجع المتغيرات مع أمثلة
  4. متغيرات المجموعة والتكوين

    • تخصيص النشرات دون تعديل الأدوار
    • أسبقية المتغيرات والدمج
    • تكامل قالب Jinja2
    • أفضل الممارسات لتجاوز التكوين

البنية التحتية​

  1. نظام APT Cache

    • خيارات توزيع الحزم (ذاكرة التخزين المؤقت المحلية مقابل المستودع العام)
    • كيفية تسليم الحزم المجمعة مسبقًا
    • إعداد النشرات غير المتصلة/المعزولة
    • تكوين ذاكرة التخزين المؤقت المحلية APT
  2. خادم الترخيص

    • إدارة الترخيص المركزية
    • نماذج النشر (محلي، سحابي، هجين)
    • الميزات التي يت�� التحكم فيها بالترخيص
    • التوافر العالي واستكشاف الأخطاء وإصلاحها

القابلية للمراقبة​

الأدوات الم��اعدة​

  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
  • ترخيص أومنيتاتش صالح

التثبيت​

  1. احصل على المستودع

  2. قم بتثبيت uv إذا لم يكن مثبتًا بالفعل. استخدم أي طريقة تناسب عقدة التحكم الخاصة بك. انظر وثائق تثبيت uv. على سبيل المثال:

pipx install uv                                    # عبر pipx
curl -LsSf https://astral.sh/uv/install.sh | sh # مثبت مستقل
  1. قم بتثبيت أنسبل والاعتمادات. هذا ينشئ بيئة 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. قم بتثبيت مجموعات أنسبل المطلوبة (من 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/ (services/hosts هو رابط رمزي له). انسخ مثالًا موجودًا كنقطة انطلاق:
cp hosts/Omnicore_Omnitouch/host_files/yktn_Nick2.yml hosts/YourCustomer/host_files/production.yml

انظر: تكوين ملف المضيفين

  1. خصص باستخدام group_vars (اختياري):
mkdir -p hosts/YourCustomer/group_vars
# أنشئ ملفات التخصيص حسب الحاجة

انظر: تكوين متغيرات المجموعة

  1. قم بتكوين الوصول إلى مستودع 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

  1. قم بتكوين خادم الترخيص:
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)
  • هجين (مزيج من المحلي والسحابي)
  • معزول (غير متصل تمامًا)

الحصول على المساعدة​

  1. تحقق من الوثائق للحصول على أدلة مفصلة
  2. راجع ملفات المضيفين النموذجية كمرجع
  3. استشر الوثائق الخاصة بالمنتج على https://docs.omnitouch.com.au/
  4. اتصل بدعم أومنيتاتش للحصول على مساعدة في النشر

الخطوات التالية​

  1. اقرأ مقدمة ��ي نشر أنسبل
  2. راجع معيار تخطيط IP لتخطيط معمارية شبكتك
  3. راجع نظرة عامة على هندسة النشر
  4. أنشئ ملف المضيفين الخاص بك
  5. خصص باستخدام group_vars حسب الحاجة
  6. انشر شبكتك!