نرم افزار گنو/لینوکس

نصب آپاچی با استفاده از Ansible

نوشته شده توسط اروند طباطبایی

در یکی از پست های قبلی Ansible را معرفی کردیم، در این پست از انسیبل برای تنظیم آپاچی و راه اندازی یک وب سرور استفاده خواهیم کرد. با این کار نیازی نیست هر بار که سرور یا دیوایس جدیدی که تهیه می‌کنید، روی آن کل عملیات تنظیم آپاچی را اجرا کنید، فقط کافی است آن را به انسیبل معرفی کنید و روی آن توانید ssh بزنید.

برای این کار ابتدا باید چند فایل و دایرکتوری بسازید، ساختار آن را در پایین می‌توانید ببینید:

ansible-apache
|-- ansible.cfg
|-- apache.yml
|-- hosts

 

ansible.cfg حاوی تنظیمات انسیبل خواهد بود، یکی از چیز هایی که تنظیم می‌کنیم فایلی است که در آن هاست ها را معرفی کرده ایم، در اینجا فایل hosts را که به تازگی ساخته‌ایم به آن معرفی کردیم:

[defaults]
hostfile = hosts

فایل hosts هم که حاوی لیست هاست ها و گروه بندی آن‌ها است. در اینجا گروهی به نام apache ساختیم و IP سیستمی که قرار است تنظیم شود را به همراه نام کاربری که برای ssh استفاده خواهد شد را مشخص کردیم(ubuntu نام کاربری است)

[apache]
۱۷۲٫۱۷٫۰٫۲ ansible_ssh_user=ubuntu

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

یکی از ساده‌ترین ماژول های انسیبل ping است که معمولاً برای تست اتصال به سرور مورد نظر به کار می رود. حالت کلی دستورات معمولاً چنین شکلی دارد:

ansible <group> -m <module>

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

$ ansible apache -m ping
۱۷۲٫۱۷٫۰٫۲ | SUCCESS => {
"changed": false, 
"ping": "pong"
}

حال به فایل apache.yml می رسیم. این فایل حاوی playbook ماست. یعنی می‌توانیم لیستی از کار ها و هاست هایی که این کار ها باید روی آن‌ها اجرا شوند را مشخص می‌کنیم و با یک دستور همه آن‌ها با هم اعمال خواهند شد. ساختار فایل همانطور که از نامش پیداست YAML است، پس احتمالاً فهم آن برایتان خیلی سخت نخواهد بود!

---
- hosts: apache
sudo: yes
tasks:
- name: install apache2
apt: name=apache2 update_cache=yes state=latest

معنای این playbook این است که انسیبل برای هاست های دسته ی apache با دسترسی sudo کار هایی که در بخش task گفته شده را انجام خواهد داد. اما این این task چه معنایی می دهد؟
قسمت name نامی است که به آن task اختصاص داده ایم. در اینجا install apache را انتخاب کردیم.
قسمت apt پارامتر های ماژول apt را مشخص کرده، name نام پکیجی است که apt باید آن را نصب کند(می تواند لیستی از پکیج ها باشد)، state سه مقدار می‌تواند دریافت کند، latest که مطمئن می‌شود آخرین نسخه نصب شده، present به سادگی فقط چک می‌کند که پکیج نصب شده، و absent باعث می‌شود که اگر پکیج نصب بود، حذف شود. قسمت بعدی که update_cache است، در صورتی که yes تنظیم شود معادل اجرای دستور apt-get update خواهد بود.
ش
حال به سادگی اجرای یک دستور آپاچی روی هاست های دسته ی آپاچی نصب خواهد شد:

$ ansible-playbook apache.yml --ask-sudo-pass

–ask-sudo-pass باعث می‌شود تا انسیبل از شما پسورد sudo را بخواهد چون در فایل playbook سودو را فعال کرده بودیم و برای اجرای apt به آن نیاز بود.

تبریک!آپاچی با موفقیت نصب شد 🙂

apache2ubuntudefaultpage
این فقط مثال کوچکی بود تا بیشتر و با انسیبل و نحوه ی کاربر آن آشنا شوید. حال تصور کنید ده‌ها سرور دارید و قرار است کلی کار مشابه روی آن‌ها انجام دهید، قطعاً انسیبل کمک بزرگی خواهد بود تا در وقت و هزینه ی خود صرفه جویی کنید.
در پایان باید بگویم انسیبل ماژول های فراوان و مفیدی دارد و بد نیست که نگاهی به آن‌ها بیندازید:

لینک

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه

  • با سلام
    چیزی که من متوجه شدم این بود که اگر یه هاست داشته باشیم بر پایه لینوکس اگر حتی رزبری پای نباشه میتونیم با این کار یه سرویس هاستینگ راه بندازیم و هاست با نام های مختلف به اون اختصاص بدیم و هر کدوم برای خودشون مستقل از نرم افزار های مورد نیاز استفاده کنند و با نام کاربری خودشون تنظیمات دلخواه اعمال کنند؟