ویرگول
ورودثبت نام
مجتبی پاکزاد
مجتبی پاکزادتکنیکال تیم لید شرکت داده پردازان آبشار هستم. برای خوندن بیشتر تجربیات و مطالعاتم من رو در باورژن baversion.com دنبال کنید.
مجتبی پاکزاد
مجتبی پاکزاد
خواندن ۶ دقیقه·۶ ساعت پیش

انسیبل چیست و چرا باید به عنوان یک لاراول‌کار بلد باشیم؟

اگر چند سالی با لاراول کار کرده باشید، احتمالا بارها با این سناریو روبه‌رو شده‌اید:

  • یک پروژه روی لپ‌تاپ شما بدون مشکل اجرا می‌شود اما روی سرور با خطا مواجه می‌شود.

  • برای راه‌اندازی یک سرور جدید باید ده‌ها دستور را به صورت دستی اجرا کنید.

  • هنگام استقرار نسخه جدید پروژه، فراموش می‌کنید یکی از مراحل مهم را انجام دهید.

  • چند سرور دارید و اعمال یک تغییر ساده روی همه آن‌ها زمان زیادی می‌گیرد.

  • مهاجرت به سرور جدید به یک کابوس تبدیل می‌شود.

در ابتدای مسیر برنامه‌نویسی، این مشکلات طبیعی هستند. اما هرچه تعداد پروژه‌ها، سرورها و مشتریان بیشتر شود، مدیریت زیرساخت به یکی از چالش‌های اصلی تبدیل خواهد شد.

اینجاست که ابزارهای Infrastructure as Code یا «زیرساخت به عنوان کد» وارد میدان می‌شوند و یکی از محبوب‌ترین آن‌ها Ansible است.

انسیبل ابزاری است که به شما اجازه می‌دهد سرورها، سرویس‌ها و تنظیمات زیرساخت را مانند کد مدیریت کنید. به جای اجرای دستی صدها دستور، تنها کافی است چند فایل متنی بنویسید تا تمام فرآیندها به صورت خودکار انجام شوند.

در این مقاله بررسی می‌کنیم که انسیبل چیست، چگونه کار می‌کند، چه مزایایی دارد و چرا هر توسعه‌دهنده لاراول باید حداقل با مفاهیم آن آشنا باشد.


Ansible چیست؟

انسیبل یک ابزار متن‌باز برای اتوماسیون زیرساخت، مدیریت پیکربندی سرورها، استقرار نرم‌افزار و هماهنگی سرویس‌ها است.

این ابزار توسط Michael DeHaan در سال ۲۰۱۲ توسعه داده شد و بعدها توسط شرکت IBM و Red Hat به یکی از مهم‌ترین ابزارهای دوآپس تبدیل شد.

به زبان ساده، انسیبل به شما اجازه می‌دهد:

  • سرور جدید راه‌اندازی کنید.

  • نرم‌افزارها را نصب کنید.

  • تنظیمات سیستم را اعمال کنید.

  • پروژه‌ها را دپلوی کنید.

  • سرویس‌ها را مدیریت کنید.

  • عملیات تکراری را خودکار کنید.

همه این موارد تنها با چند فایل YAML انجام می‌شود.


چرا انسیبل محبوب شده است؟

بسیاری از ابزارهای قدیمی مدیریت سرور پیچیدگی زیادی داشتند.

برای مثال:

  • Puppet

  • Chef

  • SaltStack

این ابزارها نیاز به Agent داشتند و راه‌اندازی آن‌ها نسبتا دشوار بود.

اما انسیبل چند ویژگی مهم داشت:

بدون Agent

نیازی نیست روی سرور مقصد نرم‌افزار خاصی نصب کنید.

تنها چیزی که لازم است SSH و Python است.

به همین دلیل راه‌اندازی آن بسیار ساده‌تر است.


یادگیری آسان

پیکربندی‌های انسیبل با YAML نوشته می‌شوند.

نمونه:

- name: Install Nginx apt: name: nginx state: present

حتی اگر قبلا با انسیبل کار نکرده باشید تقریبا متوجه می‌شوید چه اتفاقی در حال رخ دادن است.


متن‌باز

کاملا رایگان است و جامعه بزرگی از توسعه‌دهندگان از آن استفاده می‌کنند.


قابلیت توسعه بالا

هزاران ماژول آماده برای:

  • Ubuntu

  • Debian

  • CentOS

  • Docker

  • Kubernetes

  • AWS

  • DigitalOcean

  • Cloudflare

  • Git

وجود دارد.


Infrastructure as Code چیست؟

قبل از ادامه باید با مفهوم Infrastructure as Code یا IaC آشنا شویم.

فرض کنید یک سرور لاراول دارید.

برای آماده‌سازی آن باید:

apt update apt install nginx apt install php apt install mysql apt install redis apt install supervisor

را اجرا کنید.

سپس فایل‌های تنظیمات مختلف را ویرایش کنید.

