سیستمهای مدیریت پیکربندی برای سادهسازی فرآیند کنترل تعداد زیادی سرور برای مدیران و تیمهای عملیات طراحی شدهاند. این سیستمها به شما اجازه میدهند که بسیاری از سیستمهای مختلف را به صورت خودکار از یک مکان مرکزی کنترل کنید.
در حالی که ابزارهای مدیریت پیکربندی محبوبی برای سیستمهای لینوکسی وجود دارد، مانند Chef و Puppet، این ابزارها اغلب پیچیدهتر از آن چیزی هستند که بسیاری از افراد میخواهند یا نیاز دارند. Ansible جایگزین مناسبی برای این گزینهها است، زیرا معماریای را ارائه میدهد که نیازی به نصب نرمافزار خاص بر روی نودها ندارد، از SSH برای اجرای وظایف خودکار استفاده میکند و فایلهای YAML را برای تعریف جزئیات آمادهسازی به کار میگیرد.
در این آموزش، درباره نحوه نصب Ansible بر روی یک سرور Ubuntu خواهیم خواند و برخی از اصول اولیه استفاده از این نرمافزار را بررسی میکنیم.
پیشنیازها
برای دنبال کردن این آموزش، شما به موارد زیر نیاز خواهید داشت:
- یک سرور Ubuntu که به عنوان کنترل Ansible عمل کند. نود کنترل Ansible ماشینی است که ما از آن برای اتصال به نودهای Ansible و کنترل آنها از طریق SSH استفاده خواهیم کرد. نود کنترل شما میتواند کامپیوتر شخصی شما یا یک سرور اختصاصی برای اجرای Ansible باشد.
- یک کاربر غیر ریشهای با دسترسی sudo.
- یک یا چند نود Ansible: نود Ansible هر ماشینی است که نود کنترل Ansible برای خودکارسازی به آن تنظیم شده است.
مرحله ۱ — نصب Ansible
برای شروع استفاده از Ansible بهعنوان وسیلهای برای مدیریت زیرساخت سرور خود، باید نرمافزار Ansible را بر روی ماشینی که به عنوان نود کنترل Ansible عمل خواهد کرد نصب کنید.
از نود کنترل خود، دستور زیر را برای اضافه کردن PPA (مخزن بسته شخصی) رسمی پروژه به لیست منابع سیستم خود اجرا کنید:
"sudo apt-add-repository ppa:ansible/ansible"
هنگامی که برای تأیید اضافه شدن PPA درخواست شد، ENTER را فشار دهید.
سپس، لیست بستههای سیستم خود را بهروزرسانی کنید تا از بستههای موجود در PPA جدید آگاه شود:
"sudo apt update"
بعد از این بهروزرسانی، میتوانید نرمافزار Ansible را با دستور زیر نصب کنید:
"sudo apt install ansible"
اکنون نود کنترل Ansible شما تمام نرمافزارهای مورد نیاز برای مدیریت نودها را دارد. در مرحله بعد، ما نحوه اضافه کردن نودها به فایل فهرست نود کنترل را بررسی خواهیم کرد تا بتواند آنها را کنترل کند.
مرحله ۲ — تنظیم فایل فهرست
فایل فهرست شامل اطلاعاتی درباره نودهایی است که با Ansible مدیریت خواهید کرد. شما میتوانید از یک تا چند صد سرور را در فایل فهرست خود وارد کنید، و نودها را به گروهها و زیرگروهها سازماندهی کنید. فایل فهرست همچنین اغلب برای تنظیم متغیرهایی که فقط برای نودها یا گروههای خاص معتبر هستند، استفاده میشود تا در داخل playbookها و templateها به کار رود. برخی از متغیرها همچنین میتوانند بر نحوه اجرای playbook تأثیر بگذارند، مانند متغیر "ansible_python_interpreter" که در ادامه خواهیم دید.
برای ویرایش محتوای فایل فهرست پیشفرض Ansible، فایل /etc/ansible/hosts را با استفاده از ویرایشگر متن مورد نظر خود، بر روی نود کنترل Ansible باز کنید:
"sudo nano /etc/ansible/hosts"
فایل فهرست پیشفرض که با نصب Ansible ارائه میشود، شامل تعدادی مثال است که میتوانید از آنها بهعنوان مرجع برای تنظیم فهرست خود استفاده کنید. مثال زیر گروهی به نام [servers] با سه سرور مختلف تعریف میکند که هرکدام با یک نام مستعار خاص شناسایی شدهاند: server1، server2، و server3. اطمینان حاصل کنید که IPهای مشخصشده را با آدرسهای IP نودهای Ansible خود جایگزین کنید:
/etc/ansible/hosts
[servers]
=ip ansible_user= ansible_password
[all:vars]
ansible_python_interpreter=/usr/bin/python3

