Network Automation with Python Nornir Part1

تولید کننده: مهندس مجید اسدپور
Network Automation with Python Nornir Part1
ناشر : اندیشه گستر رایکا *** شماره مجوز : 50/708
Text Processing with Bash Scripting
قیمت محصول: 4,200,000 ﷼
بسته بندی Tooltip

سرفصل مطالب و دموی محصول

سرفصل مطالب

محتوی این دوره به صورت ناقص به ایمیل شما ارسال خواهد شد.

برای دریافت محتوی کامل این آموزش، ارائه کارت ملی (بدون قلم خوردگی) از طریق تیکت ضروری است.

مشخصات شخصی از جمله نام و نام خانوادگی، کد ملی، شماره موبایل و آدرس ایمیل و ...  به صورت اختصاصی روی ویدئوها برای شما اضافه می گردد

این پروسه ممکن است تا یک هفته کاری زمان ببرد. 

1. Comparing Network Automation Tools.mp4
2. Preparing Network Automation laboratory.mp4
3. Preparing Inventory and Config Files.mp4
4. Send Commands with Nornir Scrapli plugin.mp4
5. access inventory data.mp4
6. Send Configs with Nornir Scrapli plugin.mp4
7. Send Interactive Commands with Scrapli.mp4
8. Send Commands and configs with Netmiko.mp4
9. Send Commands with NAPALM plugin.mp4
10. NAPALM structured outputs.mp4
11. Send Configs with NAPALM.mp4
12. do not use clear text password in nornir inventory.mp4
13. public_key_authentication_access_without_password.mp4
14. Use Filtering to run commands on a group of devices.mp4
15. use google TextFSM parser to convert network device command output to structured data_.mp4
16. use cisco genie parser to convert network device command output to structured data.mp4
17. Nornir Jinja2 Template.mp4
18. Nornir Jinja2 Template Part2.mp4
19. netbox Installation and initial configuration.mp4
20. Netbox Inventory in Nornir.mp4

  

  • 1- مقایسه انواع روش های اتوماسیون شبکه

در این بخش انواع روش های اتوماسیون شبکه با هم مقایسه می شوند. این روش های به دو دسته اصلی تقسیم می شوند. روش هایی که با زبان برنامه نویسی پایتون کار می کنند و روش هایی که زبان اختصاصی خود را دارند.
روش های اتوماسیون مبتنی بر زبان پایتون نیز به دو دسته تقسیم بندی می شوند. روش های که با ارسال دستورات به تجهیزات شبکه و دریافت خروجی، اتوکماسیون را مدیریت می کنند و روش هایی که با ساختار yang وابسته هستند
اما ابزارهای موجود در این دسته بندی ها مورد بررسی قرار می گیرند تا دلیل انتخاب کتابخانه Nornir برای اتوماسیون شبکه مشخص شود که در طول این دوره به آن خواهیم پرداخت.

  • 2- آماده سازي لابراتور اتوماسیون شبکه

در اين بخش چگونگي آماده سازي لابراتور براي پياده سازي اسكريپت هاي اتوماسيون شبكه، نشان داده شده است.

  • 3- آماده سازي فایل های Inventory و Config

کتابخانه Nornir دو ویژگی اصلی دارد اینکه لیست تجهیزاتی که قرار است از طریق اسکریپت مدیریت کنید را در یک فایل Inventory لیست و گروه بندی می کنید و ویژگی های هر دیوایس و گروه تجهیزات مانند آدرس جهت اتصال، نام کاربری، رمز و... را در داخل آن می نویسید. بنابراین لازم نیست در داخل کد برنامه نگران این باشید کا این اطلاعات اضافه شود.
ویژگی دوم آن این است که شما می توانید همزمان تجهیزات را از راه دور مدیریت کنید و لازم نیست یکی پس از دیگری مدیریت شوند.
در این بخش چگونگی مدیریت فایل Inventory و همچنین فایل کانفیگ نشان داده می شود.

  • 4- ارسال command با پلاگین Scrapli

