YANG based Network Automation with Python Nornir
ناشر : اندیشه گستر رایکا *** شماره مجوز : 50/708
سرفصل مطالب
برای راحتی شما این محصول قفل ندارد. ویدئوها به نام شخص شما (شرکت شما) تولید خواهد شد.
محتوی این دوره به صورت ناقص به ایمیل شما ارسال خواهد شد.
برای دریافت محتوی کامل این آموزش، ارائه کارت ملی (بدون قلم خوردگی) از طریق تیکت ضروری است.
مشخصات شخصی از جمله نام و نام خانوادگی، کد ملی، شماره موبایل و آدرس ایمیل و ... به صورت اختصاصی روی ویدئوها برای شما اضافه می گردد. برای خریدهای سازمانی، نام و شناسه ملی سازمان نیز در روی ویدئوها درج خواهد شد.
این پروسه ممکن است تا یک هفته کاری زمان ببرد.
کارت ملی شما بعد از بررسی و دریافت اطلاعات از سایت رایکا پاک می شود. اگر قبلا کارت ملی خود را ارسال کنید، نیازی به ارسال مجدد نیست
ویدئو شماره 1 تا 20 در دوره اول Nornir منتشر شده است
21. what is netconf.mp4
22. automation Data Formats XML_JSON_YAML_.mp4
23. YANG Data Model_.mp4
24. explore yang data model with pyang tool.mp4
25. explore yang with yangsuite.mp4
26. get config with nornir-netconf plugin.mp4
27. netconf xpath filtering.mp4
28. netconf xpath filtering and netconf_get rpc command.mp4
29. netconf subtree filtering.mp4
30. netconf xml to dictionary_.mp4
31. edit config with netconf_edit_config.mp4
32. edit config with netconf_edit_config and Jinja2 Template.mp4
33. restconf introduction.mp4
34. send command with restconf protocol and through postman.mp4
35. send command with restconf and native python without nornir.mp4
36. send command with nornir restconf plugin.mp4
37. send configuration with restconf.mp4
38. edit config with restconf and YAML Data.mp4
39. edit config with restconf and Jinja2 Template.mp4
40. gRPC and gNMI Introduction.mp4
41. gNMI laboratory preparation.mp4
42. get config with gNMI protocol and gnmic tool.mp4
43. set config with gNMI protocol and gnmic interactive tool.mp4
44. subscribe gRPC with gNMI protocol and gnmic tool.mp4
45. gNMI get gRPC with Python Nornir.mp4
46. using pygnmi to send set and subscribe gRPC in gNMI.mp4
21- پروتکل Netconf چیست
در دوره قبلی نورنیر، از پلاگین های netmiko، napalm و scrapli برای ارسال دستورات به تجهیزات استفاده کردیم که در همه آنها به صورت مستقیم دستورات و یا CLI Command ارسال می شود.
در روش های پیش رو شامل netconf، restconf و gNMI از ارسال دستورا استفاده نمی شوند و در عوض از ساختار داده YANG استفاده می شود
تجهیزات شبکه می توانند تمام دستورات را در قالب یک ساختار داده استاندارد به نام YANG درخود ذخیره کنند که دو مزیت ایجاد می کند. اول اینکه برای پیکربندی تجهیزات برای مارک های مختلف از دستورات مختلف استفاده نمی کنیم و برای همه تجهیزات شبکه به صورت یکسان پیکربندی صورت می گیرد. چرا که به جای ارسال دستورات ، کافی است داده های مناسب در این ساختار استاندارد قرار گیرد.
البته ساختار YANG هم انواع استاندارد و هم انواع اختصاصی دارد که برای هر مارک متفاوت است
دومین مزیتی که ایجاد می کند، خروجی اتوماسیون همیشه ساختار یافته است و نیازی به استفاده از پارسرها برای تبدیل خروجی متنی به خروجی ساختاریافته نداریم و به راحتی می توانیم داده های دلخواه خود را از داخل این ساختار خارج کنیم.
در چند بخش بعدی در خصوص استاندارد YANG و پروتکل Netconf بسیار صحبت خواهیم کرد و سناریوهای متعدد اجرا خواهیم کرد.
22- انواع فرمت های ارسال داده در اتوماسیون شبکه
همانطور که می دانید در روش های netconf، restconf و gNMI از ارسال دستورا استفاده نمی شوند و در عوض از ساختار داده YANG استفاده می شود
برای ارسال و یا خواندن داده از ساختار YANG بسته به اینکه از کدام یک از روش های فوق استفاده شود، معمولا یکی از کد های XML، JSON و یا YAML استفاده می شود.
در این بخش به مقایسه این سه روش در کد کردن داده و همچنین چگونگی ارتباط آن با دیکشنری و لیست در زبان پایتون پرداخته می شود.
23- ساختار دیتا مدلینگ YANG
در این بخش به شرح دیتا مدلینگ ساختار YANG پرداخته می شود که پروتکل های Netconf، Restconf و gNMI از طریق این مدل برای اتوماسیون شبکه استفاده می کنند. بنابراین شناخت کافی این مدل برای ادامه بحث اتوماسیون ضروری است. در بخش های بعدی همچنان به یادگیری ابزارهایی خواهیم پرداخت که استخراج اطلاعات از مدل YANG را برای شما ساده تر خواهد کرد
در اين بخش چگونگي آماده سازي لابراتور براي پياده سازي اسكريپت هاي اتوماسيون شبكه، نشان داده شده است.
24- بررسی ساختار YANG با ابزار pyang
برای اتوماسیون شبکه با پروتکل هایی که از ساختار YANG استفاده می کنند، بسیار مهم است که بدانیم با چه YANG data model ای قصد داریم اتوماسیون انجام دهیم و یا اینکه کدام بخش از این data model برای اتوماسیون مورد استفاده قرار می گیرد.
در این بخش با ابزار pyang آشنا می شویم که به ما این قابلیت را می دهد که بتوانیم ساختار درختی data model مورد نظر خود را مشاهده کرده و مسیر و یا ساختار xml اطلاعات مورد نظر خود را استخراج کنیم. این مسیر و یا ساختار xml برای اتوماسیون ضروری است و بسیار حائز اهمیت است
25- بررسی ساختار YANG با ابزار yangsuite
برای اتوماسیون شبکه با پروتکل هایی که از ساختار YANG استفاده می کنند، بسیار مهم است که بدانیم با چه YANG data model ای قصد داریم اتوماسیون انجام دهیم و یا اینکه کدام بخش از این data model برای اتوماسیون مورد استفاده قرار می گیرد.
در بخش قبل با ابزار pyang اشنا شدیم. در این بخش با ابزار yangsuite آشنا می شویم که به ما این قابلیت را می دهد که بتوانیم ساختار درختی data model مورد نظر خود را مشاهده کرده و مسیر و یا ساختار xml اطلاعات مورد نظر خود را استخراج کنیم. این مسیر و یا ساختار xml برای اتوماسیون ضروری است و بسیار حائز اهمیت است
مزیت این ابزار نسبت به ابزار pyang در آن است که شما می توانید بدون دانش پایتون از پروتکل های netconf، restconf و gnmi استفاده کرده و ساختار yang را بخوانیدو یا دستکاری کنید.
ساختاری که در اختیار شما قرار می گیرد به راحتی قابل استفاده در نرم افزار python خواهد بود
26- دریافت خروجی کانفیگ با استفاده از پلاگین nornir_nrtconf
در بخش های قبلی سعی کردیم تا با ساختار مدل AYNG آشنا شویم. از این بخش به بعد با یکی از پروتکل هایی که با این ساختار کار می کند، Netconf آشنا می شویم.
به عنوان اولین قدم با Netconf_get_config آشنا می شویم که برای خواندن کانفیگ از device استفاده می ش.د. غیر از خواندن کانفیگ، این task یک کاربرد بسیار مهم دیگر هم دارد. وقتی کانفیگ device را می خوانید، تمام yang model هایی که هر بخش از کانفیگ را support می کنند برگردانده می شود که به شما کمک می کند، به راحتی yang model مناسب برای خواندن کانفیگ یا تغییر هر بخش از کانفیگ را پیدا کنید
27- مشاهده بخشی از خروجی Netconf با استفاده از فیلتر xpath
در بخش قبلی یاد گرفتیم که چطور می توانیم با استفاده از Netconf خروجی کانفیگ یک دستگاه شبکه رو برگردانیم. در این بخش می خواهیم بخشی از خروجی که مد نظر ما است را با استفاده از فیلترینگ xpath برگردانیم.
این فیلترینگ ممکن است توسط همه تجهیزات پشتیبانی نشوند. اما فیلترینگ subtree که در بخش بعدی بحث می شود، حتما توسط همه تجهیزات شبکه ای که Netconf را پشتیبانی می کنند، لزوما پشتیبانی خواهد شد.
28- مشاهده بخشی از خروجی Netconf با استفاده از فیلتر xpath و دستور Netconf_get
در دو بخش قبلی یاد گرفتیم که چطور می توانیم با استفاده از Netconf خروجی کانفیگ یک دستگاه شبکه رو برگردانیم. در بخش قبلی یاد گرفتیم بخشی از خروج کانفیگ که مد نظر ما است را با استفاده از فیلترینگ xpath برگردانیم.
در این بخش مجددا می خواهیم از فیلترینگ xpath برای مشاهده بخشی از خروجی بهره ببریم. اما به جای خروجی کانفیگ می خواهیم خروجی آماری را مشاهده کنیم. مثل تعداد بایت های ورودی به یک اینترفیس
به همین دلیل به جای دستور Netconf_get_config که در بخش قبل از آن استفاده شده است، در این بخش از دستور Netconf_get استفاده می شود که علاوه بر خروجی کانفیگ قادر است خروجی های آماری را نیز برگرداند.
29- مشاهده بخشی از خروجی Netconf با استفاده از فیلتر subtree
در بخش قبلی و دو بخش قبلی یاد گرفتیم که چگونه با استفاده از فیلترینگ xpath می توانیم فقط بخشی از خروج کانفیگ و یا خروجی آماری که مد نظر ما است را برگردانیم. مشکل فیلنر xpath علی رغم قابلیت بالای آن ، این است که لزوماه همه تجهیزاتی که Netconf را پشتیبانی می کنند، فیلتر xpath را پشتیبانی نمی کنند
در این بخش می خواهیم از فیلترینگ subtree برای مشاهده بخشی از خروجی بهره ببریم. مزیت این فیلتر در این است که لزوما هر دیوایسی که Netconf را پشتیبانی می کند، حتما subtree را نیز پشتیبانی می کند.
در این بخش از دستور Netconf_get_config برای مشاهده کانفیگ و از دستور Netconf_get برای مشاهده خروجی آماری بهره خواهیم برد
همانند بخش های قبلی، هم با Netconf مربوط به nornir_scrapli و هم با خود nornir_netconf پیاده سازی انجام خواهد شد.
30- تبدیل خروجی Netconf از XML به Dictionary
تمام خروجی هایی که در بخش های قبل از طریق Netconf چه با فیلتر و چه بدون فیلتر در اختیار ما قرار گرفته است، به فرمت xml بوده است. برای دسترسی به داده های با خروجی xml ، شاید یکی از بهترین روش ها، تبدیل آن به ترکیبی از list و dictionary است.
در این بخش قصد داریم با استفاده از کتابخانه xmltodict خروجی xml را به dictionary تبدیل کنیم تا راحت تر بتوانیم با خروجی های آن دسترسی پیدا کنیم.
31- تغییر کانفیگ تجهیزات با استفاده از Netconf_edit_config
در بخش های قبلی چگونگی مشاهده خروجی کانفیک و یا خروجی آماری تحهیزات را با استفاده از netconf_get و netconf_get_conf بررسی کردیم.
در این بخش قصد داریم نسبت به تغییر کانفیگ تجهیزات با استفاده از دستور Netconf_edit_config اقدام کنیم
تغییر کانفیگ را هم با کتابخانه Netconf مربوط به scrapli و هم nornir Netconf بررسی خواهیم کرد.
32- تغییر کانفیگ تجهیزات با استفاده از Netconf_edit_config و Jinja2 Template
در بخش های قبلی چگونگی تغییر کانفیگ تجهیزات با استفاده از دستور Netconf_edit_config را بررسی کردیم
در این بخش قابلیت Jinja2 Template را نیز به آن اضافه می کنیم. مباحث تئوری مربوط به Jinja2 Template در دوره قبلی نورنیر شرح داده شده است و در این بخش صرفا از آن استفاده می کنیم و مولفه های مختلف آن را بررسی می کنیم.
تغییر کانفیگ را هم با کتابخانه Netconf مربوط به scrapli و هم nornir Netconf بررسی خواهیم کرد.
33- معرفی restconf
در بخش های قبلی چگونگی مشاهده کانفیگ و تغییر آن با استفاده از Netconf را بررسی کردیم. از این بخش به بعد با پروتکل restconf آشنا خواهیم شد.
ابتدا تفاوت Restconf و Netconf را بررسی می کنیم. در پروتکل Restconf که از HTTPS برای ارتباط با device استفاده می کند، با دستورات آن، هدر آن و ساختار URL آ آشنا خواهیم شد.
نهایتا سعی می کنیم با ابزار curl و پروتکل HTTP به دیوایس متصل شویم و خروجی مورد نظر خود را استخراج کنیم.
34- ارسال دستورات با استفاده از پروتکل restconf و ابزار postman
در این بخش با ابزار postman آشنا می شویم و اینکه چطور می توانیم از طریق این ابزار با پروتکل restconf با تجهیزات شبکه ارتباط برقرار کنیم.
با ابزار postman می توانید بخش های مختلف هدر HTTP از جمله، دستور مورد نظر، آدرس URL، انواع هدر را تنظیم کنید و از طریق این ابزار با تجهیزات شبکه ارتباط بگیرید. مزیت استفاده از این ابزار، امکان ارائه کد برنامه به انواع زبان های برنامه نویسی و همچنین کتابخانه های آماده است که در postman در اختیار شما قرار می گیرد
35- ارسال دستورات با استفاده از پروتکل restconf و ابزار python بدون Nornir
در بخش قبل با ابزار postman و با پروتکل restconf با تجهیزات شبکه ارتباط برقرار کردیم. در این بخش می خواهی از طریق پایتون و کتابخانه request و بدون استفاه از Nornir با تجهیزات شبکه ارتباط برقرار کنیم
می خواهیم قبل استفاده از Nornir و قابلیت های آن ، می خواهیم قابلیت های restconf را پیاده سازی کنیم. اینکه هم خروجی xml و هم خروجی json در اختیار ما قرار می دهد. اینکه چطور باید بخشی از اطلاعات کانفیگ و یا statistics را از طریق مدل های yang استخراج کنیم و اینکه چطور به کوچکترین بخش های خروجی از طریق دیکشنری دسترسی پیدا می کنیم.
36- ارسال دستورات با استفاده از پروتکل restconf و کتابخانه Nornir
در بخش قبل با کتابخانه request و بدون استفاده از Nornir اقدام به ارسال دستورات به تجهیزات شبکه از طریق پروتکل restconf کرده ایم. چگونگی ایجاد header و URL برای ارسال دستورات به تفصیل شرح داده شد و چگونگی پردازش خروجی در هر دو روش XML و JSON شرح داده شد.
در این بخش قصد داریم فقط یک نکته به آن اضافه کنیم. اینکه بتوانیم از طریق کتابخانه Nornir این دستورات ارسال شود. همانطور که می دانید اصلی ترین قابلیت هایی که Nornir به ما اضافه می کند، یکی خاصیت inventory management است که دیگر لازم نیست آدرس تجهیزات و نام کاربری و رمز داخل کد پایتون اضافه شود. دومی قابلیت multithreading است که می تواند همزمان رو چندین دیوایس شبکه به صورت همزمان دستورات را اجرا نماید.
37- ارسال کانفیگ با استفاده از پروتکل restconf
در بخش قبل و دو بخش قبلی به چگونگی ارسال دستورات با پروتکل restconf پرداختیم.
در این بخش قصد داریم با استفاده از پروتکل restconf کانفیگ های جدید به تجهیزات شبکه ارسال کنیم و یا کانفیگ آن را تغییر دهیم.
این قسمت ابتدا بدون استفاده از Nornir و سپس با استفاده از Nornir نشان داده خواهد شد.
38- تغییر کانفیگ تجهیزات با استفاده از restconf و داده YAML
همانطور که در بخش قبل متوجه شدید استافده از داده با قالب JSON برای کانفیگ تجهیزات شبکه کمی پیچیده است. خصوصا اگر بخواهید تغییراتی در کانفیگ بدهید، کمی دشوار است که در قالب فایل JSON این تغییرات صورت گیرد
در این بخش نشان می دهی که ابتدا فایل کانفیگ با فرمت JSON را به YAML تغییر می دهیم و سپس فایل YAML را به تجهیزات شبکه منتقل ی کنیم.
مزیتی که این روش دارد این است که فایل YAML خواناتر است و راحت تر نیز می توان آن را ویرایش کرد و کانفیگ جدید به تجهیزات اعمال کرد
39- تغییر کانفیگ تجهیزات با استفاده از restconf و Jinja2 Template
در بخش های قبلی چگونگی تغییر کانفیگ تجهیزات با استفاده از restconf را بررسی کردیم
در این بخش قابلیت Jinja2 Template را نیز به آن اضافه می کنیم. با اضافه کردن قابلیت Jinja2 Template، کانفیگ و داده های مربوط از کد پایتون جدا خواهد شد.
مباحث تئوری مربوط به Jinja2 Template در دوره قبلی نورنیر شرح داده شده است و در این بخش صرفا از آن استفاده می کنیم و مولفه های مختلف آن را بررسی می کنیم.
40- مقدمه ای بر gRPC و gNMI
در بخش های قبلی دو تا از روش های اتوماسیون شبکه مبتنی بر مدل YANG به نام های NETCONF و RESTCONF را بررسی کردیم. از این بخش به بعد روش بعدی یعنی gNMI را مورد بررسی قرار خواهیم داد
در این بخش مقدمه ای بر gRPC و gNMI خواهیم داشت تا خودما را برای اتوماسیون با این روش در بخش های بعدی آماده کنیم.
41- آماده سازی لابراتوار gNMI
در این بخش در خصوص چگونگی آماده سازی لابراتوار gNMI بر اساس سیستم عامل تجهیزات Arista به نام vEOS صحبت خواهیم کرد.
دانلود و نصب ایمیج vEOS روی vmware workstation و نصب ابزار gnmic client جهت ارتباط با دیوایس با ابزار gNMI در این بخش مورد بررسی قرار می گیرد.
42- دریافت کانفیگ با پروتکل gNMI و ابزار gnmic
اولین gRPC در پروتکل gNMI دستور get است که با آن می توانید کانفیگ و اطلاعات آماری را از تجهیزات بخوانید.
قبل از اینکه از طریق ابزار پایتون و کتابخانه نورنیر شروع به خواندن این اطاعات کنیم، در این بخش از ابزار gnmic برای ارتباط با تجهیزات شبکه استفاده خواهیم کرد.
43- تغییر کانفیگ با پروتکل gNMI و ابزار gnmic
در بخش قبل با استفاده از پروتکل gNMI و ابزار gnmic اطلاعات کانفیگ را با دستور get gRPC از تجهیزات شبکه خواندیم. در ابن بخش قصد داریم با استفاده از set gRPC نسبت به تغییر کانفیگ و یا پاک کردن آن اقدام نماییم
نکته مهم دیگری که در این بخش به آن پرداخته می شود، روشی ساده و interactive برای پیدا کردن مسیر در مدل yang برای خواندن و یا تغییر کانفیگ است
44- به کارگیری subscribe gRPC با ابزار gnmic در پروتکل gNMI
در بخش های قبل با استفاده از پروتکل gNMI و ابزار gnmic از دستورات get gRPC و set gRPC برای دریافت و تغییر کانفیگ استفاده کردیم. در ابن بخش قصد داریم از subscribe gRPC استفاده کنیم که در حال حاضر مهمترین کاربرد gNMI است.
با استفاده از subscribe gRPC می توانیم اطلاعات مورد نیاز شبکه را هم در بازه های مورد نظر و هم به صورت streaming دریافت کنیم که می تواند جایگزین بسیار بهتری از snmp باشد. چرا که هم اطلاعات جامع تری را پوشش می دهد و هم قابلیت streaming دارد.
45- پیاده سازی gNMI با استفاده از پایتون و کتابخانه pygnmi
در بخش های قبل با استفاده از پروتکل gNMI و ابزار gnmic از دستورات gRPC برای دریافت و تغییر کانفیگ استفاده کردیم.
در این بخش قصد داریم از پایتون برای ارتباط با تجهیزات شبکه و با پروتکل gNMI ارتباط بگیریم. برای اینکار از کتبخانه pygnmi استفاده خواهیم کرد. این کتابخانه بخشی از Nornir نیست ولی با بکارگیری Nornir در کنار کتابخانه pygnmi از مزایای Nornir که Inventory management و Multithreading است، نیز بهره خواهیم برد.
در این بخش دو دستور get gRPC و capabilities gRPC از طریق پایتون ارسال می شوند. در بخش بعدی دستور set و subscribe را بررسی خواهیم کرد.
46- ارسال دستورات set gRPC و subscribe gRPC با استفاده از pygnmi در gNMI
در بخش قبل از پایتون و کتابخانه pygnmi برای ارتباط با تجهیزات شبکه و با پروتکل gNMI استفاده کردیم. و دو دستور get gRPC و capabilities gRPC را از این طریق ارسال کردیم.
در این بخش دستورات set و subscribe را برای تغییر کانفیگ و همچنین دریافت اطلاعات به صورت stream از این طریق ارسال خواهیم کرد.
مشاهده دمو