آموزشیتوسعههمه

انسیبل Conditional چیست ؟ کاربرد انسیبل Conditional چیست ؟

انسیبل چیست ؟ ساخت گروه در مخزن انسیبل چگونه انجام می‌شود؟ Playbook انسیبل چیست؟ انسیبل Conditional چیست؟ ما تلاش کرده‌ایم در مطالبی که به صورت هفتگی پیرامون انسیبل برای شما منتشر می‌کنیم، به تمام این سوالات پاسخ دهیم.

امیدواریم که تا به این قسمت، مجموعه مقالات انسیبل برای شما جذاب و مفید بوده باشد. انسیبل از جمله مباحث مفید این روزهای دنیای IT است که توجه زیادی را به خود جلب کرده است. به همین دلیل، ما قصد کرده‌ایم به صورت دوره‌ای و پیشرفته، انسیبل و مباحث مختلف مربوط به آن را برای شما شرح دهیم.

اگر به یاد داشته باشید، ما در هفته‌ی گذشته در مورد پلی بوک انسیبل (Playbook) صحبت کردیم. در مقاله انسیبل Conditional قصد داریم، پیرو بحث هفته پیش، آموزش‌های جدیدی را با یکدیگر دنبال کنیم.

برای خرید هاست دانلود ابری آراز به سایت ابر آراز مراجعه کرده و لذت استفاده از یک سرور امن و به صرفه را تجربه کنید.

مقدمه‌ای برآنچه تاکنون گفتیم

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

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

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

حال در این مقاله، قصد داریم تا درباره‌ی روش‌های نوشتن پلی‌بوک و انسیبل Conditional با هم بحث کرده و موارد مختلف موجود این مسئله را باهم بررسی کنیم.

انسیبل Conditional چیست ؟

بگذارید اتفاقی که در این قسمت قرار است از آن حرف بزنیم را با یک مثال توضیح دهیم. فرض کنید ماشین‌های مورد نظر شما در انسیبل پلی بوک، از دو سیستم عامل centOS و Ubuntu استفاده می‌کنند که هر کدام پکیج منیجر مورد نظر خود یعنی yum و apt را در اختیار دارند.

حال می‌خواهیم یک سرویس انجین‌ایکس را بر روی دو دستگاه نصب کنیم. پلی‌بوک مورد نظر ما در این تسک باید از کدام پکیج منیجر برای این عمل استفاده کند؟ برای انجام این اتفاق ما از شرط when در پلی بوک خود استفاده می‌کنیم. بدین صورت که در انتهای تسک مورد نظر یک خط با توجه به مثال زیر اضافه می‌کنیم؛ وقتی شرایط داخل این قسمت به حالت صحیح درآید این تسک اجرا خواهد شد.

---

- name: Install NGINX

  hosts: all

  tasks:
  • name: Install NGINX on Ubuntu
apt:

  name: nginx

  state:  present

when: ansible_os_family == “Debian”
  • name: Install NGINX on Ubuntu
apt:

  name: nginx

  state:  present

when: ansible_os_family == “RedHat”

در این بخش، در قسمت when تعریف کردیم که در صورتی که از نظر انسیبل سیستم‌عامل مورد نظر از خانواده دبیان بود از تسک بالا و در صورتی که از خانواده RedHat بود از تسک پایین استفاده شود.

  • برای چک شدن این اتفاق مطمئن باشید که از == استفاده کرده‌اید و یک مساوی خالی نگذاشته‌اید.
  • در صورتی که نیاز داشته باشید تا دو قانون تعریف کنید و در صورت تصدیق هر کدام از این دو شرط تسک اجرا شود می‌توانیم از اپراتور or استفاده کنیم. بدین صورت که:
name: Install NGINX on Ubuntu

yum:

  name: nginx

  state:  present

when: ansible_os_family == “RedHat” or

ansible_os_family == “SUSE”

