Using conditions in ansible PlayBook


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

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا بررسی شود آیا توزیع از مشتقات RedHat است یا خیر.
    • سپس آخرین نسخه از سرویس httpd بر روی آن نصب یا بروز رسانی می‌شود.

 

  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :

 

  • نکته: توجه داشته باشید از آن جایی که از متغیر ansible_os_family استفاده کردیم، انتظار می‌رود که مقدار کلید gather_facts بر روی yes تنظیم شده باشد.
  • نکته: با استفاده از کلمه‌ی when تعیین کردیم در صورتی که ماژول yum فراخوانی شود که مقدار متغییر ansible_os_family برابر با RedHat باشد.
  • نکته: مقدار متغییر (در مثال بالا RedHat) به حروف بزرگ و کوچک حساس می‌باشد. یعنی RedHat و redhat دو کلمه‌ی جدا از هم در نظر گرفته می‌شود.
  • نکته: در صورتی که شرط برقرار نباشد، فرآیند مربوطه اصطلاحا به صورت skipping یا تعلیق در خواهد آمد.

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا بررسی شود که توزیع از جنس Debian ، Ubuntu یا CentOS است.
    • سپس متناسب با آن، متنی با مضمون نام توزیع چاپ شود.

 

  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :

 

  • نکته: توجه داشته باشید از آن جایی که از متغیر ansible_distribution استفاده کردیم، انتظار می‌رود که مقدار کلید gather_facts بر روی yes تنظیم شده باشد.

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا بررسی شود آیا توزیع از جنس Debian است یا خیر.
    • سپس متنی متناسب با آن چاپ شود.

  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :

  • نکته: در مثال بالا به نحوه استفاده از متغیر توجه کنید.

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا بررسی شود آیا توزیع از جنس Debian است یا خیر.
    • سپس بررسی می‌شود آیا نسخه توزیع برابر با ۱۰ است یا خیر.
    • در نهایت متنی متناسب با پاسخ، چاپ خواهد شد.

  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :

  • نکته: در مثال بالا از دو شرط به صورت هم زمان استفاده کردیم لذا زمانی شرط اجرا می‌شود که هر دو شرط صحیح و برقرار باشد. به بیان دیگر در این مثال به “و منطقی” پرداخته شده است.

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا بررسی شود آیا توزیع از جنس Debian است یا خیر.
    • سپس بررسی می‌شود آیا توزیع از جنس Ubuntu است یا خیر.
    • در نهایت در صورتی که یکی از شروط صدق کرد، متنی دلخواه چاپ شود.

 

  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :

 

  • نکته: در کد بالا از دو شرط به صورت هم‌زمان استفاده کردیم اما زمانی شرط اجرا می‌شود که تنها یکی از شروط برقرار باشد. به بیان دیگر در این مثال به “یا” پرداخته شده است.

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا با استفاده از دستور ls بررسی شود آیا پرونده‌ای با نام null.file در پوشه‌ی tmp/ وجود دارد یا خیر.
    • سپس خروجی دستور ls درون متغیری با نام result_variable ریخته شود.
    • در نهایت متناسب با خروجی دستور ls متنی با مضمون fail یا succeed چاپ شود.

  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :


  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا بررسی شود آیا توزیع از جنس Debian است یا خیر.
    • سپس بررسی شود آیا نسخه‌ی توزیع بالاتر از ۶ است یا خیر.
    • در نهایت متناسب با پاسخ، متنی چاپ شود.

  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :

  • نکته: در مثال بالا از دو شرط به صورت هم زمان استفاده کردیم لذا زمانی شرط اجرا می‌شود که هر دو شرط صحیح و برقرار باشد. به بیان دیگر در این مثال به “و منطقی” پرداخته شده است.

  • به منظور مطالعه‌ی بیشتر لینک زیر پیشنهاد می‌شود :


  • آزمایش شده بر روی Ansible نسخه‌ی 2.5.1
  • آزمایش شده بر روی سیستم عامل Ubuntu 18.04