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

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

الوثائق

البدء

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

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

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

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

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

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

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

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

  1. نظام APT Cache

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

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

الرؤية

الأدوات المساعدة

  1. كتب تشغيل الأدوات المساعدة
    • Health Check: إنشاء تقارير HTML عن صحة النظام، حالة الخدمة والإصدارات
    • Common/Setup Users: تكوين النظام الأساسي والمستخدمين
    • Reboot: إعادة تشغيل النظام بشكل لطيف
    • IP Plan Generator: توثيق طوبولوجيا الشبكة
    • Backup/Restore: services/backup.yml للنسخ الاحتياطي، util_playbooks/restore_hss.yml لاستعادة HSS
    • Troubleshooting: استرجاع التقاط الحزم، تحديثات 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/ (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/ # كتب تشغيل 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)
  • هجين (مزيج من المحلي والسحابي)
  • مفصول (غير متصل تمامًا)

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

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

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

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