تكوين ملف المضيفين
نظرة عامة
ملف المضيفين (المعروف أيضًا بملف الجرد) هو الوثيقة المركزية للتكوين التي تحدد نشر شبكة الهاتف المحمول بالكامل. يحدد:
- وظائف الشبكة التي يجب نشرها
- أماكن تشغيلها (عناوين IP، شرائح الشبكة)
- كيفية تكوينها (معلمات محددة للخدمة)
- إعدادات خاصة بالعميل (PLMN، بيانات الاعتماد، الميزات)
موقع الملف
تُنظم ملفات المضيفين حسب العميل والبيئة:
services/hosts/
└── Customer_Name/
└── host_files/
├── production.yml
├── staging.yml
└── lab.yml
مثال على هيكل ملف المضيفين
إليك مثال مبسط يوضح الأقسام الرئيسية:
# مكونات EPC
mme:
hosts:
customer-mme01:
ansible_host: 10.10.1.15
gateway: 10.10.1.1
host_vm_network: "vmbr1"
mme_code: 1
network_name_short: Customer
tac_list: [600, 601, 602]
sgw:
hosts:
customer-sgw01:
ansible_host: 10.10.1.25
gateway: 10.10.1.1
cdrs_enabled: true
pgwc:
hosts:
customer-pgw01:
ansible_host: 10.10.1.21
gateway: 10.10.1.1
ip_pools:
- '100.64.16.0/24'
# مكونات IMS
pcscf:
hosts:
customer-pcscf01:
ansible_host: 10.10.4.165
# خدمات الدعم
license_server:
hosts:
customer-licenseserver:
ansible_host: 10.10.2.150
# المتغيرات العالمية
all:
vars:
ansible_connection: ssh
ansible_password: password
customer_name_short: customer
plmn_id:
mcc: '001'
mnc: '01'
معلمات المضيفين الشائعة
تكوين الشبكة
عادةً ما يتضمن كل مضيف:
pcscf:
hosts:
customer-pcscf01:
ansible_host: 10.10.1.15 # عنوان IP للوصول عبر SSH
gateway: 10.10.1.1 # البوابة الافتراضية
host_vm_network: "vmbr1" # اسم NIC للاستخدام على Hypervisor
ملاحظة: للحصول على إرشادات حول تخطيط عنوان IP واستراتيجيات تقسيم الشبكة، راجع معيار تخطيط IP الذي يحدد بنية الشبكة الموصى بها ذات الأربعة شرائح لنشر OmniCore.
مستخدمو Proxmox: تحدد معلمة host_vm_network الجسر الذي يجب استخدامه. راجع نشر Proxmox VM/LXC للتوفير التلقائي.
تخصيص موارد VM
بالنسبة للخدمات التي تحتاج إلى موارد محددة:
num_cpus: 4 # نوى المعالج
memory_mb: 8192 # الذاكرة العشوائية بالميغابايت
proxmoxLxcDiskSizeGb: 50 # حجم القرص بالجيجابايت
معلمات محددة للخدمة
لكل وظيفة شبكة معلماتها الخاصة. أمثلة:
MME:
mme_code: 1 # معرف MME (1-255)
mme_gid: 1 # معرف مجموعة MME
network_name_short: Customer # اسم الشبكة (المعروض على الهواتف)
network_name_long: Customer Network
tac_list: [600, 601, 602] # رموز منطقة التتبع
PGW:
ip_pools: # تجمعات IP للمشتركين
- '100.64.16.0/24'
- '100.64.17.0/24'
combined_CP_UP: false # فصل التحكم / خطة المستخدم
للحصو�� على شرح مفصل لما يتحكم فيه كل متغير، راجع: مرجع التكوين
خادم التطبيق:
online_charging_enabled: true # تمكين تكامل OCS
tas_branch: "main" # فرع البرمجيات للنشر
gateways_folder: "gateways_prod" # تكوين بوابة SIP
قسم المتغيرات العالمية
يحتوي قسم all:vars على إعدادات تنطبق على النشر بالكامل:
all:
vars:
# المصادقة
ansible_connection: ssh
ansible_password: password
ansible_become_password: password
# هوية العميل
customer_name_short: customer
customer_legal_name: "Customer Inc."
site_name: "Chicago DC1"
region: US
# معرف PLMN (شبكة الهاتف المحمول)
plmn_id:
mcc: '001' # رمز الدولة المحمول
mnc: '01' # رمز شبكة الهاتف المحمول
mnc_longform: '001' # MNC مع صفر مضاف
# أسماء الشبكات
network_name_short: Customer
network_name_long: Customer Network
# مستودع APT
# ملاحظة: إذا تم تعريف مجموعة apt_cache_servers مع ��لمضيفين،
# فإن use_apt_cache تكون افتراضية على true و apt_repo.apt_server
# تكون افتراضية على عنوان IP لأحد خوادم التخزين المؤقت تلقائيًا
apt_repo:
apt_server: "10.254.10.223"
apt_repo_username: "customer"
apt_repo_password: "secure-password"
use_apt_cache: false
# المنطقة الزمنية
TZ: America/Chicago
فهم مجموعات المضيفين
تنظم Ansible المضيفين في مجموعات تتوافق مع الأدوار:
عند تشغيل كتاب اللعب المستهدف mme، فإنه ينطبق على جميع المضيفين في قسم mme:hosts:.
التكوين باستخدام قوالب Jinja2
تستخدم Ansible قوالب Jinja2 لإنشاء ملفات التكوين من المتغيرات المحددة في ملف المضيفين وgroup_vars.
كيفية عمل Jinja2
مثال على استخدام القالب
يحدد ملف المضيفين:
plmn_id:
mcc: '001'
mnc: '01'
customer_name_short: acme
قالب Jinja2 (في الدور):
# mme_config.yml.j2
network:
plmn:
mcc: {{ plmn_id.mcc }}
mnc: {{ plmn_id.mnc }}
operator: {{ customer_name_short }}
realm: epc.mnc{{ plmn_id.mnc_longform }}.mcc{{ plmn_id.mcc }}.3gppnetwork.org
ملف التكوين الناتج:
network:
plmn:
mcc: 001
mnc: 01
operator: acme
realm: epc.mnc001.mcc001.3gppnetwork.org
أنماط Jinja2 الشائعة
الوصول إلى المتغيرات المتداخلة:
{{ plmn_id.mcc }}
{{ apt_repo.apt_server }}
المنطق الشرطي:
{% if online_charging_enabled %}
charging:
enabled: true
ocs_ip: {{ ocs_ip }}
{% endif %}
الحلقات:
tracking_areas:
{% for tac in tac_list %}
- {{ tac }}
{% endfor %}
التنسيق:
# إضافة صفر إلى 3 أرقام
mnc{{ '%03d' | format(plmn_id.mnc|int) }}
تجاوز المتغيرات باستخدام group_vars
بينما يحدد ملف المضيفين البنية التحتية وإعدادات المضيف المحددة، يمكن أن تتجاوز group_vars القيم الافتراضية لمجموعات المضيفين.
راجع: تكوين متغيرات المجموعة
مثال كامل على ملف المضيفين
إليك مثال أكثر اكتمالًا (مع بيانات حساسة مخفية):
# EPC Core
mme:
hosts:
customer-mme01:
ansible_host: 10.10.1.15
gateway: 10.10.1.1
host_vm_network: "vmbr1"
mme_code: 1
mme_gid: 1
network_name_short: Customer
network_name_long: Customer Network
tac_list: [600, 601, 602, 603]
omnimme:
sgw_selection_method: "random_peer"
pgw_selection_method: "random_peer"
sgw:
hosts:
customer-sgw01:
ansible_host: 10.10.1.25
gateway: 10.10.1.1
host_vm_network: "vmbr1"
cdrs_enabled: true
pgwc:
hosts:
customer-pgw01:
ansible_host: 10.10.1.21
gateway: 10.10.1.1
host_vm_network: "vmbr1"
ip_pools:
- '100.64.16.0/24'
combined_CP_UP: false
hss:
hosts:
customer-hss01:
ansible_host: 10.10.2.140
gateway: 10.10.2.1
host_vm_network: "vmbr2"
# IMS Core
pcscf:
hosts:
customer-pcscf01:
ansible_host: 10.10.4.165
gateway: 10.10.4.1
host_vm_network: "vmbr4"
icscf:
hosts:
customer-icscf01:
ansible_host: 10.10.3.55
gateway: 10.10.3.1
host_vm_network: "vmbr3"
scscf:
hosts:
customer-scscf01:
ansible_host: 10.10.3.45
gateway: 10.10.3.1
host_vm_network: "vmbr3"
applicationserver:
hosts:
customer-as01:
ansible_host: 10.10.3.60
gateway: 10.10.3.1
host_vm_network: "vmbr3"
online_charging_enabled: false
gateways_folder: "gateways_prod"
# خدمات الدعم
license_server:
hosts:
customer-licenseserver:
ansible_host: 10.10.2.150
gateway: 10.10.2.1
host_vm_network: "vmbr2"
monitoring:
hosts:
customer-oam01:
ansible_host: 10.10.2.135
gateway: 10.10.2.1
host_vm_network: "vmbr2"
num_cpus: 4
memory_mb: 8192
dns:
hosts:
customer-dns01:
ansible_host: 10.10.2.177
gateway: 10.10.2.1
host_vm_network: "vmbr2"
# المتغيرات العالمية
all:
vars:
ansible_connection: ssh
ansible_password: password
ansible_become_password: password
customer_name_short: customer
customer_legal_name: "Customer Network Inc."
site_name: "Primary DC"
region: US
TZ: America/Chicago
# تكوين PLMN
plmn_id:
mcc: '001'
mnc: '01'
mnc_longform: '001'
diameter_realm: epc.mnc{{ plmn_id.mnc_longform }}.mcc{{ plmn_id.mcc }}.3gppnetwork.org
# أسماء الشبكات
network_name_short: Customer
network_name_long: Customer Network
tac_list: [600, 601]
# تكوين APT
apt_repo:
apt_server: "10.254.10.223"
apt_repo_username: "customer"
apt_repo_password: "secure-password"
use_apt_cache: false
# تكوين الشحن
charging:
data:
online_charging:
enabled: false
voice:
online_charging:
enabled: true
domain: "mnc{{ plmn_id.mnc_longform }}.mcc{{ plmn_id.mcc }}.3gppnetwork.org"
# قواعد جدار الحماية
firewall:
allowed_ssh_subnets:
- '10.0.0.0/8'
- '192.168.0.0/16'
allowed_ue_voice_subnets:
- '10.0.0.0/8'
allowed_signaling_subnets:
- '10.0.0.0/8'
# تكوين Hypervisor (مثال Proxmox)
proxmoxServers:
customer-prxmx01:
proxmoxServerAddress: 10.10.0.100
proxmoxServerPort: 8006
proxmoxApiTokenName: Customer
proxmoxApiTokenSecret: "token-secret"
proxmoxTemplateName: ubuntu-24.04-cloud-init-template
proxmoxNodeName: pve01
راجع نشر Proxmox VM/LXC للحصول على تفاصيل إعداد وتكوين Proxmox الكاملة.
مراجع الوثائق الخاصة بالمنتج
للحصول على تكوين مفصل لكل مكون، راجع الوثائق الرسمية للمنتج:
مكونات OmniCore:
- وثائق OmniCore: https://docs.omnitouch.com.au/docs/repos/OmniCore
- OmniHSS - خادم المشتركين المنزلي
- OmniSGW - بوابة الخدمة (خطة التحكم)
- OmniPGW - بوابة الحزمة (خطة التحكم)
- OmniUPF - وظيفة خطة المستخدم
- OmniDRA - وكيل توجيه Diameter
- OmniTWAG - بوابة الوصول WLAN الموثوقة
مكونات OmniCall:
- وثائق OmniCall: https://docs.omnitouch.com.au/docs/repos/OmniCall
- OmniTAS - خادم تطبيق IMS (VoLTE/VoNR)
- OmniCall CSCF - وظائف التحكم في جلسات المكالمات
- OmniMessage - م��كز الرسائل القصيرة
- OmniMessage SMPP - دعم بروتوكول SMPP
- OmniSS7 - كومة الإشارات SS7
- VisualVoicemail - البريد الصوتي
OmniCharge/OmniCRM:
- وثائق OmniCharge: https://docs.omnitouch.com.au/docs/repos/OmniCharge
الوثائق ذات الصلة
- مقدمة في نشر Ansible - عملية النشر العامة
- مرجع التكوين - دليل كامل لجميع متغيرات التكوين
- تكوين متغيرات المجموعة - تجاوز التكوينات الافتراضية
- معيار تخطيط IP - إرشادات بنية الشبكة وتخصيص IP
- تكوين Netplan - IP ثانوي وتكوين شبكة متقدم
- نظام تخزين APT - توزيع الحزم
- خادم الترخيص - إدارة التراخيص
- نظرة عامة على بنية النشر - عرض كامل للنظام
الخطوات التالية
- أنشئ ملف المضيفين الخاص بك بناءً على هذا القالب
- حدد PLMN وهويتك الشبكية
- قم بتكوين الوصول إلى مستودع APT
- إعداد خادم الترخيص
- تخصيص باستخدام group_vars حسب الحاجة
- نشر باستخدام كتب لعب Ansible