آنچه در این مقاله میخوانید
آموزش ساخت و اجرای اولین Playbook در Ansible
۴ اردیبهشت ۱۴۰۴
Playbook در Ansible یک فایل YAML میباشد که با آن میتوانید دستورالعملهای مختلفی را بهصورت خودکار انجام دهید؛ مثلا نصب پکیجها، راهاندازی یک وبسرور یا استقرار یک پروژه. هر Playbook شامل یک یا چند Play است که هر کدام شامل یک سری از Taskها هستند. کار با Ansible بدون پلیبوکها تقریبا غیرممکن است. در این آموزش از وبلاگ لیارا قصد داریم اولین Playbook را در انسیبل ایجاد و اجرا کنیم. تا پایان همراه ما باشید.
در ادامه بخوانید:
- Playbook در Ansible چیست؟
- ایجاد دایرکتوری پروژه
- ساخت فایل اینونتوری (Inventory)
- ایجاد فایل Playbook
- اجرای Playbook
- جمعبندی
- سوالات متداول

Playbook در Ansible چیست؟
همانطور که پیشتر گفتیم، Playbookها در Ansible فایلهای با فرمت YAMLهستند که داخل آنها لیستی از Playها نوشته میشود. در واقع این فایلها در انسیبل، شبیه به اسکلتبندی برای تنظیمات و دستورات هستند.
برای آشنایی کامل با انسیبل و ویژگیهای آن، مقاله زیر را مطالعه کنید.
Ansible چیست؟
اجزای هر playbook
در ادامه به معرفی هر یک از اجزای کاربردی هر پلیبوک خواهیم پرداخت.
hosts: all
فایل Playbook با مشخص کردن اینکه تنظیمات باید روی تمامی هاستها (hosts: all) اعمال شود، آغاز میشود. البته میتوان این مقدار را تغییر داد و عملیات را تنها روی هاستها یا گروههای خاصی انجام داد.
become: true
این گزینه به Ansible میگوید که برای اجرای همه دستورات از دسترسی روت (sudo) استفاده کند. البته میشود این تنظیم را فقط برای هر task خاص اعمال کرد تا دسترسیهای مختلفی برای وظایف متفاوت در نظر گرفته شود.
tasks
در این بخش وظایف (tasks) تعریف میشوند. ابتدا بستههای apt
بهروزرسانی میشود و در وظیفه بعدی، بسته apache2
نصب میشود. در وظیفه سوم، از ماژول file
برای ساخت دایرکتوری در مسیر ریشهای که برای سرویسدهی وب استفاده میکنیم، استفاده میشود. این ماژول برای مدیریت فایلها و دایرکتوریها در سرور بهکار میرود. وظیفه چهارم از ماژول copy
برای کپی کردن یک فایل از سیستم محلی به سرور استفاده میکند. در اینجا یک فایل HTML ساده را برای سرویسدهی وب Apache کپی میکنیم.
vars
در این بخش متغیرهایی مانند doc_root
تعریف میشود که قبلاً در tasks استفاده کردهایم. در این قسمت میتوان متغیرهای دیگری هم تعریف کرد تا در طول Playbook بهکار برده شوند و به اجرای بهتر وظایف کمک کنند.
handlers
در انتها، بخش handlers
وجود دارد که مسئول مدیریت سرویسهاست. در اینجا یک کنترلکننده برای راهاندازی مجدد Apache تعریف شده تا تغییرات در تنظیمات Apache اعمال شوند و سرور وب بهدرستی کار کند.
مثال:
---
- hosts: all
tasks:
- name: Print a message
debug:
msg: "Hello from Ansible"
ایجاد دایرکتوری پروژه
قبل از شروع، باید برای تمرینات Ansible خود یک فایل بسازید:
cd ~
mkdir ansible-practice
cd ansible-practice
با اینکار، فولدری بهنام ansible-practice
ایجاد کرده و وارد آن میشوید تا تمام فایلهای مربوط به Playbookهای خود را در آن نگهدارید.
برای آشنایی کامل با نحوه راهاندازی Docker Compose از طریق Ansible در اوبونتو، مقاله زیر را از دست ندهید.
راهاندازی Docker Compose از طریق Ansible
ساخت فایل اینونتوری (Inventory)
فایل Inventory، محلی است که آدرس سرورهایی که با آنها سروکار دارید را نگهداری میکند. اگر یک فایل اینونتوری دارید، کافی است با دستور زیر یک کپی از آن را داخل دایرکتوری جدید خود ایجاد کنید:
cp ~/ansible/inventory ~/ansible-practice/inventory
محتوای فایل Inventory به شکل زیر است:
[web]
192.168.1.100 ansible_user=sammy
ایجاد فایل Playbook
حالا وقت آن است که اولین Playbook را با دستور زیر ایجاد کنید:
nano playbook-01.yml
سپس محتوای زیر را به فایل اضافه کنید:
---
- hosts: all
tasks:
- name: Print message
debug:
msg: "Hello Ansible World"
اکنون فایل را ذخیره کرده و خارج شوید. این سادهترین Playbookی است که میتوان نوشت.
همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راهاندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه بهصرفه
خرید سرور مجازی ابری
اجرای Playbook
پس از ایجاد، این پلیبوک را با دستور زیر اجرا کنید:
ansible-playbook -i inventory playbook-01.yml -u sammy
سپس خروجی زیر را دریافت خواهید کرد:
PLAY [all] ***********************************************************************************
TASK [Gathering Facts] ***********************************************************************
ok: [203.0.113.10]
TASK [Print message] *************************************************************************
ok: [203.0.113.10] => {
"msg": "Hello Ansible World"
}
PLAY RECAP ***********************************************************************************
203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
شاید متوجه شده باشید که با وجود اینکه یک تسک (Print message) را در playbook خود تعریف کردهاید، در خروجی دو task لیست شده است.
این اتفاق میافتد زیرا Ansible بهطور پیشفرض یک تسک بهنام Gathering Facts ایجاد میکند. که این تسک برای جمعآوری اطلاعات از سیستمهای مقصد میباشد. تسک Gathering Facts باید ابتدا اجرا شود، زیرا این تسک جمعآوری اطلاعات باید اول اجرا شود، چون برای اجرای تسکهای بعدی ممکن است بخواهید از همین اطلاعات استفاده کنید.
اگر بهدنبال آموزش کامل راهاندازی اولیه سرور مجازی با اوبونتو Ubuntu هستید، میتوانید مقاله زیر را بخوانید.
راهاندازی سرور مجازی با اوبونتو
جمعبندی
ساخت و اجرای اولین playbookها بسیار ساده و آسان است. با تعریف host و taskها میتوانید دستورالعملهای مختلف را خودکار کنید. امیدواریم این مقاله برای شما مفید بوده باشد.
با سرور مجازی ابری لیارا، سرور خود را با بالاترین عملکرد و امنیت، بهراحتی مدیریت کنید!
✅ مقیاسپذیری بالا ✅ منابع اختصاصی و قابل تنظیم ✅ پشتیبانی 24/7 ✅ هزینه بهصرفه ✅ استقرار سریع
خرید سرور مجازی ابری لیارا
سوالات متداول
Playbook در Ansible چیست و چه کاربردی دارد؟
Playbook در Ansible یک فایل با فرمت YAML است که مجموعهای از دستورات (Tasks) را برای انجام عملیات خودکار بر روی سرورها یا سیستمها تعریف میکند.
Playbookها چگونه با سرورها ارتباط برقرار میکنند؟
در Playbook، با استفاده از بخش hosts
سرورهایی که باید تنظیمات روی آنها اعمال شود مشخص میگردد.
چه فرمتهایی برای نوشتن Playbook در Ansible استفاده میشود؟
Playbookها باید در قالب YAML نوشته شوند.
چرا Playbook من اجرا نمیشود؟
دلایل مختلفی میتواند باعث عدم اجرای صحیح Playbook شود، مانند اشتباهات در فرمت YAML، خطا در فایل اینونتوری، یا مشکلات در دسترسی به سرور مقصد.