در ادامه با کتابخانه های متعددی از جمله Scrapli، Netmiko، Napalm و ... کارخواهیم کرد. از بین این کتابخانه ها با کتابخانه Scrapli شوع خواهیم کرد.
در کتابخانه Scrapli و البته دیگر کتابخانه ها امکان ارسال دستوراتی که config هستند و دستوراتی که config نیستند، معمولا دو تابع جداگانه وجود دارد. در این بخش توابع ارسال دستوراتی که config نیستند مورد بررسی قرار می گیرند.
مثلا دستوراتی مثل “show ip interface brief” و “show version” از جمله این دستورات هستند.
نام دوره: اتوماسیون شبکه با زبان پایتون و کتابخانه Nornir

  • 5- دسترسی به داده های Inventory

برای ارسال کانفیگ به تجهیزات شبکه ، معمولا داده هایی مثل router-id، as-number، community و خیلی داده های دیگری که در کانفیگ استفاده می شود، در داخل کد قرار داده نمی شود و به صورت جداگانه نگهداری می شود.
قابلیت inventory کتابخانه nornir امکان نگهداری داده را نیز برای ما فراهم می کند.
در این بخش چگونگی نگهداری و همچنین چگونگی دسترسی به داده های کانفیک به دو روش نشان داده می شود.
دسترسی به داده های کانفیگ برای ارسال کانفیگ به تجهزات ضروری می باشد.

  • 6- ارسال Config با پلاگین Scrapli

در کتابخانه Scrapli و البته دیگر کتابخانه ها امکان ارسال دستوراتی که config هستند و دستوراتی که config نیستند، معمولا دو تابع جداگانه وجود دارد. در این بخش توابع ارسال دستوراتی که config هستند مورد بررسی قرار می گیرند.
این توابع عبارتند از send_config، send_configs و send_configs_from_file که با اولی می توانید یک دستور را ارسال کنید. با دومی چندین دستور ارسال می شوند. دستورات در داخل یک لیست در اختیار تابع قرار می گیرد و با سومین تابع نیز امکان ارسال چندین دستور وجود دارد که لیست دستورات در داخل یک فایل قرار می گیرند.

  • 7- ارسال دستورات Interactive با پلاگین Scrapli

یکی دیگر از قابلیت های پلاگین Scrapli ارسال دستورات Interactive است. مثلا فرض کنید، قصد دارید از فایل کانفیگ همه تجهیزات شبکه بک آپ گرفته و در سرور ریموت ذخیره کنید.
موقعی که از دستور کپی در تجهیزات استفاده می کنید، چندین سوال از شما پرسیده می شود، اسم فایل مقصد و آدرس مقصد از این موارد هستند.
با استفادهاز این پلاگین می توانید به این سوالات در قالب برنامه پاسخ بدهید و بک آپ گیری را اتومات کنید

  • 8- ارسال دستورات با پلاگین Netmiko

یکی دیگر از پلاگین های Nornir که بسیار هم محبوب و هم فراگیر است Netmiko است. همترین دلیل آن لیست وسیع تجهیزاتی است که پشتیبانی می کند. اگر چه حدود 10 دیوایس مختلف به صورت کامل توسط Netmiko پشتیبانی می شود اما بیش از 100 دستگاه به صورت محدود پشتیبانی می شود.
در این بخش سه کار مهم این پلاگین را بررسی می کنیم. ارسال دستوراتی که تغییری در شبکه ایجاد نمی کنند. دستوراتی که کانفیگ جدید روی تجهیرات ایجاد می کنند و ذخیره سازی کانفیگ نهایی روی تجهیزات از جمله توابع کاربردی در این پلاگین هستند

  • 9- ارسال دستورات با پلاگین NAPALM

در بخش های قبلی چگونگی ارسال دستورات با پلاگین های Scrapli و Netmiko را بررسی کردیم.
پلاگین NAPALM از این جهت منحصر بفرد است که از دستورات مستقل از Vendor عمل می کند. یعنی برای دیدن لیست اینترفیس ها، بری تجهیزات سیسکو، جونیپر و اریستا از دستور یکسان استفاده می شود.
ضمن اینکه خروجی این دستورات نیز به صورت ساختارمند و مستقل از کمپانی در اختیار ما قرار می گیرد که استخراج اطلاعات را بسیار ساده می کند و نیازی به استفاده از پارسرهای بیرونی و یا regular expression نخواهیم داشت.

  • 10- پردازش خروجی دستورات NAPALM

