چگونه Ansible را نصب کنیم؟
Ansible یک ابزار مدیریت پیکربندی و اتوماسیون سرور است که توسط Red Hat توسعه داده شده است. این ابزار به شما کمک میکند تا فرآیندهای پیکربندی، مدیریت و اتوماسیون سرورها و شبکهها را به صورت محکم و قابل تکرار انجام دهید.
Ansible بر اساس زبان ساده و خوانا YAML (Yet Another Markup Language) به عنوان زبان پیکربندی استفاده میکند. با استفاده از YAML، میتوانید وظایف مرتبط با سرورها را به صورت قابل فهم و خوانا تعریف کنید.
یکی از ویژگیهای برجسته Ansible این است که نیازی به نصب نرمافزارهای مشترکی مانند Agent ندارد. Ansible از طریق SSH یا WinRM به صورت مستقیم با سرورها ارتباط برقرار میکند و عملیاتهای مورد نیاز را انجام میدهد. این ویژگی باعث میشود Ansible نصب و راهاندازی آسانی داشته باشد و همچنین امنیت بالایی داشته باشد.
با استفاده از Ansible میتوانید وظایفی مانند نصب نرمافزارها، پیکربندی سیستمعامل، مدیریت کاربران و گروهها، مدیریت سرویسها، اجرای دستورات روی سرورها و بسیاری از فعالیتهای دیگر را به صورت متمرکز و اتوماتیک انجام دهید.
در کل، Ansible ابزاری قدرتمند و منعطف است که به شما کمک میکند فرآیندهای مدیریت سرورها و شبکهها را سادهتر، قابل تکرارتر و قابل اعتمادتر انجام دهید.
کاربرد های Ansible
علاوه بر مدیریت سرورها، Ansible قابل استفاده برای اهداف دیگر نیز است. این ابزار به شما امکان میدهد فرآیندها و وظایف مختلف را به صورت اتوماتیک و قابل تکرار انجام دهید. بنابراین، میتوانید Ansible را برای موارد زیر نیز به کار ببرید:
مدیریت شبکه: Ansible قادر است به شما در مدیریت شبکههای خود کمک کند. شما میتوانید تنظیمات شبکهای مانند پیکربندی دستگاههای شبکه، مدیریت VLANها، تنظیمات برنامههای شبکه و سایر وظایف مرتبط با شبکه را با استفاده از Ansible انجام دهید.
مدیریت دیتابیس: Ansible به شما امکان میدهد فرآیندهای مدیریت دیتابیس را به صورت اتوماتیک انجام دهید. میتوانید پشتیبانگیری و بازیابی دیتابیس، ایجاد کاربران و دسترسیها، اجرای دستورات SQL، نصب و پیکربندی سیستمهای مدیریت دیتابیس و سایر عملیات مدیریتی را با استفاده از Ansible انجام دهید.
مدیریت ابر: Ansible قابلیت اتصال به ابرهای مختلف مانند Amazon Web Services (AWS)، Microsoft Azure، Google Cloud Platform (GCP) و… را داراست. شما میتوانید فرآیندهای مدیریتی مرتبط با ابر را مانند مدیریت ماشینهای مجازی، پیکربندی منابع ابری، مدیریت ذخیرهسازی و سایر وظایف مرتبط را با استفاده از Ansible انجام دهید.
اتوماسیون توسعه نرمافزار: Ansible به عنوان یک ابزار اتوماسیون، در فرآیندهای توسعه نرمافزار نیز قابل استفاده است. میتوانید اتوماسیون انتشار نرمافزار، مدیریت محیطهای توسعه و تست، اجرای آزمونهای خودکار و سایر وظایف مرتبط را با Ansible انجام دهید.
به طور کلی، Ansible به عنوان یک ابزار اتوماسیون و مدیریت پیکربندی، میتواند در موارد مختلفی از جمله مدیریت سرورها، شبکهها، دیتابیسها، ابرها و فرآیندهای توسعه نرمافزار مورد استفاده قرار گیرد.
کاربرد Ansible در مدیریت سرویس های ابری
Ansible برای مدیریت پیکربندی سرویسهای ابری مناسب است. Ansible امکان اتصال به ابرهای مختلف مانند Amazon Web Services (AWS)، Microsoft Azure، Google Cloud Platform (GCP) و غیره را داراست و از طریق APIهای ارائه شده توسط این ابرها میتواند با آنها ارتباط برقرار کند.
با استفاده از Ansible در محیط ابری، میتوانید عملیات پیکربندی و مدیریت ماشینهای مجازی، منابع ابری (مانند سرورها و شبکهها)، ذخیرهسازی، دیتابیسها و سایر سرویسهای ابری را به صورت اتوماتیک و قابل تکرار انجام دهید.
Ansible با استفاده از ماژولها و پلاگینهای مربوطه، قابلیت ایجاد و مدیریت منابع ابری، نصب و پیکربندی سرویسهای ابری، مدیریت آیتمهای امنیتی مرتبط با ابر و سایر وظایف مدیریتی را فراهم میکند.
با استفاده از متغیرها و قالبها در Ansible، میتوانید پیکربندیهای سرویسهای ابری را به صورت پیشفرض تعریف کرده و با اعمال تغییرات در این متغیرها، پیکربندیهای مرتبط را به صورت خودکار به روز رسانی کنید.
با استفاده از Ansible، میتوانید محیطهای ابری خود را به صورت یکپارچه و قابل تکرار مدیریت کنید و فرآیندهای پیکربندی و مدیریت را در ابرها بهبود دهید.
بنابراین، Ansible ابزاری قدرتمند برای مدیریت پیکربندی سرویسهای ابری است و میتواند به شما در اتوماسیون و سادهتر کردن فرآیندهای مدیریت ابری کمک کند.
Ansible چگونه کار می کند؟
Ansible یک ابزار مدیریت پیکربندی و اتوماسیون است که بر اساس معماری Client-Server عمل میکند. در این معماری، Ansible به عنوان سرور (Server) عمل میکند که دستورات و وظایف مورد نیاز را دریافت و پردازش میکند، و دستگاهها یا سیستمهای هدف به عنوان مشتریان (Clients) عمل میکنند که بر روی آنها دستورات Ansible اجرا میشود.
نحوه کار Ansible به صورت زیر است:
نصب و پیکربندی: شما با نصب Ansible بر روی سرور، آن را آماده کنید. سپس سیستمهای هدف که قرار است توسط Ansible مدیریت شوند، باید دارای نصب شده و پیکربندی شده باشند. این شامل نصب Python و OpenSSH بر روی سیستمهای هدف میشود.
Inventory: شما باید سیستمهای هدف را در فایل Inventory مشخص کنید. این فایل شامل لیست سرورها یا دستگاههایی است که قرار است توسط Ansible مدیریت شوند. همچنین میتوانید گروهبندی و ویژگیهای دیگری را برای هر سرور در این فایل تعریف کنید.
Playbooks: Playbooks، فایلهای YAML هستند که شامل توصیف وظایف و مراحل مورد نیاز برای اجرای آنها است. هر Playbook شامل لیستی از Taskها است که بر روی سرورها اجرا میشوند. Taskها میتوانند شامل ماژولها، دستورات سیستمی، فراخوانیهای API و سایر فعالیتها باشند.
Modules: Ansible از ماژولها برای انجام وظایف مختلف استفاده میکند. هر ماژول وظیفهای خاص را انجام میدهد، مانند مدیریت پکیجها، فایلها، سرویسها، کاربران، شبکه و غیره. Ansible دارای مجموعهای از ماژولهای پیشفرض است و همچنین شما میتوانید ماژولهای سفارشی خود را نیز تعریف کنید.
اجرای Playbooks: با استفاده از دستور ansible-playbook، میتوانید Playbook خود را اجرا کنید. Ansible به صورت خودکار به هر سرور در Inventory متصل میشود و Taskهای موجود در Playbook را بر روی آن اجرا میکند. این شامل انتقال فایلها، اجرای دستورات سیستمی، فراخوانی ماژولها و سایر فعالتوصیفات مربوط به نحوه کار Ansible را در قسمت قبلی بیان کردم. در ادامه، مثالی از یک Playbook ساده را به عنوان نمونه ارائه میدهم:
# مثالی از یک Playbook ساده به نام "webserver.yml"
---
- name: نصب و پیکربندی وب سرور
hosts: webservers
become: true
tasks:
- name: نصب Apache
apt:
name: apache2
state: present
- name: راهاندازی سرویس Apache
service:
name: apache2
state: started
enabled: true
در این Playbook، ما دو Task داریم. اولین Task، نصب بسته Apache را از طریق ماژول apt
انجام میدهد. دومین Task، سرویس Apache را راهاندازی میکند و فعال میسازد با استفاده از ماژول service
.
این Playbook بر روی هر سروری که در گروه “webservers” در فایل Inventory تعریف شده است، اجرا میشود. Ansible به صورت خودکار به هر سرور متصل میشود و Taskها را به ترتیب اجرا میکند.
شما میتوانید این Playbook را با استفاده از دستور ansible-playbook webserver.yml
اجرا کنید و Ansible به صورت اتوماتیک وظایف مشخص شده را بر روی سرورهای مورد نظر اجرا خواهد کرد.
این تنها یک نمونه از استفاده Ansible است و شما میتوانید Playbookهای پیچیدهتری بر اساس نیازهای خود ایجاد کنید تا فرآیندهای پیکربندی و مدیریت سیستمها را بهبود بخشید.
آموزش نصب Ansible
نصب Ansible میتواند بر روی انواع سیستمعاملها انجام شود، از جمله Linux، macOS و Windows. در ادامه، نحوه نصب Ansible بر روی سیستمعاملهای Linux و macOS را برای شما توضیح میدهم:
نصب Ansible در Linux:
برای نصب Ansible در سیستمعاملهای مبتنی بر دبیان (Debian) مانند Ubuntu، از دستور زیر استفاده کنید:
sudo apt update
sudo apt install ansible
برای سیستمهای مبتنی بر رد هت (Red Hat) مانند CentOS، از دستور زیر استفاده کنید:
sudo yum install ansible
نصب Ansible در macOS:
برای نصب Ansible در macOS، میتوانید از Homebrew استفاده کنید. اگر Homebrew را نصب نکردهاید، از دستور زیر برای نصب آن استفاده کنید:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
سپس، از دستور زیر برای نصب Ansible استفاده کنید:
brew install ansible
تأیید نصب:
پس از نصب Ansible، برای تأیید آن و نمایش نسخه مورد استفاده، از دستور زیر استفاده کنید:
ansible --version
اگر Ansible به درستی نصب شده باشد، اطلاعات مربوط به نسخه و ماژولهای مرتبط نمایش داده میشود.
نصب Ansible در سیستمعاملهای Windows:
برای نصب Ansible در سیستمعاملهای Windows، میتوانید از WSL (Windows Subsystem for Linux) استفاده کنید. ابتدا WSL را فعال کنید بر اساس نسخه مورد استفاده شما (مانند WSL 1 یا WSL 2). سپس، مراحل نصب Ansible را بر روی زیرسیستم لینوکسی WSL دنبال کنید، مشابه نصب بر روی سیستمعاملهای لینوکس.
پس از نصب Ansible، شما آماده استفاده از آن برای مدیریت پیکربندی و اتوماسیون سیستمها خواهید بود.
Playbook چیست؟
Playbook در Ansible یک فایل YAML است که شامل توصیفی از وظایفی است که بر روی یک یا چند میزبان (hosts) اجرا میشوند. Playbookها به شما امکان میدهند که برنامهریزی و اتوماسیون مراحل مختلف پیکربندی و مدیریت سیستمها را با استفاده از Ansible انجام دهید.
هر Playbook شامل یک یا چند Play است. هر Play توسط یک عنوان (name) مشخص میشود و بر روی یک یا چند میزبان (hosts) اجرا میشود. در هر Play میتوانید یک یا چند وظیفه (task) را تعریف کنید. هر وظیفه شامل یک عنوان و یک ماژول (module) است که توصیف میکند که چه کاری انجام شود. وظایف میتوانند شامل نصب بستهها، کپی فایلها، تنظیم فایلها، اجرای دستورات در سیستم و سایر عملیاتهای مدیریتی باشند.
در کل، Playbookها به شما امکان میدهند تا مراحل مختلفی از پیکربندی سیستمها را به صورت قابل تکرار و یکپارچه توصیف کنید. با استفاده از Playbookها، میتوانید عملکرد سیستمها را بهبود دهید، پیکربندیها را استانداردسازی کنید و فرآیندهای مدیریتی را اتوماسیون کنید.
نوشتن Playbook در Ansible
با اطلاعاتی که در اختیار دارید، میتوانید Playbookهایی بنویسید که با استفاده از Ansible، تمامیت، استقامت و اتوماسیون در سیستمها را بهبود ببخشید. Playbookها در Ansible برای تعیین وظایف و مراحلی که بر روی میزبانها اجرا میشوند، استفاده میشوند. در ادامه، یک مثال ساده از Playbook توضیح داده شده است:
---
- name: نمونه Playbook
hosts: servers
become: true
tasks:
- name: اطمینان حاصل کنید فایل index.html حذف شده است
file:
path: /var/www/html/index.html
state: absent
- name: ایجاد دایرکتوری www در /var
file:
path: /var/www
state: directory
owner: root
group: root
mode: '0755'
- name: کپی فایل index.html
copy:
src: files/index.html
dest: /var/www/html/
owner: root
group: root
mode: '0644'
- name: راهاندازی سرویس nginx
service:
name: nginx
state: restarted
در این مثال، ما یک Playbook ساده با چهار وظیفه تعریف کردهایم:
اطمینان حاصل میکنیم که فایل “index.html” در مسیر “/var/www/html/” حذف شده است.
دایرکتوری “/var/www” را ایجاد میکنیم و مالکیت آن را به کاربر و گروه “root” اختصاص میدهیم.
فایل “index.html” را از مسیر “files/index.html” به مسیر “/var/www/html/” کپی میکنیم و مالکیت و سطوح دسترسی آن را تنظیم میکنیم.
سرویس “nginx” را راهاندازی میکنیم یا در صورت اجرا بودن، راهاندازی مجدد میکنیم.
برای اجرای این Playbook، میتوانید از دستور ansible-playbook استفاده کنید و آن را به همراه فایل Playbook ذکر شده اجرا کنید. برای مثال، اگر فایل Playbook را با نام “sample_playbook.yaml” ذخیره کردهاید، دستور زیر را اجرا کنید:
ansible-playbook sample_playbook.yaml
لطفاً توجه داشته باشید که این مثال فقط یک نمونه ساده است و شما میتوانید Playbookهای پیچیدهتری بنویسید تا بر اساس نیازهای خاص خودتان سیستمها را پیکربندی کنید. همچنین، ممکن است نیازمند تغییرات و سفارشیسازی بیشتری برای Playbookهای خود باشید تا به نیازهای خاص سازمانتان پاسخ دهید.
Ansible Tower چیست؟
Ansible Tower (که قبلاً به Ansible AWX نیز شناخته میشد) یک واسط کاربری گرافیکی و جایگزینی قدرتمند برای Ansible است که برای مدیریت و اجرای Playbookها و نگهداری کنترل نسخه در محیطهای بزرگ و توزیع شده طراحی شده است. Ansible Tower امکاناتی را در اختیار میگذارد که به تیمها کمک میکند فرآیندهای پیکربندی و مدیریت زیرساختها را بهبود بخشند.
مزایای استفاده از Ansible Tower شامل موارد زیر میشوند:
رابط کاربری گرافیکی: Ansible Tower یک رابط کاربری وب کامل و گرافیکی را برای مدیریت و اجرای Playbookها فراهم میکند. این به مدیران و تیمها کمک میکند تا بدون نیاز به دستی کردن به دستورات Ansible، وظایف را ایجاد، مدیریت و اجرا کنند.
برنامهریزی و زمانبندی: Ansible Tower به شما اجازه میدهد تا وظایف را برنامهریزی و زمانبندی کنید. شما میتوانید وظایف را بر اساس زمانبندی مشخصی تکرار کنید و همچنین وظایف را به صورت موازی اجرا کنید.
مدیریت دسترسی: Ansible Tower ابزارهایی را برای مدیریت دسترسی و نقشها فراهم میکند. شما میتوانید کاربران و گروهها را تعریف کنید و سطوح دسترسی خاصی را به آنها اختصاص دهید. این برای مدیریت و کنترل دسترسی به Playbookها و منابع مهم است.
نگهداری کنترل نسخه: Ansible Tower قابلیت نگهداری کنترل نسخه را دارد. شما میتوانید تغییراتی که در Playbookها و نقشها ایجاد میکنید را ذخیره کنید و به راحتی بازگردانی کنید.
گزارشگیری و پیگیری: Ansible Tower امکان گزارشگیری و پیگیری وضعیت اجرای وظایف را فراهم میکند. شما میتوانید گزارشهایی درباره نتایج اجرای Playbookها دریافت کنید و وضعیت پروسهها را پیگیری کنید.
Ansible Tower به شما کمک میکند تا عملکرد Ansible را بهبود بخشید و به صورت مرتب و قابل تکراری Playbookها را مدیریت کنید. این ابزدر حال حاضر، به دلیل محدودیتهای متنی، نمیتوانم Ansible Tower را به صورت تعاملی نمایش دهم چرا که نیازمند یک رابط کاربری گرافیکی و عملکرد پیچیده است. با این حال، میتوانید به سایت رسمی Ansible Tower مراجعه کنید (https://www.ansible.com/products/tower) تا اطلاعات بیشتری درباره آن کسب کنید و ممکن است آن را دانلود کنید و در محیط خود اجرا کنید.
جمع بندی:
در این مقاله، به بررسی Ansible، یک ابزار قدرتمند برای پیکربندی و مدیریت سیستمها پرداختیم. با استفاده از زبان ساده YAML و با استفاده از Playbookها، Ansible امکان اتوماسیون فرآیندهای مدیریتی را فراهم میکند و به تیمها اجازه میدهد که بهبود عملکرد سیستمها، استانداردسازی پیکربندیها و اتکا به فرآیندهای قابل تکرار را تجربه کنند.
به طور خلاصه، Ansible با استفاده از رویکرد ساده و قدرتمند خود، تیمها را قادر میسازد فرآیندهای پیکربندی و مدیریت سیستمها را بهبود بخشند. با امکانات پیشرفته Ansible Tower، میتوان به صورت مرتب و قابل تکراری Playbookها را مدیریت کرده و کارایی و کنترل بیشتری بر روی فرآیندهای مدیریتی داشت.
با در نظر گرفتن این قدرت و امکانات، Ansible و Ansible Tower به تیمها امکان میدهند تا بهبود قابل ملاحظهای در پیکربندی و مدیریت سیستمها داشته باشند. با این ابزارهای قدرتمند، تیمها قادر خواهند بود بر روی عملکرد سیستمها تأثیرگذاری کنند، پیکربندیها را استانداردسازی کنند و فرآیندهای مدیریتی خود را بهبود دهند.