
مقدمه
سیستمهای مدیریت پیکربندی (Configuration Management) برای سادهسازی فرآیند کنترل تعداد زیادی سرور، طراحی شدهاند تا به مدیران سیستم و تیمهای عملیاتی (Ops) کمک کنند. این سیستمها به شما اجازه میدهند تا سیستمهای مختلفی را به صورت خودکار از یک مکان مرکزی کنترل کنید.
اگرچه ابزارهای مدیریت پیکربندی محبوب زیادی برای سیستمهای لینوکسی وجود دارد (مانند Chef و Puppet)، اما این ابزارها اغلب پیچیدگیهایی دارند که بسیاری از افراد به آن نیاز ندارند. Ansible یک جایگزین عالی برای این گزینهها است، زیرا معماریای را ارائه میدهد که نیازی به نصب نرمافزار خاصی روی نودها (سرورهای مقصد) ندارد و از پروتکل SSH برای اجرای وظایف خودکارسازی و از فایلهای YAML برای تعریف جزئیات استفاده میکند.
در این راهنما، نحوه نصب Ansible روی یک سرور اوبونتو 24.04 و اصول اولیه استفاده از این نرمافزار را بررسی خواهیم کرد.
پیشنیازها
برای دنبال کردن این آموزش، به موارد زیر نیاز دارید:
- یک نود کنترل (Control Node) برای Ansible: این ماشینی است که شما برای اتصال و کنترل هاستهای Ansible از طریق SSH از آن استفاده میکنید. نود کنترل شما میتواند ماشین محلی شما یا یک سرور اختصاصی در پارمین کلود (Parmin Cloud) باشد. این راهنما فرض میکند که نود کنترل شما یک سیستم اوبونتو 24.04 است. مطمئن شوید که این نود دارای موارد زیر است:
- یک کاربر غیر روت (non-root) با دسترسی sudo.
- یک جفت کلید SSH (SSH keypair) مرتبط با این کاربر.
- یک یا چند هاست (Host) Ansible: هاست، ماشینی است که نود کنترل شما برای خودکارسازی روی آن پیکربندی شده است. این راهنما فرض میکند که هاستهای شما سرورهای ریموت اوبونتو هستند. مطمئن شوید که هر هاست دارای موارد زیر است:
- کلید عمومی SSH مربوط به نود کنترل Ansible، به فایل
authorized_keysیک کاربر سیستمی اضافه شده باشد. این کاربر میتواند کاربر root یا یک کاربر معمولی با دسترسی sudo باشد.
مرحله ۱ — نصب Ansible
برای شروع استفاده از Ansible به عنوان ابزاری برای مدیریت زیرساخت سرورهای خود، ابتدا باید نرمافزار Ansible را روی ماشینی که قرار است نود کنترل باشد نصب کنید.
از نود کنترل خود، دستور زیر را برای اضافه کردن مخزن رسمی PPA پروژه به لیست منابع سیستم خود اجرا کنید:
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
هنگامی که برای تایید اضافه شدن PPA از شما سوال شد، کلید ENTER را فشار دهید.
سپس، ایندکس پکیجهای سیستم خود را بهروزرسانی کنید تا از پکیجهای موجود در مخزن جدید مطلع شود:
sudo apt update
پس از این بهروزرسانی، میتوانید نرمافزار Ansible را نصب کنید:
sudo apt install ansible
نود کنترل Ansible شما اکنون تمام نرمافزارهای مورد نیاز برای مدیریت هاستهای خود را دارد. در مرحله بعد، نحوه اضافه کردن هاستهای خود به فایل موجودی (Inventory) نود کنترل را بررسی خواهیم کرد تا بتواند آنها را کنترل کند.
مرحله ۲ — تنظیم فایل Inventory
فایل Inventory حاوی اطلاعاتی درباره هاستهایی است که با Ansible مدیریت خواهید کرد. میتوانید از یک تا چند صد سرور را در این فایل قرار دهید و هاستها را در گروهها و زیرگروهها سازماندهی کنید.
برای ویرایش محتوای فایل Inventory پیشفرض Ansible، فایل /etc/ansible/hosts را با ویرایشگر متن دلخواه خود باز کنید:
sudo nano /etc/ansible/hosts
نکته: اگرچه Ansible معمولاً یک فایل Inventory پیشفرض در مسیر /etc/ansible/hosts ایجاد میکند، اما شما میتوانید فایلهای Inventory را در هر مکانی که مناسب نیازهای شماست ایجاد کنید. در این صورت، باید هنگام اجرای دستورات Ansible، مسیر فایل سفارشی خود را با پارامتر -i مشخص کنید. استفاده از فایلهای Inventory اختصاصی برای هر پروژه، یک روش عالی برای به حداقل رساندن خطر اجرای اشتباه Playbook روی گروه اشتباهی از سرورهاست.
فایل پیشفرض شامل چندین نمونه است که میتوانید از آنها به عنوان مرجع استفاده کنید. مثال زیر یک گروه به نام [servers] با سه سرور مختلف را تعریف میکند که هر کدام با یک نام مستعار (alias) مشخص شدهاند. حتماً آدرسهای IP هایلایت شده را با آدرسهای IP هاستهای Ansible خود جایگزین کنید:
/etc/ansible/hosts
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113
[all:vars]
ansible_python_interpreter=/usr/bin/python3
زیرگروه [all:vars] پارامتر ansible_python_interpreter را تنظیم میکند که برای تمام هاستهای موجود در این فایل معتبر خواهد بود. این پارامتر مطمئن میشود که سرور ریموت از اجرایی پایتون 3 (/usr/bin/python3) استفاده میکند.
هنگامی که کارتان تمام شد، فایل را ذخیره کرده و ببندید.
هر زمان که بخواهید موجودی خود را بررسی کنید، میتوانید دستور زیر را اجرا کنید:
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: {}
اکنون که فایل Inventory را پیکربندی کردید، تمام چیزهایی که برای تست اتصال به هاستهای Ansible نیاز دارید را در اختیار دارید.
مرحله ۳ — تست اتصال
پس از تنظیم فایل Inventory، زمان آن است که بررسی کنید آیا Ansible میتواند از طریق SSH به این سرورها متصل شده و دستورات را اجرا کند یا خیر.
در این راهنما، از حساب کاربری root استفاده میکنیم، زیرا این حساب معمولاً تنها حسابی است که به طور پیشفرض روی سرورهای تازه ایجاد شده (مانند سرورهای پارمین کلود) در دسترس است. اگر هاستهای شما کاربر sudo دارند، پیشنهاد میشود از همان استفاده کنید.
میتوانید از آرگومان -u برای مشخص کردن کاربر سیستم ریموت استفاده کنید. از نود کنترل خود دستور زیر را اجرا کنید:
ansible all -m ping -u root
این دستور از ماژول داخلی ping در Ansible برای تست اتصال روی تمام نودها استفاده میکند. ماژول ping موارد زیر را تست میکند:
- آیا هاستها قابل دسترسی هستند یا خیر.
- آیا اعتبارنامههای SSH معتبری دارید.
- آیا هاستها میتوانند ماژولهای Ansible را با استفاده از پایتون اجرا کنند.
باید خروجی مشابه زیر دریافت کنید:
Output
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
اگر این اولین باری است که از طریق SSH به این سرورها متصل میشوید، از شما خواسته میشود اصالت هاستها را تایید کنید. هنگام درخواست، yes را تایپ کرده و ENTER را بزنید.
پس از دریافت پاسخ "pong" از یک هاست، به این معنی است که شما آماده اجرای دستورات و Playbook های Ansible روی آن سرور هستید.
مرحله ۴ — اجرای دستورات Ad-Hoc (اختیاری)
پس از تایید اینکه نود کنترل Ansible میتواند با هاستهای شما ارتباط برقرار کند، میتوانید اجرای دستورات Ad-Hoc (تکبار) را شروع کنید.
هر دستوری که معمولاً از طریق SSH روی یک سرور ریموت اجرا میکنید، میتواند با Ansible روی سرورهای مشخص شده در فایل Inventory اجرا شود. به عنوان مثال، میتوانید میزان استفاده از دیسک را روی همه سرورها بررسی کنید:
ansible all -a "df -h" -u root
خروجی وضعیت دیسک سرورهای شما را نشان میدهد.
همچنین میتوانید ماژولهای Ansible را از طریق دستورات Ad-Hoc اجرا کنید. به عنوان مثال، در اینجا نحوه استفاده از ماژول apt برای نصب آخرین نسخه vim روی تمام سرورها آورده شده است:
ansible all -m apt -a "name=vim state=latest" -u root
شما میتوانید هنگام اجرای دستورات، هاستهای فردی و همچنین گروهها را هدف قرار دهید. به عنوان مثال، به این صورت میتوانید زمان قطعی (uptime) هر هاست در گروه servers را بررسی کنید:
ansible servers -a "uptime" -u root
همچنین میتوانیم با جدا کردن نام آنها با علامت دو نقطه (:)، چندین هاست را مشخص کنیم:
ansible server1:server2 -m ping -u root
نتیجهگیری
در این راهنما، شما موفق به نصب Ansible شدید و یک فایل Inventory تنظیم کردید تا بتوانید دستورات Ad-Hoc را از یک نود کنترل مرکزی اجرا کنید.
پس از تایید اینکه میتوانید از یک ماشین کنترلر مرکزی به زیرساخت خود متصل شده و آن را کنترل کنید، میتوانید هر دستور یا Playbook دیگری را که میخواهید روی آن هاستها اجرا کنید. اگر قصد دارید فرآیندهای پیچیدهتری را خودکارسازی کنید، میتوانید Playbook هایی بنویسید که تنظیمات سرورها را به طور کامل مدیریت کنند.
از همراهی شما با پارمین کلود سپاسگزاریم.



