Skip to content

ইয়াংস্যুটের ব্যবহার

ইয়াংসুইট: নেটওয়ার্ক অটোমেশনের রেসিপি বই

ইয়াং (YANG) হলো নেটওয়ার্ক কনফিগারেশনের একটা ভাষা। এটা তৈরি করেছে IETF (ইন্টারনেট ইঞ্জিনিয়ারিং টাস্ক ফোর্স)। আপনি যদি রান্নার কথা ভাবেন, তাহলে ইয়াংকে ভাবতে পারেন একটা রেসিপি বইয়ের মতো। যেমন রেসিপি বইয়ে থাকে কি কি উপকরণ লাগবে, কিভাবে রান্না করতে হবে - ঠিক তেমনি ইয়াং-এ থাকে নেটওয়ার্কের সব নিয়ম-কানুন। আমরা বলতে পারি, কপি-পেস্ট বই।

সিসকো, জুনিপার, হুয়াওয়ে - সব বড় নেটওয়ার্ক কোম্পানি ইয়াং ব্যবহার করে। কারণ এটা একটা স্ট্যান্ডার্ড ভাষা। অনেকটা ইংরেজির মতো - সবাই বোঝে, সবাই ব্যবহার করে।

ইয়াংসুইট কেন ব্যবহার করব?

ইয়াংসুইট হলো একটা ওয়েব-ভিত্তিক টুল যা নেটওয়ার্ক ইঞ্জিনিয়ারদের জীবন সহজ করে দেয়। এটাতে তৈরি করেছে সিসকো, কিন্তু সব জায়গায় ব্যবহার করা যায়। আমি এটা দিয়ে কপি পেস্ট, কোড জেনারেট করি, অনেক সময় পাইথনের ভেতরে কি লেখা লাগবে সেটার টেম্পলেট এখান থেকে নেই। এটা দিয়ে আপনি:

  • নেটওয়ার্কের যেকোনো ডিভাইস কনট্রোল এবং কানেকশন করার ধারণা পাবেন,
  • কনফিগারেশন সরাসরি দেখতে এবং বদলাতে পারবেন
  • অটোমেশন স্ক্রিপ্ট লিখতে পারবেন, অন দ্য ফ্লাই
  • প্রতিটা স্টেজে পাইথন কোড জেনারেট করতে পারবেন (আমার আসল কাজ)

ইয়াংসুইট সেটআপ করার সহজ উপায়

প্রথম ধাপ: ইনস্টলেশন

# প্রথমে pip ইনস্টল করুন
python -m pip install --upgrade pip

# তারপর ইয়াংসুইট ইনস্টল করুন
pip install yangsuite

দ্বিতীয় ধাপ: চালু করা

# ইয়াংসুইট সার্ভার চালু করুন
yangsuite

তৃতীয় ধাপ: ব্রাউজারে দেখা

আপনার ব্রাউজারে http://localhost:8480 লিখলেই দেখতে পাবেন ইয়াংসুইটের সুন্দর ইন্টারফেস।

ইয়াংসুইট দিয়ে কি কাজ করবো?

প্রচুর স্ক্রিনশট লাগবে

আমি ক্লিক, ক্লিক টাইপ কাজ পছন্দ করি না। তবে, যারা প্রোগ্রামিংয়ে কাজ শুরু করেননি, তাদের জন্য এটা একটা ভালো এক্সারসাইজ। বইয়ের পৃষ্ঠার সীমাবদ্ধতার কথা চিন্তা করে স্ক্রিনশট দিচ্ছি না, তবে স্টেপ বাই স্টেপ পাবেন এই https://learnuccollab.com/2023/02/10/restconf-yang-how-to-use-it-for-network-management/ লিংকে। ধারণা পাবার জন্য। একবার দেখলেই ব্যাপারটা বুঝে যাবেন।

১. ডিভাইস প্রোফাইল তৈরি

এটা খুবই গুরুত্বপূর্ণ ধাপ। এখানে আমরা কি কি সেট করবো?

  • ডিভাইসের আইপি অ্যাড্রেস
  • ইউজারনেম এবং পাসওয়ার্ড
  • প্রোটোকল সেটিংস (NETCONF/RESTCONF)

২. রিপোজিটরি ম্যানেজমেন্ট

এটা আমাদের লাইব্রেরি। এখানে রাখি:

  • ইয়াং মডেলগুলোকে একটার পরে আরেকটা
  • কনফিগারেশন টেমপ্লেট
  • কাস্টম স্ক্রিপ্ট, দরকার মতো

৩. ডেটাসেট ব্যবহার

এটা আমাদের কাজের জায়গা। এখানে আমরা:

  • নেটওয়ার্ক দেখি সেন্ট্রাল লোকেশন থেকে
  • কনফিগারেশন করি, আপডেট দেই
  • আটোমেশন চালাই

একটা বাস্তব উদাহরণ

ধরুন আপনি একটা সুইচের সব পোর্টের অবস্থা জানতে চান। ইয়াংসুইট দিয়ে পাইথন স্ক্রিপ্ট তৈরি করা খুব সহজ, এখানে রেস্টকনফ ব্যবহার করছি:

import requests
import json
from requests.auth import HTTPBasicAuth

def check_switch_ports():
    # সুইচের সাথে কানেকশন সেটআপ
    url = "https://switch.example.com/restconf/data/interfaces"
    auth = HTTPBasicAuth('admin', 'password')
    headers = {
        'Accept': 'application/yang-data+json'
    }

    try:
        # ডেটা নিয়ে আসি
        response = requests.get(
            url,
            auth=auth,
            headers=headers,
            verify=False
        )

        # ফলাফল দেখি
        if response.status_code == 200:
            ports = response.json()
            print("সব পোর্টের অবস্থা:")
            for port in ports['interface']:
                print(f"পোর্ট: {port['name']}, স্টেটাস: {port['status']}")
        else:
            print(f"এরর হয়েছে! স্টেটাস কোড: {response.status_code}")

    except Exception as e:
        print(f"কানেকশন এরর: {str(e)}")

# ফাংশন চালাই
check_switch_ports()

ইয়াংসুইটের অ্যাডভান্সড ব্যবহার

১. টেমপ্লেট দিয়ে কাজ করা

ইয়াংসুইট আপনাকে টেমপ্লেট ব্যবহার করার সুযোগ দেয়। এটা অনেকটা রান্নার মাপের মতো। একবার টেমপ্লেট বানিয়ে রাখলে বারবার ব্যবহার করা যায়।

# একটা সিম্পল টেমপ্লেট
interface_template = {
    "interface": {
        "name": "GigabitEthernet0/1",
        "description": "কোর সুইচের সাথে কানেকশন",
        "enabled": True,
        "speed": "1000"
    }
}

২. একসাথে অনেক ডিভাইস কনট্রোল

মনে করুন আপনার অফিসে ১০০টা সুইচ আছে। সবগুলোতে একই কনফিগারেশন করতে হবে। ইয়াংসুইট দিয়ে এটা খুব সহজ:

def configure_all_switches(switch_list, config):
    for switch in switch_list:
        try:
            print(f"{switch} কনফিগার করা হচ্ছে...")
            # কনফিগারেশন পাঠাই
            response = push_config(switch, config)
            print(f"{switch} সফলভাবে কনফিগার করা হয়েছে!")
        except:
            print(f"{switch} এ সমস্যা হয়েছে")

৩. স্মার্ট ভ্যালিডেশন

ইয়াংসুইট আপনার কনফিগারেশন আগে থেকেই চেক করে। কোনো ভুল থাকলে বলে দেয়। এটা অনেকটা স্পেলচেকারের মতো:

def validate_config(config):
    # স্কিমা চেক করি
    if not is_valid_schema(config):
        print("কনফিগারেশন ভ্যালিড নয়!")
        return False

    # ভ্যালু চেক করি
    if not are_values_valid(config):
        print("কনফিগারেশন ভ্যালুগুলো ঠিক নেই!")
        return False

    return True

৪. অটোমেটিক ব্যাকআপ

নেটওয়ার্কে কাজ করার আগে ব্যাকআপ নেওয়া খুব জরুরি। ইয়াংসুইট এটা অটোমেটিক করে দিতে পারে:

def take_backup():
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    backup_file = f"backup_{timestamp}.json"

    # কনফিগারেশন সেভ করি
    with open(backup_file, 'w') as f:
        json.dump(current_config, f)

    print(f"ব্যাকআপ সফলভাবে নেওয়া হয়েছে: {backup_file}")

৫. মনিটরিং এবং অ্যালার্ট

ইয়াংসুইট দিয়ে আপনি নেটওয়ার্ক মনিটর করতে পারেন। কোনো সমস্যা হলে সাথে সাথে জানতে পারবেন:

def monitor_network():
    while True:
        status = check_network_health()
        if status['has_issues']:
            send_alert(f"সমস্যা পাওয়া গেছে: {status['issues']}")
        time.sleep(300)  # ৫ মিনিট পর পর চেক করি

৬. নেটওয়ার্ক রিপোর্টিং

নেটওয়ার্কের অবস্থা নিয়ে সুন্দর রিপোর্ট বানাতে পারেন:

def generate_report():
    report = {
        "date": datetime.now(),
        "network_health": check_health(),
        "active_devices": get_active_devices(),
        "issues": get_current_issues(),
        "performance": get_performance_metrics()
    }

    # PDF বানাই
    create_pdf_report(report)

এভাবে ইয়াংসুইট ব্যবহার করে আপনি নেটওয়ার্কের সব কাজ অটোমেট করতে পারেন। এটা আপনার সময় বাঁচাবে, ভুল কমাবে, আর কাজকে করবে আরও সহজ।