سرور مجازی آراز سرور مجازی آراز
DevOps

انسیبل loop چیست؟ چگونه با انسیبل loop کار کنیم؟

منظور از انسیبل چیست ؟ ساخت گروه در مخزن انسیبل چگونه انجام می‌شود؟ پلی بوک انسیبل (Playbook) ] چه معنایی دارد؟ ما در مقالات قبلی تلاش کردیم تا به تمامی این سوالات پاسخ دهیم. حال قصد داریم تا به شما توضیح دهیم که انسیبل loop به چه معناست؟

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

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

خلاصه‌ای از آنچه تاکنون گفتیم

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

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

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

مفهوم انسیبل loop

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

این که چگونه می‌توانیم از لوپ‌ها و چرخه‌های انسیبل استفاده کنیم و برای انجام کار‌ها به جای این که یک مورد را چند بار تعریف کنیم یک بار تعریف کرده و با استفاده از انسیبل loop این کار را راحت‌تر انجام دهیم.

چگونه با ( انسیبل loop ) حلقه‌های انسیبل کار کنیم؟

بنا به سنت همیشگی در این سری از آموزش‌های انسیبل می‌خواهیم انسیبل loop را نیز با یک مثال توضیح دهیم. در نظر داشته باشید که می‌خواهیم یک تعداد یوزر یا کاربر در سرور‌های هدف بسازیم. برای این مهم می‌توانیم از ماژول user استفاده کنیم.

برای این که تعدادی یوزر بسازیم می‌توانیم این ماژول یا تسک را به اندازه مورد نیاز خود تکرار کنیم. با این کار، بعد از هر اجرای این تسک، یوزر تعریف شده در همین تسک ساخته می‌شود. اما راه دوم این است که یک وری‌ابل یا متغیر تعریف کنیم که در آن تمامی یوزر‌های مورد نظر ما برای ساخت تعریف شده باشد و با استفاده از یک انسیبل loop (حلقه انسیبل) این کار را انجام دهیم.

انسیبل loop ساخته شده تا در صورتی که نیاز داریم یک تسک به تعداد زیاد و هر بار با استفاده از یک مقدار انجام شود، این کار را برای ما انجام دهد تا مجبور نباشیم تعداد زیادی تسک همسان برای انجام یک کار تکراری بسازیم.

به طور مثال:

---

- name: Create users

  hosts: localhost

  tasks:

   - user: name=’{{ item }}’ state=present

     loop:

       - joe

       - george

       - ravi

       - mani

       - kiran

در پلی بوک بالا یک لوپ با تعداد مورد نظری آیتم معرفی شده و در قسمت تسک به جای این که متغیر مورد نظر وارد شود قسمت item نوشته شده که اشاره به این دارد تا این قسمت از لیستی که در انسیبل loop وجود دارد استفاده کند.

این روش بسیار کار را سازمان‌دهی شده‌تر می‌کند و به ما کمک می‌کند در هنگام استفاده بهتر از ماژول‌ها استفاده کرده و توسعه راحت‌تری داشته باشیم.

  • به طور کلی برای این که قسمت‌های مختلف انسیبل loop (حلقه انسیبل) را در متغییر‌های یک ماژول استفاده کنیم باید از حالت item استفاده کرده و در صورتی که نیاز داریم تا از یک وری‌ابل این موضوعات را بخوانیم آن وری‌ابل را به لوپ معرفی کنیم که این موضوع در ادامه مطرح خواهد شد.

استفاده از انسیبل loop در متغیرهای چند جزئی:

به طور کلی در صورتی که نیاز داشته باشید یک سری متغیرها برای هر آیتم تعریف کنید می‌توانید از دیکشنری‌های yml استفاده کنید. به طور مثال اگر نیاز داشته باشیم که هر کدام از یوزر‌ها در سرویس با یک uid ساخته شوند، می‌توانیم آیتم‌های موجود در لوپ را بدین صورت تعریف کنیم.

---

- name: Create users

  hosts: localhost

  tasks:

   - user: name=’{{ item.name }}’ state=present uid=’{{ item.uid }}’

     loop:

       - name: joe

         uid: 1010

       - name :george

         uid: 1011

       - name: ravi

         uid: 1012

       - name: mani

         uid: 1013

       - name: kiran

         uid: 1014

در حالت کلی، برای این که قسمت مشخصی از دیکشنری به متغیر مورد نظر ما وارد شود می‌توانیم از حالت item.partofdictionary استفاده کنیم. مثلا در صورتی که نیاز داشته باشیم از یکی از اجزا دیکشنری یک آیتم به نام uid خروجی داشته باشیمT می‌توانیم این موضوع را به صورت item.uid بنویسیم. پس از آن، دیکشنری مورد نظر ما کاملا در قسمت مورد نظر قرار گرفته و تسک به موفقیت انجام می‌شود.

سخن پایانی

در نظر داشته باشید که دایرکتوری loop به تازگی در انسیبل اضافه شده و قبلا از این ابزار با عنوان with_ یاد می‌شد. به طور مثال وقتی برای مثال بالا می‌خواستند تعدادی item معرفی کنند، از آپشن with_items استفاده می‌کردند و این قسمت را به جای loop می‌گذاشتند.

این موضوع تا جایی ادامه می‌یافت که برای هر نوع دیتا مثلا file و url ابزاری به اسم with_file و with_url قرار داده می‌شد. البته تمامی این موارد در حال حاضر با loop قابل انجام می‌باشند. ما در مقاله‌ی بعدی این سری مجموعه درباره‌ی انسیبل رول (role) یا نقش انسیبل توضیح می‌دهیم؛ با ما همراه باشید.

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

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

سرور مجازی آراز سرور مجازی آراز

ادمین

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

نوشته های مشابه

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

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

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