রেস্ট এপিআই নিয়ে কাজ
পোস্টম্যানে সিসকো স্যান্ডবক্স টেস্ট¶
নেটওয়ার্ক অটোমেশন শুরু করার আগে আমাদের বুঝতে হবে কিভাবে REST API কাজ করে। REST API হল একটা পদ্ধতি যেখানে আমরা HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) পাঠিয়ে নেটওয়ার্ক ডিভাইস কন্ট্রোল করি। পোস্টম্যান হল একটা টুল যা দিয়ে আমরা এই API টেস্ট করতে পারি।
বেসিক সেটআপ¶
শুরুতেই একটা নতুন কালেকশন বানাতে হবে। কালেকশন হল অনেকগুলো রিকোয়েস্টের গ্রুপ। আমরা "Network-Automation" নামে একটা কালেকশন বানাব।
অথেনটিকেশন সেটআপ¶
প্রতিটা রিকোয়েস্টের জন্য আমাদের Basic Auth ব্যবহার করতে হবে। এটা অনেকটা রাউটারে লগইন করার মত। ইউজারনেম হবে 'admin' এবং পাসওয়ার্ড হবে 'C1sco12345'। SSL সার্টিফিকেট ভেরিফিকেশন অফ করে রাখতে হবে।
প্রথমে GET দিয়ে চেক করা¶
কোন কিছু চেঞ্জ করার আগে আমরা প্রথমে GET রিকোয়েস্ট দিয়ে চেক করে নিব বর্তমান কনফিগারেশন। এটা করার জন্য:
- নতুন রিকোয়েস্ট বানান "Check-Current-Config" নামে
- মেথড GET সিলেক্ট করুন
- হেডার সেট করুন:
Accept এবং Content-Type হেডারের ব্যবহার খুবই গুরুত্বপূর্ণ। চলুন বিস্তারিত বুঝি:
Accept হেডার¶
- এটি সার্ভারকে জানায় আমরা কি ফরম্যাটে ডেটা পেতে চাই
application/yang-data+json
মানে আমরা JSON ফরম্যাটে YANG মডেল ডেটা চাইছি- যদি Accept হেডার না দেই, সার্ভার ডিফল্ট ফরম্যাটে (যেমন XML) ডেটা পাঠাতে পারে
- এতে আমাদের পারসিং করা কঠিন হয়ে যেতে পারে
উদাহরণ Accept হেডার ছাড়া রেসপন্স:
<native xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native">
<hostname>Router1</hostname>
</native>
Accept হেডার সহ রেসপন্স:
Content-Type হেডার¶
- এটি সার্ভারকে জানায় আমরা কি ফরম্যাটে ডেটা পাঠাচ্ছি
application/yang-data+json
মানে আমরা JSON ফরম্যাটে YANG মডেল ডেটা পাঠাচ্ছি- যদি Content-Type ভুল হয়, সার্ভার আমাদের রিকোয়েস্ট বুঝতে পারবে না
- এতে "415 Unsupported Media Type" এরর আসতে পারে
হোস্টনেম চেক¶
প্রথমে হোস্টনেম চেক করি:
ইন্টারফেস চেক¶
ইন্টারফেস দেখার জন্য:
রাউট চেক¶
স্ট্যাটিক রাউট দেখার জন্য:
এরপর কনফিগারেশন চেঞ্জ করি¶
GET দিয়ে বর্তমান কনফিগ দেখে নেওয়ার পর আমরা PUT রিকোয়েস্ট দিয়ে চেঞ্জ করব। এখানে একটা গুরুত্বপূর্ণ বিষয় হল JSON ফরম্যাট। JSON এ কোন ভুল থাকলে রিকোয়েস্ট ফেইল হবে।
হোস্টনেম চেঞ্জ¶
হোস্টনেম চেঞ্জ করার জন্য:
PUT https://devnetsandboxiosxe.cisco.com:443/restconf/data/Cisco-IOS-XE-native:native/hostname
বডি:
{
"Cisco-IOS-XE-native:hostname": "Link3_Test"
}
লুপব্যাক ইন্টারফেস যোগ/ডিলিট¶
লুপব্যাক ইন্টারফেস যোগ/ডিলিট করার জন্য:
PUT https://devnetsandboxiosxe.cisco.com:443/restconf/data/ietf-interfaces:interfaces
বডি:
{
"ietf-interfaces:interface": {
"name": "Loopback152",
"description": "Link3 loopback interface",
"type": "iana-if-type:softwareLoopback",
"enabled": true,
"ietf-ip:ipv4": {
"address": [
{
"ip": "10.1.11.8",
"netmask": "255.255.255.0"
}
]
}
}
}
অথবা: DELETE https://devnetsandboxiosxe.cisco.com:443/restconf/data/ietf-interfaces:interface=Loopback152
রাউটিং কনফিগারেশন¶
রাউটিং কনফিগারেশন করার আগে আমাদের বুঝতে হবে কি কি রাউট আছে এবং কি কি নতুন রাউট যোগ করব। RESTCONF এর মাধ্যমে আমরা স্ট্যাটিক রাউট যোগ করতে পারি। প্রথমেই দেখে নিব বর্তমানে কি কি রাউট আছে।
বর্তমান রাউটিং টেবিল চেক¶
প্রথমে GET রিকোয়েস্ট দিয়ে দেখে নিব কি কি রাউট আছে:
স্ট্যাটিক রাউট যোগ করা¶
এখন আমরা একটা ডিফল্ট রাউট যোগ করব। এটা হবে 0.0.0.0/0 যা সব ট্র্যাফিক নেক্সট-হপ আইপি এর দিকে পাঠাবে:
PUT https://devnetsandboxiosxe.cisco.com:443/restconf/data/Cisco-IOS-XE-native:native/ip/route
বডি:
{
"Cisco-IOS-XE-native:route": {
"ip-route-interface-forwarding-list": [
{
"prefix": "0.0.0.0",
"mask": "0.0.0.0",
"fwd-list": [
{
"fwd": "GigabitEthernet1",
"interface-next-hop": [
{
"ip-address": "10.10.40.254"
}
]
}
]
}
]
}
}
ভেরিফিকেশন¶
রাউট যোগ করার পর আবার GET রিকোয়েস্ট দিয়ে চেক করে নিব:
গুরুত্বপূর্ণ টিপস¶
- রাউট যোগ করার আগে নেটওয়ার্ক টপোলজি ভালো করে বুঝে নিন
- নেক্সট-হপ আইপি অবশ্যই রিচেবল হতে হবে
- ডিফল্ট রাউট যোগ করার সময় খুব সাবধান থাকতে হবে
- প্রতিটা চেঞ্জের পর GET দিয়ে ভেরিফাই করুন
সম্ভাব্য এরর¶
- যদি নেক্সট-হপ আইপি রিচেবল না হয়
- যদি ইন্টারফেস নাম ভুল হয়
- যদি সাবনেট মাস্ক ভুল হয়
এই এরর গুলো ঠিক করার জন্য: 1. প্রথমে GET দিয়ে চেক করুন 2. কনফিগারেশন ডাবল চেক করুন 3. নেক্সট-হপ ping করে দেখুন 4. ইন্টারফেস স্ট্যাটাস চেক করুন
এভাবে ধাপে ধাপে টেস্ট করলে নেটওয়ার্ক অটোমেশন অনেক সহজ হয়ে যায়। প্রথমে ছোট ছোট চেঞ্জ দিয়ে শুরু করুন, তারপর বড় বড় কনফিগারেশন করুন।
কি পারা যাবে?