اگر فردا سرور جدیدی بخواهید چه می‌شود؟

باید دوباره تمام مراحل را انجام دهید.

اما در IaC شما همه چیز را به صورت کد تعریف می‌کنید.

مثلاً:

- install nginx - install php - install mysql - install redis

و هر زمان لازم بود همان کد را اجرا می‌کنید.

نتیجه:

  • سرعت بیشتر

  • خطای کمتر

  • قابلیت تکرار

  • مستندسازی بهتر


انسیبل چگونه کار می‌کند؟

معماری انسیبل بسیار ساده است.

یک ماشین کنترل‌کننده داریم:

Control Node

که معمولا لپ‌تاپ یا سرور CI/CD شماست.

این ماشین از طریق SSH به سرورهای مقصد متصل می‌شود.

Ansible | +--> Server 1 +--> Server 2 +--> Server 3

سپس دستورات مورد نظر را روی همه سرورها اجرا می‌کند.


مفاهیم اصلی در انسیبل

Inventory

اینونتوری لیست سرورهایی است که می‌خواهید مدیریت کنید.

مثال:

[web] 192.168.1.10 192.168.1.11 [db] 192.168.1.20

Playbook

مهم‌ترین بخش انسیبل پلی بوک است.

پلی بوک مجموعه‌ای از تسک‌ها است.

مثال:

- hosts: web tasks: - name: Install Nginx apt: name: nginx state: present

Task

هر عملیات مستقل یک تسک است.

مثلا:

  • نصب Nginx

  • ساخت پوشه

  • کپی فایل

  • ریستارت سرویس


Role

وقتی پروژه بزرگ می‌شود Playbookها به Role تقسیم می‌شوند.

مثلا:

roles/ nginx/ php/ mysql/ redis/

این ساختار پروژه را تمیزتر می‌کند.


نصب انسیبل

روی اوبونتو:

sudo apt update sudo apt install ansible

بررسی نسخه:

ansible --version

اولین دستور انسیبل

فرض کنید یک سرور دارید.

ansible all -m ping

اگر پاسخ زیر را دریافت کنید:

pong

اتصال موفق بوده است.


کاربرد انسیبل برای توسعه‌دهندگان لاراول

اکنون به بخش مهم مقاله می‌رسیم.

چرا یک توسعه دهنده لاراول باید انسیبل یاد بگیرد؟


1. راه‌اندازی خودکار سرور لاراول

تقریبا تمام پروژه‌های لاراول نیاز دارند:

  • Nginx

  • PHP

  • Composer

  • Redis

  • MySQL

  • Supervisor

نصب شوند.

به جای انجام دستی:

- install php - install composer - install nginx

همه چیز را خودکار می‌کنید.


2. استقرار خودکار پروژه

به جای:

git pull composer install php artisan migrate php artisan optimize php artisan queue:restart

می‌توانید همه مراحل را داخل پلی بوک قرار دهید.


نمونه:

- name: Pull latest code git: repo: repo_url dest: /var/www/project - name: Run migrations command: php artisan migrate --force

3. مدیریت چند سرور

فرض کنید:

  • Production

  • Staging

  • Testing

دارید.

انسیبل می‌تواند همزمان روی همه آن‌ها عملیات انجام دهد.


4. مدیریت Queue Workerها

در لاراول معمولا از Supervisor استفاده می‌شود.

اگر بخواهید Queue Workerها را روی چند سرور مدیریت کنید، انسیبل بسیار مفید است.


5. نصب Redis

نمونه:

- name: Install Redis apt: name: redis-server state: present

6. نصب و پیکربندی Nginx

به راحتی می‌توانید فایل‌های کانفیگ را روی چندین سرور کپی کنید.


7. ساخت محیط Staging

اگر بخواهید محیط آزمایشی مشابه Production داشته باشید، انسیبل یکی از بهترین گزینه‌هاست.


نمونه Playbook برای لاراول

- hosts: web become: yes tasks: - name: Install Nginx apt: name: nginx state: present - name: Install PHP apt: name: php8.5-fpm state: present - name: Install Composer apt: name: composer state: present

این پلی بوک تنها با یک دستور اجرا می‌شود:

ansible-playbook deploy.yml

انسیبل و داکر

بسیاری تصور می‌کنند اگر داکر یاد بگیرند دیگر نیازی به انسیبل ندارند.

این تصور اشتباه است.

داکر و انسیبل رقیب نیستند.


داکر وظیفه دارد:

  • محیط اجرای برنامه را مدیریت کند.

اما انسیبل وظیفه دارد:

  • سرور را آماده کند.

  • داکر را نصب کند.

  • کانتینرها را مدیریت کند.

  • فایل‌های تنظیمات را ایجاد کند.

در بسیاری از شرکت‌ها این دو ابزار در کنار هم استفاده می‌شوند.


انسیبل و Laravel Forge

بسیاری از توسعه‌دهندگان لاراول مخصوصا در خارج از ایران از Forge استفاده می‌کنند.

