لب عملی: استفاده از Ansible برای اتوماسیون دستگاه شبکه

این لب عملی یک playbook ساده Ansible از یک control node برای پیکربندی یک banner و تأیید اتصال در سراسر دو روتر هم‌زمان می‌نویسد، و اتوماسیون بدون-عامل و مبتنی‌بر-SSH را با اسکریپت‌نویسی Guestshell روی-خود-دستگاه پوشش‌داده‌شده در لب قبلی مقایسه می‌کند.

Playbook در Ansibleاتوماسیون بدون-عاملپیکربندی فایل Inventory

~4 دقیقه مطالعه · آخرین به‌روزرسانی ۴ مهر ۱۴۰۵

هدف لب

راه‌اندازی یک فایل inventory در Ansible که دو روتر را فهرست می‌کند، نوشتن یک playbook که یک banner ورود یکسان را روی هر دو هم‌زمان پیکربندی می‌کند، اجرای آن از یک control node جداگانه، و تأیید اینکه تغییر به‌درستی روی هر دستگاه بدون نصب هیچ نرم‌افزار عامل روی خود روترها اعمال شد.

هدف لب (چرا مهم است)

Guestshell، پوشش‌داده‌شده در لب قبلی، اتوماسیون را محلی روی یک دستگاه واحد اجرا می‌کند. Ansible به‌جای آن از یک control node جداگانه اجرا می‌شود و بسیاری دستگاه را به‌طور هم‌زمان از طریق SSH استاندارد مدیریت می‌کند، بدون نیاز به هیچ عامل یا نرم‌افزار خاصی نصب‌شده روی دستگاه‌های مدیریت‌شده — یک مدل اتوماسیون اساساً متفاوت که برای اعمال همان تغییر در سراسر یک کل ناوگان دستگاه به‌طور سازگار مناسب است.

توپولوژی لب

Control Node Ansible ---- SSH ---- R1: 192.168.60.1
                          SSH ---- R2: 192.168.61.1

هر دو روتر از قبل دسترسی SSH پیکربندی‌شده با
یک نام‌کاربری/رمز عبور محلی دارند

وظیفه ۱: ساخت فایل Inventory در Ansible

یک فایل inventory که هر دو روتر را با جزئیات اتصالشان فهرست می‌کند بساز.

وظیفه ۲: نوشتن یک Playbook برای پیکربندی یک Banner

یک playbook با استفاده از ماژول ios_banner بنویس که یک banner ورود یکسان را روی هر دو دستگاه تنظیم کند.

وظیفه ۳: اجرای Playbook

playbook را در برابر inventory اجرا کن و فرآیند اتصال و پیکربندی برای هر دو روتر را مشاهده کن.

وظیفه ۴: تأیید Banner روی هر دو روتر

تأیید کن هر روتر اکنون banner پیکربندی‌شده را نشان می‌دهد.

وظیفه ۵: تأیید عدم‌نصب نرم‌افزار عامل

تأیید کن روترها هیچ نرم‌افزار خاصی فراتر از دسترسی SSH استاندارد برای کارکردن این اتوماسیون نیاز نداشتند.

راه‌حل و تأیید

# inventory.ini (روی control node)

[routers]
R1 ansible_host=192.168.60.1
R2 ansible_host=192.168.61.1

[routers:vars]
ansible_network_os=ios
ansible_user=netadmin
ansible_password=NetAdmin2026
ansible_connection=network_cli

# banner-playbook.yml

- name: Configure login banner on all routers
  hosts: routers
  gather_facts: no
  tasks:
    - name: Set banner
      ios_banner:
        banner: login
        text: |
          Authorized access only.
          Automated via Ansible.
        state: present

ControlNode$ ansible-playbook -i inventory.ini banner-playbook.yml

PLAY [Configure login banner on all routers] ***

TASK [Set banner] **************************
changed: [R1]
changed: [R2]

PLAY RECAP **********************************
R1  : ok=1  changed=1  unreachable=0  failed=0
R2  : ok=1  changed=1  unreachable=0  failed=0
-- هر دو روتر در یک اجرای playbook واحد، از
-- طریق SSH استاندارد، پیکربندی شدند -- Ansible
-- با استفاده از همان مکانیزم network_cli که
-- یک مهندس انسانی به‌طور تعاملی استفاده
-- می‌کرد متصل شد

R1# show running-config | begin banner

banner login ^C
Authorized access only.
Automated via Ansible.
^C

R2# show running-config | begin banner

