Preview in new tab(در یک برگه جدید باز می شود)
در قسمت قبلی فایلهای YAML را بخوبی شناختیم و نحوه تفیذ اعتبار آن از نظر پایتون آموختیم. با توجه به مطالبی که در قسمت YAML ارائه کردیم انتظار میرود که این قست نوشتن پلی یک بوک بسیار ساده تر بنظر برسد. در صورتی که مایلید میتوانید به من ایمیل بزنید و توضیحات بیشتری در خصوص YAML بخواهید. با کمال میل در اسرع وقت پاسخگو خواهم بود. اما خواهشمندم که مطمئن شوید که به YAML مسلط شدهاید. چرا که از این پس بسیار از آن استفاده خواهیم کرد.
این قسمت که توضیح پلیبوکها است طولانی تر از قسمتهای قبل خواهد بود. از همین رو در چند نوبت به روز رسانی میشود. به این معنی که عنوانایی که با (بزودی مشخص) مشخص شدهاند به مرور به این پست اضافه میشوند. ویدئوهای یوتوب نیز متعاقباً آپلود خواهند شد.
پلی بوکها – Playbooks
- مقدمه – Introduction
قبل از نوشتن یک Playbook باید از اجزای مختلف آنها آگاه باشیم. نگارنده بطور مداوم از یک الگو برای نوشتن پلیبوک بهره میبرم. به مثال زیر توجه کنید:
--- # YAML documents begin with the document separator --- # The minus in YAML this indicates a list item. The playbook contains a list # of plays, with each play being a dictionary - # Target: where our play will run and options it will run with # Variable: variables that will apply to the play, on all target systems # Task: the list of tasks that will be executed within the play, this section # can also be used for pre and post tasks # Handlers: handlers that are executed as a notify key from a task # Roles: list of roles to be imported into the play # Three dots indicate the end of a YAML document ...
همانگومه که ملاحظه میکنید این یک الگو برای نوشتن Playbook است.
در این فایل که با — شروع و … به پایان میرسید، در سطر ششم یک – مشاهده میکنید. همانطور که در قسمت YAML اشاره شد، – بیانگر یک لیست است. پس پلیبوک یک لیست که هر عنصر آن که در اینجا به آن یک بخش/جزء (به انگلیسی section) میگوییم یک دیشکنری است.
برای نوشتن پلیبوک مثل همه زبانهای مرسوم قبل از شروع باید Fellow و یا Schema آن را مد نظر بگیریم. برای درک بهتر هر بخش از مثال بالا به توضیحات تکمیلی نیاز است:
Target: مشخص میکنیم که پلیبوک بر روی چه هاستهایی اجرا شود. این Hosts باید قبلا در Inventory دسته بندی و مشخص شده باشد.
Variable: متغیرهای مورد نیاز پلیبوک را در این بخش مشخص میکنیم. ای شامل فقط متغیرهای عومی میشود. به عنوان مثال ansible_become.
Task: لیستی از Task هایی که باید حین پلی بوک اجرا بوشند. این بخش میتوان پیش نیاز یا ادامه یک Task دیگر هم باشد
Handlers: یک شمارنده محسوب میشود که یک کلید را یک Task آگاه میسازد. در این باره به تفصیل صحبت خواهیم کرد.
Roles: لیستی از Role هایی که میتواند داخل یک Task تعبیه بشوند.
برای شروع کار با پلیبوکها در انسیبل با نوشتن یک Playbook ساده شروع خواهیم کرد. با این پلیبوک ما فایل /etc/motd
را پیکربندی کنیم.
در بازبینی اول فقط یک اسکلت از آنچه قرار است بنویسم تولید کردیم. به بازبینی دوم بریم.
--- # YAML documents begin with the document separator --- # The minus in YAML this indicates a list item. The playbook contains a list # of plays, with each play being a dictionary - # Target: where our play will run and options it will run with hosts: centos user: root # Variable: variables that will apply to the play, on all target systems # Task: the list of tasks that will be executed within the playbook tasks: - name: Configure a MOTD (message of the day) copy: src: centos_motd dest: /etc/motd # Handlers: handlers that are executed as a notify key from a task # Roles: list of roles to be imported into the play # Three dots indicate the end of a YAML document ...
در قمست Target
هاستهای Centos را مشخص کردهایم. در این قسمت یوزر root را برای همه هاستهای Centos در نظر گرفته ایم. ممکن است بپرسید ما قبلا این یوزر را در اینوتوری مشخص کرده ایم؟ جواب به این پرسش این است که در اینجا به این قابلیت اشاره شده که پارامترهای زیادی از جمله یوزر در سطح پلیبوک هم قابل تعریف شدن هستند.
در قسمت Task یک اسم برای آن انتخاب کردهایم. بجز این از ماژول کپی که قبلا در قسمت ماژولها با آن پرداختهایم استفاده کردهایم. در این قسمت مشخص کردهایم که فایل centos_motd
بر روی همه هاستهای centos در مقصد/etc/motd
ذخیره بشوند.
برای اجرای این پلیبوک باید از دستور anisble-playbook استفاده کنیم.
$ ansible-playbook centos_motd.yml
در قسمت ماژولها با رنگها و نشانه گذاریها آشنا شدیم. بعد از اجرای دستور بالا در خروجی دو قسمت با عنوان Task مشاهده میکنیم. اولی Gathering Facts و دومی
- متغیرها – Variables
انواع متغیر و نحوه نوشتن آن - فکتها – Facts
معرفی فکتها و آموزش استفاده از فکتهای سفارشی - ایجاد کردن و اجار کردن
ساختن یک پلی بوک که یک وب سرور انجینایکس را هم در هاستهای اوبوتو و هم در هاستهای سنتاواس
دیدگاهتان را بنویسید