Laravel Forge کار راه‌اندازی سرور را بسیار ساده می‌کند.

اما باید بدانید Forge در پشت صحنه بسیاری از کارهای خود را با اسکریپت‌های اتوماسیون انجام می‌دهد.

اگر انسیبل را بلد باشید:

  • کنترل بیشتری دارید.

  • وابسته به سرویس خاصی نیستید.

  • می‌توانید زیرساخت‌های پیچیده‌تر ایجاد کنید.


Ansible و CI/CD

یکی از کاربردهای مهم انسیبل اتصال به سیستم‌های CI/CD است.

برای مثال:

  • GitHub Actions

  • GitLab CI

  • Jenkins

پس از Push شدن کد:

Build ↓ Test ↓ Deploy ↓ Restart Services

تمام مراحل می‌توانند توسط انسیبل اجرا شوند.


مزایای استفاده از انسیبل

کاهش خطای انسانی

بزرگ‌ترین مزیت انسیبل حذف عملیات دستی است.

مستندسازی خودکار

پلی بوک‌ها به نوعی مستندات زیرساخت هستند.

صرفه‌جویی در زمان

راه‌اندازی سرور از چند ساعت به چند دقیقه کاهش پیدا می‌کند.

تکرارپذیری

هر بار نتیجه یکسانی دریافت می‌کنید.

مقیاس‌پذیری

فرقی ندارد:

  • ۱ سرور

  • ۱۰ سرور

  • ۱۰۰ سرور

داشته باشید.


معایب انسیبل

هیچ ابزاری کامل نیست.

برخی محدودیت‌های انسیبل:

نیاز به یادگیری مفاهیم دوآپس

اگر تاکنون تنها روی کدنویسی تمرکز کرده باشید، باید با مفاهیم جدیدی آشنا شوید.

مدیریت پلی بوک‌های بزرگ

در پروژه‌های بسیار بزرگ ساختاردهی اهمیت زیادی پیدا می‌کند.

سرعت کمتر نسبت به برخی رقبا

در مقیاس‌های بسیار بزرگ، ابزارهایی مانند SaltStack ممکن است سریع‌تر باشند.


مسیر یادگیری انسیبل برای لاراول‌کارها

اگر توسعه‌دهنده لاراول هستید مسیر زیر منطقی است:

مرحله اول:

  • لینوگس

  • SSH

  • Bash

مرحله دوم:

  • YAML

  • مفاهیم پایه انسیبل

مرحله سوم:

  • پلی بوک

  • Variables

  • Templates

مرحله چهارم:

  • Roles

  • Collections

مرحله پنجم:

  • داکر

  • CI/CD

  • کوبرنتیز


آیا یادگیری انسیبل برای استخدام مفید است؟

پاسخ کوتاه:

بله.

امروزه بسیاری از شرکت‌ها به دنبال توسعه‌دهندگانی هستند که علاوه بر برنامه‌نویسی، درک مناسبی از زیرساخت داشته باشند.

وقتی در رزومه خود بنویسید:

  • لاراول

  • داکر

  • انسیبل

  • لینوکس

نسبت به بسیاری از توسعه‌دهندگان مزیت رقابتی خواهید داشت.

خصوصا برای موقعیت‌های:

  • لاراول دولوپر

  • سنیور بک اند دولوپر

  • دوآپس انجینیر

  • پلتفرم انجینیر


جمع‌بندی

انسیبل یکی از مهم‌ترین ابزارهای دنیای دوآپس است که امکان مدیریت زیرساخت به صورت کد را فراهم می‌کند. این ابزار با استفاده از فایل‌های ساده YAML به شما اجازه می‌دهد نصب نرم‌افزارها، پیکربندی سرورها، استقرار پروژه‌ها و مدیریت سرویس‌ها را به شکل خودکار انجام دهید.

برای یک توسعه‌دهنده لاراول، یادگیری انسیبل تنها به معنای یادگیری یک ابزار جدید نیست، بلکه قدمی مهم در جهت تبدیل شدن به یک مهندس نرم‌افزار حرفه‌ای‌تر است. زمانی که بتوانید علاوه بر نوشتن کد، زیرساخت اجرای آن را نیز مدیریت کنید، وابستگی شما به افراد دیگر کمتر می‌شود و درک عمیق‌تری از چرخه کامل توسعه و استقرار نرم‌افزار به دست می‌آورید.

اگر امروز با لاراول کار می‌کنید و قصد دارید در آینده به سطح سنیور برسید، انسیبل یکی از ارزشمندترین مهارت‌هایی است که می‌توانید به جعبه ابزار فنی خود اضافه کنید.

ci cdانسیبلansibleلاراولدوآپس
۲
۰
مجتبی پاکزاد
مجتبی پاکزاد
تکنیکال تیم لید شرکت داده پردازان آبشار هستم. برای خوندن بیشتر تجربیات و مطالعاتم من رو در باورژن baversion.com دنبال کنید.
شاید از این پست‌ها خوشتان بیاید