انسیبل چیست؟ انسیبل یک ابزار نرمافزاری فوقالعاده برای خودکارسازی پشتیبانی بخشهایی از کامپیوتر بهصورت کراس پلتفرم است. در واقع میتوانید از این ابزار برای خودکارسازی و اتوماسیون فرایندهایی مانند استقرار برنامه، نصب یک نرم افزار و بسیاری موارد دیگر استفاده کنید. در این مطلب به بررسی این که انسیبل چیست، مزایا و دلایل اهمیت استفاده از نرم افزار انسیبل، نحوه کار و نصب آن میپردازیم.
انسیبل چیست؟
انسیبل یک ابزار کارآمد برای خودکارسازی کارهای متخصصان فناوری اطلاعات است که میتوان آن را در سراسر زیرساختهای سیستم پیادهسازی کرد. این ابزار، بهطور ویژه برای متخصصان فناوری اطلاعات طراحی و تولید شده و آنها را قادر میسازد تا بهعنوان مدیر سیستم، کارهای خود را در قالب وظایف روزانه یا هفتگی تنظیم کنند. راهکار دیگر برای افزایش سرعت و عملکرد و همچنین، مدیریت سیستم و منابع وبسایت، خرید VPS است.
نصب ابزار Ansible بسیار راحت است و به هیچ نرمافزار عامل یا زیرساخت خاصی نیاز ندارد. این ابزار در زمینهی خودکارسازی، مدیریت سیستم و مهندسی DevOps فوقالعاده عمل میکند و به همین دلیل، اکثر توسعهدهندگانی که از روش دواپس برای توسعه نرمافزار استفاده میکنند از مزایای این ابزار در کارهای روزانهشان بهره میبرند.
با استفاده از پلی بوک انسیبل شما قادر هستید نه تنها یک ماشین، بلکه یک شبکهی کامل از تمام ماشینها را راهاندازی کرده و آنها را مدیریت کنید. برای انجام این کار نیز به هیچ دانش برنامهنویسی نیاز نخواهید داشت.
Ansible چطور کار میکند؟
در این بخش، خیلی ساده به شما میگوییم که روش کار Ansible چیست و در ادامه نیز به بررسی مفاهیم مربوط به این ابزار میپردازیم و توضیح میدهیم که داکر چیست و چطور نصب می شود.
انسیبل در ابتدا به گرههای یک شبکه (مانند سرورها، کلاینتها و غیره) متصل شده و سپس یک برنامهی کوچک یا ماژول بهنام Ansible را برای تمام گرههای شبکه ارسال میکند. در مرحلهی بعد، مجموعهای از این ماژولها را از طریق پروتکل SSH اجرا کرده و پس از اتمام اجرای برنامه، همهی آنها را حذف میکند.
برای برقراری این تعامل، گره کنترل انسیبل باید دسترسی ورود به گرههای مدیریتشده را داشته باشد. رایجترین روش احراز هویت در چنین شرایطی، کلیدهای SSH است؛ اما میتوانید از روشهای دیگر احراز هویت نیز استفاده کنید.
معماری انسیبل چیست؟
در این بخش، به بررسی معماری انسیبل و نحوهی مدیریت عملیاتها میپردازیم.
پلاگینهای انسیبل
به تکه کدهای تکمیلی که باعث افزایش عملکرد برنامه/سیستم میشوند، پلاگین گفته میشود. احتمالا تابهحال در بسیاری از ابزارها، پلتفرمها یا مرورگرهای اینترنت از پلاگینها استفاده کردهاید. شما میتوانید از پلاگینهای داخلی Ansible استفاده کنید و یا خودتان پلاگین دلخواهتان را ایجاد کنید.
برخی از پلاگینهای رایج این ابزار عبارتند از:
- پلاگینهای Action
- پلاگینهای Become
- پلاگینهای Cache
- پلاگینهای Callback
- پلاگینهای Cliconf
- پلاگینهای Connection
- پلاگینهای HTTP API
- پلاگینهای Inventory
- پلاگینهای Lookup
- پلاگینهای Netconf
- تستها
ماژولهای انسیبل
ماژولها قطعه برنامههای کوچکی هستند که انسیبل آنها را در تمام گرهها یا هاستهای ریموت از ورکاستیشن کنترل مرکزی توزیع میکند. این ماژولها میتوانند مواردی مانند سرویسها و پکیجها را کنترل کرده و از طریق پلی بوک انسیبل اجرا شوند.
Ansible پس از اجرای تمام ماژولهای موردنیاز برای نصب بهروزرسانیها یا تکمیل عملیات موردنیاز، آنها را حذف میکند.
فهرست (inventory)های انسیبل
Ansible از یک فایل inventory برای ردیابی هاستهای زیرساخت سیستم استفاده میکند و پس از اجرای دستورات و پلی بوکها، دسترسی به آنها را امکان پذیر میکند. این ابزار، در زیرساخت شما موازی با سیستمهای مختلف کار میکند. انسیبل این کار را با انتخاب روشهای موردنظر در فایل inventory که بهطور پیشفرض در محل هاست ذخیره میشود،انجام میدهد.
پس از ثبت inventory، میتوانید برای اختصاص متغیرها به هر کدام از هاستهای موجود، از یک فایل متنی ساده استفاده کرده و inventory را از منابع مختلف بازیابی کنید.
پلی بوک انسیبل چیست؟
متخصصان فناوری اطلاعات با استفاده از پلی بوک انسیبل میتوانند بدون اینکه از صفر شروع کنند، از این قابلیت برای برنامهریزی برنامهها، گرههای سرور، خدمات و سایر دستگاهها بهره ببرند. شما میتوانید پلی بوکهای Ansible را با متغیرها، شرایط و وظایف موجودشان ذخیره کرده و هر زمانی که خواستید آنها را به اشتراک گذاشته و یا مجددا استفاده کنید.
نحوهی کار پلی بوکهای Ansible مانند دستورالعملهای کار است. این پلی بوکها همان فایلهای YAML سادهای هستند که شامل زبان سریالسازی دادههای قابل خواندن برای انسان بوده و کار متخصصان را راحتتر میکنند.
در واقع، یکی از مهمترین دلایل محبوبیت انسیبل همین پلیبوکها هستند. پلی بوکها با مشخص کردن فعالیتها و خودکارسازی آنها، به کاربران کمک میکنند تا کارهای روتین را بهسرعت انجام دهند و نیاز به حفظکردن دستورات خاص را از بین میبرند.
استفاده از انسیبل چه مزایایی برای کاربران دارد؟
مهمترین مزایای استفاده از انسیبل عبارتند از:
- استفاده از Ansible بسیار آسان و سریع است. سادگی انسیبل به این دلیل است که عملیات در Ansible از طریق SSH انجام میشود و نیاز به نصب برنامه خاص دیگری نیست.
- رایگان و منبعباز است و راهاندازی بسیار سادهای دارد. از طرفی، برای کار با پلی بوک انسیبل به دانش کدنویسی خاصی نیاز ندارید. میتوانید از این ابزار برای انجام کارهای سادهای مانند اطمینان از اینکه سرویستان کار میکند یا راهاندازی دوباره از خط فرمان (بدون نیاز به فایلهای پیکربندی) استفاده کنید.
انسیبل برای سیستمهای یکنواختتر و یا گستردهتر مناسب است. این ابزار، مجموعهای از ماژولها را برای مدیریت زیرساختهای ابری و روشهای مختلف ارائه میدهد.
دلیل اهمیت کار با انسیبل چیست؟
در دنیای امروز، وقت و زمان از اهمیت بسیار زیادی برخوردار است. در نتیجه، برای بالا بردن سرعت نوسازی و تحول دیجیتال، به ابزارهای خودکاری نیاز داریم که برای انجام وظایف تکراری، به ما کمک کنند. انسیبل، یک راهحل مدیریتی جدید برای افزایش سرعت، مقیاس و ثبات در زیرساختهای فناوری اطلاعات است و دقیقا همان چیزی است که متخصصان فناوری اطلاعات به آن نیاز دارند.
لازم به ذکر است که هر چه فناوری قویتر باشد، بهبود محصول/خدمات با کیفیت بالاتری انجام میشود. پیش از ارائهی ابزارهایی نظیر انسیبل، بهبود محصول یا خدمات به مقدار قابلتوجهی کار دستی و هماهنگیهای پیچیده نیاز داشت. اما امروزه، با معرفی Ansible و ابزارهای اتوماسیون کارآمد، هزاران شرکت میتوانند فرآیندها و عملیاتشان را با سرعت بالاتری انجام داده و سرعت توسعه و پیشرفتشان را افزایش دهند.
نحوهی نصب انسیبل در اوبونتو
در این بخش، نصب آسان انسیبل را قدمبهقدم توضیح میدهیم. در مرحلهی اول، برای پیکربندی PPA روی دستگاهتان، دستورات زیر را اجرا کنید:
برای بهروزرسانی مخزن، کد زیر را در خط فرمان اجرا کنید:
sudo apt-get update
پیشنیازها و ملزومات نرمافزار را از طریق اجرای کد زیر نصب کنید:
sudo apt-get install software-properties-common
با دستور زیر، انسیبل را نصب کنید:
sudo apt-add-repository --yes --update ppa: ansible/ansible
سپس، کد زیر را اجرا کنید:
sudo apt-get install ansible
پس از اجرای کد بالا، چیزی شبیه به تصویر زیر را مشاهده خواهید کرد:
حال که انسیبل با موفقیت نصب شد، دستور زیر را در خط فرمان اجرا کنید تا ببینید که بهدرستی کار میکند یا خیر:
ansible --version
با اجرای دستور زیر، به انسیبل میگوییم تا تمام سیستمهای هاست inventory را در لوکال هاست هدف قرار داده و پینگِ ماژول را از کنسول محلی (به جای ssh) اجرا میکنیم:
ansible all -i localhost, --connection=local -m ping
پس از اجرای دستور بالا، پاسخی مشابه تصویر زیر را دریافت خواهید کرد:
طرز تغییر هاستهایی که انسیبل آنها را هدف قرار میدهد
در این مرحله، میخواهیم تغییراتی را در فایل میزبان که در مسیر /etc/ansible/hosts قرار دارد، ایجاد کنیم. این همان فایل پیشفرضی است که انسیبل در آن هر هاست (یا گروه) مشخص شدهای را جستوجو میکند و دستورات زیر باید بهصورت ریموت یا از راهدور اجرا شود :
sudo nano /etc/ansible/hosts
خطوط زیر را به فایل اضافه کرده و تغییرات را ذخیره کنید:
[local] localhost
سپس، دستور زیر را با فایل inventory تنظیمشده اجرا کنید:
ansible all --connection=local -m ping
پس از اجرای دستور بالا، باید چیزی شبیه به تصویر زیر را مشاهده کنید:
طرز پیکربندی سرور ریموت
در این مرحله، آزمایش انسیبل را برای سرور ریموت با استفاده از ماشین مجازی Digital Ocean droplet انجام میدهیم.
از واردکردن کد دستور زیر در خط فرمان، برای ورود ssh به سرور استفاده کنید:
ssh username@IP_Address
توجه: در این آموزش، ما از قبل یک کلید ssh را در پروفایلمان پیکربندی کردهایم و در زمان ایجاد droplet آن را انتخاب کردیم.
طرز پیکربندی انسیبل برای سرور ریموت
با استفاده از اجرای دستور زیر در خط فرمان، فایل هاست را در مسیر /etc/ansible/hosts ویرایش کنیم:
sudo nano /etc/ansible/hosts
پس از اضافهکردن خطوط زیر به فایل، تغییرات را ذخیره کنید:
[remote] remote_test [remote: vars] ansible_host=IP_ADDRESS_OF_VIRTUAL_MACHINE ansible_user=USERNAME
برای اطمینان از اینکه انسیبل میتواند از طریق SSH به واحد محاسباتی ریموت شما متصل شود، دستور زیر را اجرا کنید:
ansible remote -m ping
با استفاده از دستور زیر، میتوانید یک پلی بوک انسیبل را ایجاد کنید. در کد زیر، به Ansible میگوییم که کدام دستورها را با چه ترتیبی بر روی سرور مجازی به صورت ریموت اجرا کند. پلیبوک از فرمت دقیقی پیروی میکند و با استفاده از فرمت yml. نوشته شدهاست.
nano my-playbook.yml
کد زیر به انسیبل میگوید که Docker را در چندمرحله نصب کند:
—
- name: install docker hosts: remote become_method: sudo become_user: root vars: #local variables docker_packages: - apt-transport-https - ca-certificates - curl - software-properties-common tasks: - name: Update apt packages become: true #make sure you execute the task with sudo privileges apt: #use apt module update_cache: yes #equivalent of apt-get update - name: Install packages needed for Docker become: true apt: name: "{{ docker_packages }}" #uses our declared variable docker_packages state: present #indicates the desired package state force_apt_get: yes #forces to use apt-get - name: Add official GPG key of Docker shell: curl -fsSL https: //download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - name: Save the current Ubuntu release version into a variable shell: lsb_release -cs register: ubuntu_version #Output gets stored in this variable - name: Set right Docker directory become: true shell: add-apt-repository "deb [arch=amd64] https: //download.docker.com/linux/ubuntu {{ ubuntu_version.stdout }} stable" - name: Update apt packages become: true apt: update_cache: yes - name: Install Docker become: true apt: name: docker-ce state: present force_apt_get: yes - name: Test Docker with hello world example become: true shell: docker run hello-world register: hello_world_output - name: Show output of hello word example debug: #use debug module msg: "Container Output: {{hello_world_output.stdout}}"
حالا میتوانید با اجرای دستور زیر، آن را اجرا کنید:
ansible-playbook my-playbook.yml -l remote
پس از اجرای دستور بالا، در آخرین پیام دیباگ ترمینال، پیام “Hello from Docker” را مشاهده خواهیدکرد. البته ممکن است ظاهرشدن این پیام کمی طول بکشد.
سخن پایانی
انسیبل یک ابزار خودکارسازی بسیار کاربردی و موثر است که سرعت کار متخصصان فناوری اطلاعات را افزایش میدهد.
در این مقاله، نگاهی به این ابزار مفید، مزایا، نحوهی کار، معماری، پلاگینها، پلیبوک، inventory، نحوهی پیکربندی و نصب داکر با Ansible در سرور ریموت پرداختیم. امیدواریم با مطالعهی این مقاله، بهخوبی با این ابزار آشنا شده باشید.