banner login ^C
Authorized access only.
Automated via Ansible.
^C
-- banner یکسان روی هر دو دستگاه حاضر تأیید شد

R1# show processes | include ansible
-- (بدون خروجی -- هیچ‌چیز مرتبط با Ansible روی
--  خود روتر در حال اجرا نیست، چون Ansible
--  کاملاً از control node با استفاده از SSH
--  استاندارد عمل می‌کند، برخلاف رویکرد
--  کانتینر روی-خود-دستگاه Guestshell از لب قبلی)

نکته کلیدی

معماری بدون-عامل Ansible یعنی خود روترها نیازی به چیزی فراتر از دسترسی SSH‌ای که احتمالاً از‌قبل برای مدیریت معمولی پیکربندی کرده‌اند ندارند — همه منطق و اجرای اتوماسیون روی control node رخ می‌دهد، و دقیقاً همان‌طور که یک مدیر انسانی از طریق SSH متصل می‌شد به هر دستگاه متصل می‌شود، که اعمال پیکربندی سازگار در سراسر یک ناوگان بزرگ را بدون هیچ رد پای نرم‌افزاری خاصی روی دستگاه‌های مدیریت‌شده ساده می‌کند، در تضاد مستقیم با رویکرد Guestshell از اجرای کد محلی روی هر دستگاه منفرد.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

لب عملی: پیکربندی مسیریابی Stub در EIGRP

این لب عملی یک روتر شعبه را به‌عنوان یک stub در EIGRP پیکربندی می‌کند، و تأیید می‌کند فقط مسیرهای متصل و خلاصه خودش را تبلیغ می‌کند در حالی که روتر hub به‌درستی از پرس‌وجوکردن stub در طول یک تغییر توپولوژی در جای دیگری از شبکه اجتناب می‌کند.

ادامه

لب عملی: پیکربندی حالت Named در EIGRP

این لب عملی یک پیکربندی EIGRP کلاسیک موجود را به حالت named EIGRP بازپیکربندی می‌کند، و عبارات network و پیکربندی خاص-اینترفیس را در یک سلسله‌مراتب address-family ساختاریافته‌تر سازمان‌دهی می‌کند، و تعادل عملکردی با سبک پیکربندی کلاسیک استفاده‌شده در سراسر لب‌های EIGRP قبلی این مجموعه را تأیید می‌کند.

ادامه

لب عملی: پیکربندی ERSPAN در سراسر یک شبکه مسیریابی‌شده

این لب عملی Encapsulated RSPAN (ERSPAN) را برای آینه‌کردن ترافیک در سراسر یک شبکه مسیریابی‌شده-لایه-۳ به‌جای یک ترانک لایه ۲ واحد پیکربندی می‌کند، و مفهوم RSPAN از لب قبلی را فراتر از مرزهای یک VLAN یا دامنه سوئیچ‌شده واحد گسترش می‌دهد.

ادامه

لب عملی: پیکربندی RSPAN در سراسر سوئیچ‌ها

این لب عملی Remote SPAN (RSPAN) را با استفاده از یک VLAN RSPAN اختصاصی حمل‌شده در سراسر یک ترانک پیکربندی می‌کند، و اجازه می‌دهد ترافیک آینه‌شده روی یک سوئیچ توسط یک دستگاه گرفتن متصل به یک سوئیچ کاملاً متفاوت نظارت شود، و مفهوم SPAN محلی پوشش‌داده‌شده در یک لب قبلی را در سراسر شبکه گسترش می‌دهد.

ادامه

لب عملی: پیکربندی In-Service Software Upgrade (ISSU) روی یک Stack

این لب عملی یک In-Service Software Upgrade را در سراسر یک stack StackWise انجام می‌دهد، و ایمیج IOS هر عضو را یکی‌یکی ارتقا می‌دهد در حالی که stack در سراسر آن به فوروارد‌کردن ترافیک ادامه می‌دهد، و صفر خرابی را در مقایسه با رویکرد مخل reload استفاده‌شده در لب‌های ارتقای IOS قبلی تأیید می‌کند.

ادامه

لب عملی: پیکربندی Stacking سنتی StackWise در Catalyst

این لب عملی stacking سنتی Catalyst (StackWise) را در سراسر سه سوئیچ با استفاده از کابل‌های stack پیکربندی می‌کند، و نیازمندی تک-لایه و مجاورت فیزیکی‌اش را با جفت StackWise Virtual پوشش‌داده‌شده در لب قبلی که اجازه می‌دهد سوئیچ‌ها بسیار دورتر از هم قرار بگیرند مقایسه می‌کند.

ادامه