زیرگروه [all:vars] پارامتر ansible_python_interpreter را برای نودهای موجود در این فهرست تنظیم میکند. این پارامتر اطمینان میدهد که سرور راه دور به جای /usr/bin/python (پایتون ۲.۷)، از /usr/bin/python3 (پایتون ۳) استفاده میکند که در نسخههای اخیر اوبونتو موجود نیست.
پس از اتمام، فایل را ذخیره و ببندید. برای این کار، کلیدهای CTRL+X را فشار داده، سپس Y را تایپ کرده و ENTER را فشار دهید.
هر زمان که خواستید فهرست خود را بررسی کنید، میتوانید دستور زیر را اجرا کنید:
ansible-inventory --list -y
شما خروجیای مشابه زیر مشاهده خواهید کرد، اما شامل زیرساخت سرور خودتان مطابق با فایل فهرست خواهد بود:
Output
all:
children:
servers:
hosts:
server1:
ansible_host: 203.0.113.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 203.0.113.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 203.0.113.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}

حالا که فایل فهرست خود را تنظیم کردهاید، تمام موارد مورد نیاز برای آزمایش اتصال به نودهای Ansible خود را دارید.
مرحله ۳ — آزمایش اتصال
بعد از تنظیم فایل فهرست برای اضافه کردن سرورها، زمان آن است که بررسی کنید آیا Ansible میتواند به این سرورها متصل شود و دستورات را از طریق SSH اجرا کند.
برای این راهنما، ما از حساب کاربری root اوبونتو استفاده خواهیم کرد، زیرا معمولاً تنها حسابی است که بهطور پیشفرض روی سرورهای تازهساختهشده وجود دارد. اگر نودهای Ansible شما از قبل یک کاربر معمولی با دسترسی sudo داشته باشند، بهتر است از آن حساب استفاده کنید.
میتوانید از آرگومان -u برای مشخص کردن کاربر سیستم راه دور استفاده کنید. در صورتی که ارائه نشود، Ansible تلاش خواهد کرد بهعنوان کاربر فعلی سیستم شما روی نود کنترل متصل شود.
از دستگاه محلی خود یا نود کنترل Ansible، دستور زیر را اجرا کنید:
ansible all -m ping -u root
این دستور از ماژول داخلی ping Ansible برای اجرای یک آزمایش اتصال بر روی تمام نودها از فایل فهرست پیشفرض استفاده میکند و بهعنوان کاربر root متصل میشود. ماژول ping موارد زیر را بررسی میکند:
- آیا نودها در دسترس هستند؟
- آیا اعتبارنامههای SSH معتبر دارید؟
- آیا نودها میتوانند ماژولهای Ansible را با استفاده از Python اجرا کنند؟
شما باید خروجیای مشابه زیر دریافت کنید:
Output
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}

اگر این اولین باری است که به این سرورها از طریق SSH متصل میشوید، از شما خواسته میشود تا صحت سرورهایی که به آنها از طریق Ansible متصل میشوید تأیید کنید. هنگامی که درخواست شد، yes را تایپ کرده و ENTER را فشار دهید.
زمانی که پاسخ “pong” از یک نود دریافت کنید، به این معناست که آماده اجرای دستورات و playbookهای Ansible بر روی آن سرور هستید.
