در یکی از پست های قبلی 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 به آن نیاز بود.
تبریک!آپاچی با موفقیت نصب شد 🙂
این فقط مثال کوچکی بود تا بیشتر و با انسیبل و نحوه ی کاربر آن آشنا شوید. حال تصور کنید دهها سرور دارید و قرار است کلی کار مشابه روی آنها انجام دهید، قطعاً انسیبل کمک بزرگی خواهد بود تا در وقت و هزینه ی خود صرفه جویی کنید.
در پایان باید بگویم انسیبل ماژول های فراوان و مفیدی دارد و بد نیست که نگاهی به آنها بیندازید:
با سلام
چیزی که من متوجه شدم این بود که اگر یه هاست داشته باشیم بر پایه لینوکس اگر حتی رزبری پای نباشه میتونیم با این کار یه سرویس هاستینگ راه بندازیم و هاست با نام های مختلف به اون اختصاص بدیم و هر کدوم برای خودشون مستقل از نرم افزار های مورد نیاز استفاده کنند و با نام کاربری خودشون تنظیمات دلخواه اعمال کنند؟
با سلام
ضمن تشکر از توجه شما، در این خصوص پست مربوط به بیش از یک سال پیش است. ولی فرموده شما صحیح است و میتوانید چنین کاری را انجام دهید.