در صورتی که نیاز داشته باشید تا دو شرط همزمان چک شده و در صورت وجود هر دو تسک انجام شود نیز می‌توانید از اپراتور and استفاده کنید. بدین صورت که:

name: Install NGINX on Ubuntu

apt:

  name: nginx

  state:  present

when: ansible_os_family == “Debian” and

Ansible_destribution_version == “16.04”

انسیبل Conditional و استفاده از آن در لوپ‌های انسیبل:

حال در نظر داشته باشید که بتوانید از این قسمت در چرخه یا loop های انسیبل پلی‌بوک استفاده کنید. به طور مثال:

---

- name: Install Softwares

  hosts: all

  vars: 

    packages: 

    - name: nginx

      required: True

    - name: mysql

      required: True

    - name: apache

      required: Flase

  tasks:

  - name: Install “{{ item.name }}” on Debian

    apt:

      name: “{{ item.name }}”

      state: present

    when item.required == True  

    loop: “{{ packages }}”

در مثال بالا در صورتی که می‌خواستیم بر روی هر هاست، nginx و mysql را نصب کنیم، باید یک انسیبل پلی بوک برای هر کدام می‌نوشتیم یا هر کدام از تسک‌های موجود را با استفاده از apt، بازنویسی می‌کردیم. ولی در حالتی که دیده شد، می‌توانیم یک سری vars معرفی کرده و در قسمت متغییر‌هایی که تعریف کردیم به هر متغیر دو ویژگی نام و required یا مورد نیاز بودن را اضافه کنیم.

در نظر داشته باشید که در قسمت دوم این لوپ نوشته شده و استفاده شده در تسک نصب برنامه در دبیان می‌توانید مشاهده کنید که در قسمت شرط نوشته شده که در صورتی که پکیج مورد نیاز بود یا required به حالت True در آمده بود از این پکیج استفاده کن و این پکیج را نصب کن، در غیر این صورت نیازی به این اتفاق نیست.

انسیبل Conditional و استفاده از آن در رجیستری انسیبل:

در این قسمت می‌خواهیم موضوع دیگری را در هنگام استفاده از شرط ها (Conditional) نشان دهیم. به طور مثال فکر کنید می‌خواهیم به طور مداوم در تعداد زیادی سرور چک کنیم که آیا سرویس httpd داون شده یا خیر و در صورت داون شدن یک ایمیل ارسال کنید.برای این امر می‌توانیم از پلی بوک زیر استفاده کنیم.

---

- name: Check status of a service and email if its down

  hosts: localhost

  tasks:

    - command: service httpd status

      register: result
    - mail:

        to: admin@arazcloud.com

        Subject: Service Alert

        body: Httpd Service is down
        when: result.stdout.find(‘down’) != -1

در این قسمت نتیجه تسک بالا توسط ماژول رجیستری ذخیره شده و در قسمت پایین گفته شده که در صورت داون بودن سرویس ایمیل فرستاده شود.

ما در مقاله‌ی بعدی تلاش می‌کنیم تا این موضوع را بایکدیگر پیش ببریم. امیدواریم که تا به این مرحله، آموزش انسیبل برای شما مفید بوده و استفاده از انسیبل پلی‌بوک را به خوبی یاد‌گرفته باشید. در هفته‌های بعدی بیشتر درباره‌ی پلی‌بوک با هم بحث‌کرده و یاد‌می‌گیریم.

در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید، می‌توانید با تیم آراز در میان بگذارید، تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود. ما در مقاله‌ی بعدی تلاش می‌کنیم تا شما را با مفهوم انسیبل loop آشنا کنیم. پیشنهاد می‌کنیم فرصت مطالعه‌ی این مقاله را از دست ندهید.

اگر تمایل دارید که از دیگر اخبار حوزه تکنولوژی و فناوری نیز آگاهی یابید، به پیج اینستاگرام ابرآراز مراجعه نمایید.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا