ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ΅ΡΠ΅Π²ΡΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ Π² ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ΅ Π±Π΅Π· Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄.
- ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΡΠ΅ΡΠ΅Π²ΡΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
- ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΏΠΎΡΡΠ° (up/down)
- ΠΡΠΎΡΠΌΠΎΡΡ MAC Π°Π΄ΡΠ΅ΡΠΎΠ² Π½Π° ΠΏΠΎΡΡΡ
- ΠΡΠΎΡΠΌΠΎΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΡΠ°
- ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π»ΠΎΠ³ΠΎΠ² Π² Elastic Stack
- ΠΡΠΎΡΠΌΠΎΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π° ΠΏΠΎΡΡΡ
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ΡΡΠΈΡ ΠΏΠΎ MAC Π°Π΄ΡΠ΅ΡΡ
- Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ecstasy ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ:
- ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ VLAN / MAC
- ΠΠΎΠΈΡΠΊ ΠΏΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²
- ΠΠΎΠΈΡΠΊ IP/MAC Π°Π΄ΡΠ΅ΡΠ°
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠ°ΡΡ
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π²Π΅Π½Π΄ΠΎΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅. ΠΡΡΠ³ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ, Π½ΠΎ Ρ ΠΈΠΌΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΡΠΈΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌ.
Cisco
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
WS-C4500*
WS-C35*0
WS-C3750*
ME-3*00X
ME-4924
ME-3400
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
Eltex
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
MES3324*
ESR-12VF
LTP-4X(8X)-rev.*
LTP-16N
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
MikroTik
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
RouterOS v6.* (v7.*)
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
Huawei
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
S2403TP
S2326TP
CX600-X8
CE6865
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
Huawei DSL (GPON)
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
MA5600T
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
Iskratel DSL
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
MPC8560
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
D-Link
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
DES-3200-*
DES-3028
DES-3526
DGS-3420
DGS-12**
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
Extreme
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
X460-*
X670-*
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
ZTE
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
ZXR10 2928E
2936-FI
2952E
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
Q-Tech
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
QSW-3450-*
QSW-8200-*
- ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ:
- Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ansible.
- ΠΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡ
ansible
. - ΠΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΡΠ°ΠΉΠ»Π΅
inventory/hosts
IP Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. - Π ΠΏΠ°ΠΏΠΊΠ΅
roles
Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΠ°ΠΉΠ»Ρ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
ecstasy-main.yaml
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°;
# ------- DIRS --------
root_folder: "/home/ecstasy" # ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
# ------ PYTHON -------
python_version: 3.11
# -------- WEB --------
django_superuser_username: superusername
django_superuser_password: password
gunicorn_socket: 127.0.0.1:8000
device_connector_socket: 127.0.0.1:9999
celery_concurrent: 2
celery_worker_name: worker1
flower_address: 0.0.0.0
flower_port: 5555
flower_username: monitoring
flower_password: flower-password
nginx_http_listen_port: 80
enable_https: no
# ΠΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ HTTPS Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ
# ------- REDIS --------
redis_broker_db: 0
redis_cache_db: 1
redis_password: redis-password
ecstasy-mariadb.yaml
- ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ;
mysql_root_password: root-password
# ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½
mariadb_user: ecstasy
mariadb_password: ecstasy-password
# ΠΠ°Π·Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π°
mariadb_database: ecstasy
ecstasy-services.yaml
- Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
# ΠΠ°Π·Π²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²
ECSTASY_SERVICE_NAME: ecstasy
CELERY_SERVICE_NAME: ecstasy-celery
DEVICE_CONNECTOR_SERVICE_NAME: ecstasy-device-connector
FLOWER_SERVICE_NAME: ecstasy-flower
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ecstasy.
ALLOWED_HOSTS: "*"
DJANGO_DEBUG: 0
CONFIG_STORAGE_DIR: # Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ
DJANGO_SECRET_KEY:
CONTACT_NAME: # ΠΈΠΌΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ
CONTACT_EMAIL: # ΠΏΠΎΡΡΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ
CACHE_KEY_PREFIX: ecstasy_prod
DEVICE_CONNECTOR_TOKEN: # ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ device connector
DEVICE_CONNECTOR_DEFAULT_POOL_SIZE: 2 # ΠΊΠΎΠ»-Π²ΠΎ ΡΠ΅ΡΡΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
- ΠΠ°Π»Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ansible:
ansible-playbook -K -i inventory/hosts playbooks/deploy-ecstasy.yaml
- ΠΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠ°ΡΠΎΠ»Ρ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π΅Π³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
- Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ
- ΠΠ°Π³ΡΡΠ·ΠΊΠ° CPU, RAM, Flash ΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°
- ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ (Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· Zabbix)
- Π‘ΡΡΠ»ΠΊΠ° Π² Zabbix
- Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠ°ΡΡΡ Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ
- ΠΠΎΠ³ΠΈ Π² Elastic Search
- ΠΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ
- ΠΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»Ρ
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ
ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π΅Π³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ: ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΡΡΠ΅ΡΡΠΈΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ, Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ°Π±Π΅Π»Ρ, ΡΠΏΠΈΡΠΎΠΊ VAC Π°Π΄ΡΠ΅ΡΠΎΠ²
ΠΠ»Ρ ΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠ² GPON OLT Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ (ΡΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅)
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΊΠ°ΡΡΡ:
- ΠΠ· ΡΡΡΠ»ΠΊΠΈ Π½Π° Π²Π½Π΅ΡΠ½ΡΡ ΠΊΠ°ΡΡΡ;
- ΠΠ· HTML ΡΠ°ΠΉΠ»Π° ΠΊΠ°ΡΡΡ;
- ΠΠ· ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠ»ΠΎΠ΅Π². Π‘Π»ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½:
- ΠΠ· Π³ΡΡΠΏΠΏΡ Π² Zabbix (Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠ·Π»Ρ ΡΠ΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ);
- ΠΠ· ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠΌΠ°ΡΠ° GEOJSON.
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΊΠ°ΡΡΡ ΡΠΎ ΡΠ»ΠΎΡΠΌΠΈ ΠΈΠ· Zabbix Π³ΡΡΠΏΠΏΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Zabbix.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ VLAN ΠΏΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΡΡΡΠ° MAC Π°Π΄ΡΠ΅ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ.
python manage.py graph_models -a --rankdir LR --dot -g -o ./docs/models.dot
dot -Tsvg ./docs/models.dot -o ./docs/models.svg