وبلاگ شبکه PBIT – Samer Saleem: یکی دیگر از مراحل اتوماسیون شبکه است

Ansible چیست؟
Ansible یک ابزار اتوماسیون شبکه است که با YAML برای ارسال یا دریافت تنظیمات از یک دستگاه شبکه یا گروهی از دستگاه ها یا میزبان ها کار می کند.
Ansible با SSH کار می کند، به این معنی که برای کار کردن کدهای Ansible باید NETMIKO یا PARAMIKO را همراه با پایتون خود نصب کنید.
چگونه Ansible را نصب کنیم؟
فقط با تایپ این دستور در ترمینال خود (لینوکس یا مک) نصب $pip امکان پذیر نیست
سپس می توانید نسخه نصب شده خود را با استفاده از دستور بررسی کنید $ansible –نسخه
به صورت زیر:
از آنجایی که قبلاً اشاره کردیم که Ansible با YAML به عنوان یک زبان مدلسازی داده کار میکند، این بدان معناست که ما باید YAML را نیز نصب کنیم، میتوانید از طریق زیر نصب کنید:
$pip PyYAML را نصب کنید
پیوند زیر اسناد YAML بیشتری را نشان می دهد:
https://pypi.org/project/PyYAML/
توجه: ممکن است هنگام تلاش برای اجرای کد Ansible به دلیل کلیدهای SSH بین رایانه و شبکه/میزبانی که میخواهید به آن متصل شوید با مشکلی روبرو شوید و این خطای مشابه صفحه زیر را به همراه خواهد داشت:

راه حلی برای این کار با اضافه کردن یک قسمت از پیکربندی در فایل ansible.cfg مانند شکل زیر وجود دارد:

می توانید یک فایل را باز کنید و آن را با نام ansible.cfg با nano نامگذاری کنید
$nano ansible.cfg
سپس اضافه کنید
[defaults]
host_key_checking = نادرست
فایل را ذخیره کنید و کد ansible خود را دوباره اجرا کنید.
خوب، اکنون به نوشتن کدهای ساده Ansible برای get_facts از یک دستگاه سیسکو IOS می پردازیم.
1. برای انجام این کار باید یک hostlist/host پیکربندی شده باشد که در همان دایرکتوری ایجاد خواهد شد که من کد انتساب خود را ایجاد می کنم که از آن خواهد بود:
samer@Samers-MacBook-Pro ansibleproject % pwd
/Users/samer/Documents/ansibleproject

[cisco] گروه دستگاه/میزبان است، به این معنی که میتوانید میزبانهای خود را در زیر فهرست کنید، درست همانطور که برای آزمایش خود در اینجا (10.211.10.36) فهرست کردم.
[cisco:vars] همانطور که می بینید اطلاعات دیگری مانند نام کاربری و رمز عبور سیستم عامل و دستگاه/میزبان در گروه سیسکو در بالا ذکر شده است.
خوب، حالا بیایید کد Ansible را ایجاد کنیم، که با ایجاد فایلی که من آن را به عنوان فایل با فرمت test.yml (YAML) نامگذاری کردم، خواهد بود.

همانطور که می بینید فایل با (—) شروع می شود
سپس (-) نام، گروه میزبان، نوع اتصال (SSH)، سپس وظایفی که ansible روی هاست اجرا می شود (وظایف:)
توجه: فضاهای سفید واقعاً مهم هستند و اگر فاصله درستی نداشته باشید در اجرای کدها با مشکل مواجه خواهید شد.
مثالی از خطای ناشی از یک فضای از دست رفته:

بسیار خوب، پس وظیفه قابل انجام ما دریافت نسخه نرم افزاری هاست (10.211.10.36) خواهد بود و این کار با آخرین کار به نام “VIEW OS VERSION” انجام می شود که دارای متغیر: ansible_net_version
حالا چطوری کد رو اجرا کنم
$ansible-playbook -i میزبان testing.yml است
البته ترمینال من قبلا در همان دایرکتوری است، اگر مسیر شما در همان دایرکتوری نیست، باید مسیر کامل فایل ها را اضافه کنید.
(-i) در اینجا مخفف inventory است که به معنای بازی در برابر موجودی در میزبان مسیر است و فایل ansible testing.yml است.
ansible هاست ها/گروه ها را در فایلی به نام host بررسی می کند و از اطلاعات ورود به سیستم استفاده می کند [var] برای ورود به هاست از طریق SSH (NETMIKO/PARAMIKO).
پس از اصلاح هر گونه مشکل فضای خالی و اجرای کد، باید صفحه خروجی زیر را دریافت کنید:

صفحه سبز! OK=1 و ناموفق=0.
توجه داشته باشید که می توانید از یک دستور ad-hoc ansible برای فشار دادن دستورات سریع و انجام سریع کارها در یک میزبان واحد با استفاده از فرمت زیر استفاده کنید:
$ansible 10.211.10.36 -m خام -a “show version” -u samer -k
که در آن k یک اعلان رمز عبور است.
این مقدمه من برای Ansible برای اتوماسیون شبکه است.
منابع خوب را می توان در اینجا یافت:
https://developer.cisco.com/startnow/
https://docs.ansible.com/ansible/latest/collections/cisco/ios/ios_command_module.html#examples
https://learningnetwork.cisco.com/s/question/0D53i00000mt0ZGCAY/mastering-ansible-for-the-devnet-associate-exam-derek-winchester
امیدوارم این مفید بوده باشد.
سامر آر.سالم



