سلام و خسته نباشید عرض میکنم خدمت همه شما دنبالکنندگان هفتگی سری مقالات آموزش انسیبل
در هفتهای که پیش رو داریم پیرو بحث هفته پیش که همان پلی بوکهای انسیبل بود قرار است آموزشهای جدیدی را با یکدیگر ببینیم.
در قسمت اولی این سری مجموعه بحث درباره مخزن انسیبل شروع شد؛ جایی که سرورهای هدف در آن تعریف شده و چگونگی دسته بندی و ارتباط با آنها در این قسمت تعریف میشود.
در قسمت دوم بر آن شدیم تا دید کلیای درباره دستورات اولیه استفاده از انسیبل ببینیم و این موضوعات را مرور کنیم. استفاده از انسیبل در این قسمت در حد ابتدایی برای ما میسر شد.
اما در قسمت سوم به شما ابزار معرفی کردیم و به اصطلاح ماژولهای پرکاربرد و قابل استفاده انسیبل را به شما معرفی کردیم. شما با استفاده از این ماژولها میتوانیستید اعمال مختلفی را در سرورهای هدف انجام دهید.
در قسمت چهارم پا از استفاده روزانه از انسیبل فرا گذاشته و رو به استفاده از این ابزار قدرتمند به عنوان یک ابزار اتومیشن گذاشتیم و با یکدیگر بحث کردیم که چگونه میتوانیم با استفاده از پلیبوکها اقدامات روزانهای یا دورهای که در تمامی سرورهای مورد هدف خود باید انجام دهیم را به صورت اتومات انجام دهیم.
در قسمت پنجم اما با انسیبلهای مشروط آشنا شدیم و گفتیم که در چه حالاتی میتوانیم شرطهایی برای انجام یا عدم انجام یک تسک در یک پلیبوک تعریف کنیم.
در نهایت در قسمت ششم درباره حلقههای انسیبل بحث کردیم تا پلیبوکها هدفمندتر داشته باشیم و استفاده راحتتری از تسکها بکنیم.
در این قسمت یا به عبارت دیگر آخرین قسمت از سری اول آموزش انسیبل (انسیبل مقدماتی) قصد بر این داریم تا درباره رولهای انسیبل یا نقشهای سرورهای مختلف صحبت کنیم.
بعد از هر اتفاقی که در انسیبل پلیبوک با توجهw به مقاله های گذشته انجام میدهیم ممکن است یک سری سرور یک سری اتفاقات واحد بر هر سرور از قبیل نصب و راه قبول MySQL و Nginx رخ دهد.
جهت انجام این سری اتفاقات در سرور رخ دهد میتوانیم به جای انجام یک سری تسک روتین بر روی هر سرور، یک رول تعریف کرده که مجموعه چندین تسک مشخص و روتین بوده و آن رول را به سرورهای مورد نظر برسانیم.
در حالت اولیه برای انجام این که یک سرور MySQL درست کنید این این قسمت را در انسیبل پلی بوک بنویسید:
- name: Install and Configure MySQL
hosts: db-server
tasks:
- name: Install Pre-Req
yum: name=pre-req-packages state=present
- name: Install MySQL Packages
yum: name=mysql state=present
- name: Start MySQL Service
service: name=mysql state=started
- name: Configure Database
Mysql_db: name:db1 state=present
اما به جای این کار میتوانیم قسمتی همچون قسمت زیر در فایل پلیبوک بسازیم:
- name: Install and Configure MySQL
hosts: db-server
roles:
- mysql
و در قسمت دیگر یا فایل دیگری معروف به فایل رول این قسمت را بگذاریم:
tasks:
- name: Install Pre-Req
yum: name=pre-req-packages state=present
- name: Install MySQL Packages
yum: name=mysql state=present
- name: Start MySQL Service
service: name=mysql state=started
- name: Configure Database
Mysql_db: name:db1 state=present
در پلی بوکهای انسیبل میتوانیم فایلها و قسمتهای مختلفی مانند tasks, vars, defaults, handlers و templates داشته باشیم و این موضوع این امکان را به ما ارائه میدهد که قسمتهای مختلف انسیبل را راحت تر و سریعتر مدیریت کنیم.
دلیل کلی استفاده از انسیبل رول میتواند در سه مورد بحث شود.
وقتی تسکهای انسیبل در قالب رولها قرار گرفته و این رولها در داخل پلیبوک ها استفاده میشوند به ما قابلیت سازماندهی و هدفمندتر کارکردن بسیار زیادی ارائه میکند به گونهای که در ادامه بسیار استفاده و دوباره نویسی و بهبود انسیبل پلیبوک به ما کمک خواهد کرد.
استفاده از انسیبل رول به ما این امکان را میدهد که در صورتی که از یک رول تعریف شده نیاز بود در هر تعداد پلی بوک استفاده شود صرفا با معرفی آن این مشکل حل شده و دیگر نیازی به ساخت این رول ها نمیباشد.
به بیان سادهتر در صورتی که تسکهای خود را به صورت رول بنویسیم، در ساخت انسیبل پلیبوکهای بیشتر و بهتر نیازی به دوباره کاری نبوده و دوباره از رولهای قدیمی ساخته شده استفاده میکنیم.
در بند آینده با روشی آشنا خواهیم شد که کار را برای ما به شدت آسودهتر کرده و به ما در استفاده از انسیبل کمک میکند.
نوشتن رولهای انسیبل به ما این امکان را میدهد تا با استفاده از انسیبل گلکسی یا حتی ارائه فایلها به افراد دیگر رولهای خود را با دیگران اشتراک گذاری کرده تا بقیه هم بتوانند از این رولها استفاده کنند.
در جامعه انسیبل بعد از چندین سال گسترش و تحقیق پلتفرم جامعه انسیبل تحت عنوان انسیبل گلکسی یا کهکشان انسیبل شروع به کار کرد.
شما با مراجعه به این سایت میتوانید با استفاده از گزینههای مختلف رولهایی که کاربران دیگر ساخته و در حال حاضر به شما ارائه کردهاند را مشاهده، دریافت و استفاده کنید.
بدین صورت که بعد از ورود و انتخاب رول مورد نظر میتوانید با دستور:
ansible-galaxy init mysql
رول مورد نظر را به پروژه و پلی بوک خود اضافه کنید (در مثال بالا رول MySQL به مجموعه رولهای داخل سرویس اضافه شد.)
به منظور تحقیق و انجام جستجو برای رول مورد نظر خود نیز میتوانید از دستور:
ansible-galaxy search mysql
به طور مثال برای یافتن تمام انسیبل رولهای درباره mysql استفاده کنید.
با دستور زیر نیز میتوانید حاصل جستجو رول مورد نظر خود که در جستجو بالا پیدا شد را نصب کنید:
ansible-galaxy install geerlingguy.mysql
با استفاده از دستور زیر نیز میتوانید لیستی از رولهای نصب شده بر دستگاه خود را مشاهده کنید:
ansible-galaxy list
در دستور زیر نیز میتوانید قسمتیکه تمامی رولها در آن در دستگاه شما ذخیره میشوند را مشاهده کنید. (قسمت DEFAULT_ROLES_PATH میتوانید مقصد را مشاهده کنید.)
ansible-config dump | grep ROLE
دستور آخر نیز مربوط به نصب یک انسیبل رول در یک مقصد انتخابی میباشد که میتوانید با توجه به نیاز خود بعد از سوییچ p مسیر نهایی خود را انتخاب کنید:
ansible-galaxy install geerlingguy.mysql -p ./roles
امیدوارم از بحث امروز لذت برده باشید و استفاده از انسیبل پلیبوک را به خوبی یادگرفته باشید.
این مقاله آخرین قسمت از سری مقالات انیسبل مقدماتی بوده و در حال آینده سری جدید انسیبل در خدمت شما خواهم بود. همچنین هر هفته در صورت امکان با مقالات جدید در ارتباط با شما خواهم بود.
امیدوارم توضیحات من برای شما در یادگیری انسیبل کاربردی باشد.
در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید میتوانید با بنده در میان گذاشته تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.
با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.
تا هفته بعد...