همانطور که در بخش قبلی گفته شد، پلاگین NAPALM این خصوصیت ویژه را دارد که خروجی های ساختار یافته در اختیار ما قرار می دهد.
این موضوع در استخراج ساده و سریع اطلاعات بسیار کمک می کند که در پلاگین های Scrapli و Netmiko بدون استفاده از پارسرهای خارجی کار ساده ای نخواهد بود

  • 11- پردازش خروجی دستورات NAPALM

در دو بخش قبلی در خصوص چگونگی ارسال دستورات غیر کانفیگی با پلاگین NAPALM صحبت کردیم. در این بخش چگونگی ارسال کانفیگی با این پلاگین نشان داده می شود.
یکی از تفاوت هایی که در این بخش نسبت به Scrapli و Netmiko مواجه خواهید شد، قابلیت Replace کردن و با Merge کردن کانفیگ است که در پلاگین های قبلی با آن مواجه نشدیم.

  • 12- خارج مردن رمز از حالت clear text در فایل inventory

در تمام اسکریپت هایی که تاکنون اجرا شده است، رمز تجهیزات شبکه در فایل inventory ذخیره شده است که از نظر امنیتی توصیه نمی شود. در این بخش قصد داریم با سه روش زیر این مشکل را برطرف کنیم.
استفاده از ماژول getpass که رمز را از کاربر می کیرد. روش sysargv که در زمان اجرای اسکریپت رمز را وارد می کنیم. و استفاده از ابزار رمز نگاری gpg که پسورد به صورت رمز شده در یک فایل ذخیره می شود

  • 13- استفاده از Public Key Authentication برای دسترسی بدون پسورد به تجهیزات

در بخش قبلی این سوال را مطرح کردیم که چکونه می توانیم بدون نگه داشتن رمز دسترسی به تجهیزات به صورت clear text، می توانیم از طریق اسکریپت به تجهیزات متصل شویم.
در پاسخ به این سوال در بخش قبلی سه روش را بررسی کردیم. روش get_pass که رمز را از کاربر می گیرد. روش sysargv که رمز در زمان اجرای اسکریپت داده می شود و رمز گردن فایلی که پسورد در آن نگهداری می شود
بهترین روش شاید استفاده از public key authentication باشد که در این بخش به آن پرداخته می شود.

  • 14- استفاده از فیلترینگ برای اجرای دستورات روی گروهی از تجهیزات

ما تاکنون در همه اسکریپت هایی که نوشته ایم، دستورات را روی همه تجهیزات اجرا کرده ایم. ولی معمولا دستورات بایدروی گروهی از تجهیزات اجرا شود و نه روی همه تجهیزات.
پدر این بخش نشان میدهیم که چگونه می توانیم با استفاده از فیلترینگ، با روش های ساده و یا پیچیده گروهی از تجهیزات را جدا کنید.

  • 15- استفاده از پارسر TextFSM برای تبدیل خروجی دستورات شبکه به خروجی ساختاریافته

رد صورتی که بخواهیم از خروجی دستوراتی که به تجهیزات شبکه وارد می کنیم، اطلاعات خاصی را استخراج کنیم، مجبور به نوشتن regular expression خواهید شد
در پلاگین Nornir_scrapli که قبلا در مورد آن بحث شد، برای بعضی از دستورات شبکه این قابلیت وجود دارد که خروجی ساختار یافته به صورت ترکیبی از لیست و دیکشنری در اختیار شما قرار می دهد که استخراج اطلاعات از آن بسیار ساده است.
اما در خصوص پلاگین های Scrapli و Netmiko این قابلیت وجود نداشت.
برای این پلاگین ها می توانید از تمپلیت های آماده NTC استفاده کنید که خروجی دستورات مهم تجهیزات اکثر کمپانی های مهم را با کمک کتابخانه Google TextFSM تبدیل به داده ساختاریافته می کند که در این بخش چگونگی استفاده از آن نشان داده می شود..

  • 16- استفاده از پارسر Genie برای تبدیل خروجی دستورات شبکه به خروجی ساختاریافته

