رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
Ansible: اتوماسیون نصب و پیکربندی سرورها بدون نیاز به Agent

Ansible: اتوماسیون نصب و پیکربندی سرورها بدون نیاز به Agent

آموزش Ansible برای اتوماسیون نصب و پیکربندی همزمان چند سرور لینوکسی، بدون نیاز به نصب Agent روی سرورهای مقصد.

Ansible: اتوماسیون نصب و پیکربندی سرورها بدون نیاز به Agent

وقتی باید یک بستهٔ نرم‌افزاری را روی ۲۰ سرور مشابه نصب کنید، اجرای دستی همان چند دستور روی هر سرور هم خسته‌کننده است و هم مستعد خطا (یادتان می‌رود یک سرور را پیکربندی کنید، یا نسخهٔ متفاوتی نصب می‌کنید). Ansible این کار را با یک فایل ساده و یک دستور، روی هر تعداد سرور که بخواهید، یکسان و خودکار انجام می‌دهد.

Ansible چیست و چرا Agent-less است؟

برخلاف برخی ابزارهای اتوماسیون که نیاز به نصب یک نرم‌افزار Agent روی هر سرور مقصد دارند، Ansible فقط از طریق SSH به سرورها متصل می‌شود و دستورات را اجرا می‌کند. این یعنی هیچ نرم‌افزار اضافه‌ای روی سرورهای مقصد لازم نیست؛ کافی است دسترسی SSH (که پیش‌تر در راه‌اندازی اولیهٔ سرور تنظیم کرده‌اید) برقرار باشد.

نصب Ansible

4 خط
sudo apt update
sudo apt install ansible -y

ansible --version
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تعریف سرورها در فایل Inventory

فایلی به نام inventory.ini که لیست سرورهای مقصد را مشخص می‌کند:

6 خط
[webservers]
web1 ansible_host=192.168.1.10 ansible_user=root
web2 ansible_host=192.168.1.11 ansible_user=root

[dbservers]
db1 ansible_host=192.168.1.20 ansible_user=root
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

برای اطمینان از برقراری اتصال، دستور زیر باید از هر سرور پاسخ pong دریافت کند:

ansible all -i inventory.ini -m ping
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

نوشتن اولین Playbook

Playbook فایلی YAML است که مراحل موردنیاز را به‌ترتیب تعریف می‌کند. نمونه‌ای برای نصب و اجرای Nginx روی همهٔ سرورهای گروه webservers:

15 خط
- name: Install and start Nginx
  hosts: webservers
  become: true
  tasks:
    - name: Install nginx
      apt:
        name: nginx
        state: present
        update_cache: true

    - name: Ensure nginx is running
      service:
        name: nginx
        state: started
        enabled: true
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

اجرای Playbook

ansible-playbook -i inventory.ini install_nginx.yml
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

Ansible به‌صورت موازی روی تمام سرورهای تعریف‌شده این Playbook را اجرا می‌کند و در پایان گزارشی از وضعیت هر سرور (تغییر انجام شد، بدون تغییر، یا خطا) نمایش می‌دهد.

مفهوم مهم: Idempotency

یکی از مهم‌ترین ویژگی‌های Ansible این است که Playbookها Idempotent هستند؛ یعنی اجرای چندبارهٔ یک Playbook روی یک سرور، نتیجهٔ یکسانی دارد و تغییری اضافه ایجاد نمی‌کند. اگر Nginx از قبل نصب باشد، اجرای مجدد Playbook فقط بررسی می‌کند و وضعیت "بدون تغییر" را گزارش می‌دهد، نه اینکه دوباره نصب را تکرار کند.

جمع‌بندی

Ansible با حذف نیاز به Agent و استفاده از فایل‌های YAML ساده و قابل‌خواندن، یکی از سریع‌ترین راه‌ها برای شروع اتوماسیون مدیریت سرور است؛ به‌خصوص برای تیم‌هایی که چند سرور مشابه (مثل چند سرور دارای Docker) را مدیریت می‌کنند و می‌خواهند از تکرار دستی دستورات خلاص شوند.

Ansible در کنار Infrastructure as Code

در حالی که Ansible برای پیکربندی نرم‌افزارها و سرویس‌های روی سرورهای موجود کاربرد دارد، برای ایجاد خود زیرساخت (سرور، شبکه، دیسک) معمولاً از ابزارهای Infrastructure as Code مانند Terraform استفاده می‌شود. آشنایی کامل با Terraform در مقاله Terraform و Infrastructure as Code آمده است.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS