در شرکتهای بزرگ که دارای تعداد زیادی دستگاه سیسکو هستند، مدیریت هر دستگاه به صورت جداگانه با روشهای دستی و سنتی به شدت زمانبر و پیچیده است. انسیبل این امکان را فراهم میکند تا تنظیمات به صورت یکپارچه و خودکار در چندین دستگاه به طور همزمان اعمال شود، که منجر به صرفهجویی در زمان، کاهش هزینهها و بهبود امنیت و کارایی شبکه میشود. این رویکرد سازمانها را قادر میسازد تا به سرعت به تغییرات و نیازهای شبکه پاسخ دهند و از منابع خود به بهترین شکل بهرهمند شوند. استفاده از اتوماسیون با انسیبل نه تنها فرآیند پیکربندی را سرعت میبخشد، بلکه خطاهای ناشی از تنظیمات دستی را کاهش میدهد. در این مستند، به بررسی نحوه استفاده از انسیبل در پیکربندی دستگاههای سیسکو مانند فعال سازی یا غیرفعالسازی SNMP ورژن 3 پرداخته شده است.
نکته: در صورت بررسی ssh به صورت دستی با استفاده از سیستم عامل لینوکس از openssh ورژن 7 استفاده کنید چون ممکن است در ورژن های بالاتر از اتصالات قدیمی مورد استفاده در cisco پشتیبانی نشود.(میتوان ubuntu ورژن 18 یا پایین تر را نیز به صورت داکرایز موقتا استفاده کرد)
مرحله اول: نصب و راه اندازی ansible و ماژول cisco.ios
Sudo apt-get update
Sudo apt-get install ansible -y
بعد از نصب انسیبل باید ماژول مورد نیاز برای مدیریت دستگاه های سیسکو را نصب و اضافه کرد برای این منظور از دستور زیر استفاده می کنیم
ansible-galaxy collection install cisco.ios
نکته: هنگام اجرای دستور فوق و همچنین نصب ماژول های دیگر ممکن است با خطای 403 که در ایران بسیار رایج است مواجه شویم در این صورت نیاز است که از vpn و یا پروکسی هایی با ip غیر از ایران استفاده کنیم.
در صورت اجرای صحیح فرامین و نصب صحیح ماژول ها در نهایت با عبارت هایی طبق تصاویر زیر مواجه می شویم:
مرحله دوم: نصب و راه اندازی ماژول های بر پایه پایتون جهت تسهیل اتصال و ارتباط انسیبل با دستگاهای سیسکو
نکته: دقت شود که عبارت installed successfully بعد از نصب ابزار های ذکر شده نشان داده شود. (به علت طولانی بودن خروجی فرامین، از اضافه شدن آنها خودداری شده)
مرحله سوم: تنظیم دو فایل inventory و playbook
فایل inventory :این فایل جهت تعریف و اضافه کردن دستگاه هایی که می خواهیم تنظیمات روی آنها اعمال شود به کار می رود در این فایل نام دستگاه، آدرس آیپی ، نام کاربری و پسورد مربوط به هر دستگاه همچنین نوع کانکشن ارتباطی نیز مشخص و به فایل اضافه می شود.
فایل playbook : این فایل جهت تعریف تنظیمات و کانفیگ های مورد نیاز استفاده می شود در این فایل نام تنظیمات، نوع ارتباط، ماژول مورد استفاده و نوع تنظیماتی که قصد اعمال روی دستگاه ها داریم را شامل می شود.
ابتدا فایل inventory را ایجاد کرده و به صورت زیر دستگاه های مورد نظر و یوزر و پسورد جهت دسترسی ssh به آن اضافه می کنیم.
vim inventory.ini
تعریف مقادیر:
[cisco_routers] router2 ansible_host=192.168.100.2 ansible_user=ansible ansible_password=ansiblepass ansible_network_os=ios ansible_connection=network_cli router3 ansible_host=192.168.200.2 ansible_user=ansible ansible_password=ansiblepass ansible_network_os=ios ansible_connection=network_cli
|
router2 : نام دستگاه است و از ip دستگاه نیز میتوان استفاده کرد که جهت شناسایی استفاده می شود. Ansible_host : آدرس یا همان ip دستگاه است. ansible_user و ansible_password : یوزر و پسورد لازم برای ssh به دستگاه است. ansible_network_os : سیستم عامل دستگاه مقصد است. ansible_connection : رابط مورد استفاده برای برقراری ارتباط میان ansible و دستگاه مقصد است.
|
در انتها فایل playbook را ایجاد کرده و دستورات مورد نظر را به فایل اضافه می کنیم
vim snmpv3_config.yml
نحوه تنظیم فایل جهت فعال سازی snmp v3 :
- name: Configure SNMPv3 on Cisco IOS hosts: cisco_routers gather_facts: no vars: ansible_command_timeout: 120 ansible_host_key_checking: False connection: network_cli tasks: - name: Configure SNMP View cisco.ios.ios_config: lines: - snmp-server view sview iso included - name: Configure SNMP Group cisco.ios.ios_config: lines: - snmp-server group sngp v3 priv read sview - name: Configure SNMP User cisco.ios.ios_config: lines: - snmp-server user moein sngp v3 auth sha abc123PP priv aes 128 abc123PP
|
hosts :این مورد باید همان نامی که در فایل inventory درون براکت [] استفاده شده، وارد شود (در اینجا cisco_routers) و به تمامی دستگاه هایی که قرار است کانفیگ شوند اشاره دارد. gather_facts :برای دریافت اطلاعات عمومی و حقایق دستگاه استفاده می شود و به دلیل اینکه در ورژن های پایین به خصوص 12 پشتیبانی نمی شود مقدار آن را no وارد می کنیم ansible_command_timeout : مقدار زمان انتظار بر حسب ثانیه برای اجرای دستورات بر روی دستگاه است و برای شبکه های بزرگ و یا اتصالات ضعیف کاربرد دارد ansible_host_key_checking : برای عدم بررسی host key در اتصال ssl به کار میرود چون در اتصال به تعداد زیادی هاست و همچنین در اتصال خودکار نمیتوانیم host key را بررسی و تایید کنیم connection : نوع و رابط اتصال به دستگاه یا روتر مقصد که برای cisco و تجهیزات شبکه معمولا از network_cli استفاده می شود tasks : کانفیگ هایی که باید اعمال شوند. cisco.ios.ios_config : ماژول مورد استفاده جهت اجرای دستورات در محیط configure terminal سیسکو
|
نکته: برای اجرای دستورات نمایشی مانند show run باید از ماژول cisco.ios.ios_command استفاده شود.
Lines: خطوط کد و فرمانی که در configure terminal اجرا می شود.
مرحله آخر: اجرای playbook و inventory به کمک ansible
با استفاده از دستور زیر playbook را اجرا میکنیم
ansible-playbook -i inventory.ini cisco_snmp_v3.yml