در صورتی که بخواهیم از خروجی دستوراتی که به تجهیزات شبکه وارد می کنیم، اطلاعات خاصی را استخراج کنیم، مجبور به نوشتن regular expression خواهید شد
در پلاگین Nornir_scrapli که قبلا در مورد آن بحث شد، برای بعضی از دستورات شبکه این قابلیت وجود دارد که خروجی ساختار یافته به صورت ترکیبی از لیست و دیکشنری در اختیار شما قرار می دهد که استخراج اطلاعات از آن بسیار ساده است.
اما در خصوص پلاگین های Scrapli و Netmiko این قابلیت وجود نداشت.
برای این پلاگین ها می توانید از دو پارسر TextFSM و Genie استفاده کنید که اوی برای گوگل و دومی برای سیسکو است. در بخش قبلی پارسر TextFSM را بررسی کردیم. در این بخش پارسر Genie مورد بررسی قرار می گیرد.

  • 17- ارسال کانفیگ با استفاده از Jinja2 Template

در این بخش یاد می گیریم که در اتوماسیون شبکه معمولا از سه مولفه جدا از هم استفاده می شود. فایل یا فایلی هایی که داداه ها در آن نگهداری می شود. فایل یا فایل هایی که کانفیگ فایل اما به صورت تمپلیت در آن نگهداری می شود و فایل کد اصلی که وظیفه اتوماسیون را به عهده دارد
فایل تمپلیت هملن فایل کانفیگ است که در آن به جای داده ها که به ازاء هر دیوایس شبکه متفاوت است، از متغیر ها استفاده می شود. این ساده ترین شکل فایل تمپلیت است که در این بخش به آن پرداخته می شود.
ساختار های پیچیده تر فایل تمپلیت در بخش بعدی شرح داده می شود.

  • 18- ارسال کانفیگ با استفاده از Jinja2 Template بخش دوم

در این بخش یاد می گیریم که در اتوماسیون شبکه معمولا از سه مولفه جدا از هم استفاده می شود. فایل یا فایلی هایی که داداه ها در آن نگهداری می شود. فایل یا فایل هایی که کانفیگ فایل اما به صورت تمپلیت در آن نگهداری می شود و فایل کد اصلی که وظیفه اتوماسیون را به عهده دارد
فایل تمپلیت هملن فایل کانفیگ است که در آن به جای داده ها که به ازاء هر دیوایس شبکه متفاوت است، از متغیر ها استفاده می شود. این ساده ترین شکل فایل تمپلیت است که در این بخش به آن پرداخته می شود.
در بخش قبلی اصلی ترین قابلیت Jinja2 Template نشان داده شده است. در این بخش قابلیت های پیچیده تر فایل تمپلیت مورد بررسی قرار می گیرد.

  • 19- نصب و پیکربندی اولیه نرم افزار Netbox

در تمام بخش های قبلی اطلاعات Inventory از طریق فایل های hosts، group و default خوانده شده است. اطلاعات داده های مربوط به پیکربندی تجهیزات هم از طریق host_var و group_var خوانده شده است
یکی دیگر از روش های خواندن اطلاعات inventory و data استفاده از نرم افزار netbox است.
این نرم افزار به صورت معمول برای مستند سازی، و البته مهندسین شبکه برای مستند سازی شبکه و دیتاسنتر از آن استفاده می کنند. اما یکی دیگر از کاربردهای خواندن هر گونه داده های شبکه از طریق API است که این نرم افزار در اختیار ما قرار می دهد
در این بخش نصب و پیکربندی اولیه این نرم افزار نشان داده می شود. در بخش بعد چگونگی خواندن اطلاعات inventory از طریق Nornir نشادن داده می شود.

  • 20- نصب و پیکربندی اولیه نرم افزار Netbox

در تمام بخش های قبلی اطلاعات Inventory از طریق فایل های hosts، group و default خوانده شده است. اطلاعات داده های مربوط به پیکربندی تجهیزات هم از طریق host_var و group_var خوانده شده است
یکی دیگر از روش های خواندن اطلاعات inventory و data استفاده از نرم افزار netbox است.
این نرم افزار به صورت معمول برای مستند سازی، و البته مهندسین شبکه برای مستند سازی شبکه و دیتاسنتر از آن استفاده می کنند. اما یکی دیگر از کاربردهای خواندن هر گونه داده های شبکه از طریق API است که این نرم افزار در اختیار ما قرار می دهد
در بخش قبلی نصب و پیکربندی اولیه این نرم افزار نشان داده شده است. در این بخش چگونگی خواندن اطلاعات inventory از طریق Nornir نشادن داده می شود.

مشاهده دمو

بازنگری ها

هنوز نظری برای این محصول وجود ندارد.