انسیبل رول چیست ؟ با دلیل استفاده از انسیبل role آشنا شوید
انسیبل به چه معناست ؟ ساخت گروه در مخزن انسیبل چگونه انجام میشود؟ پلی بوک انسیبل (Playbook) ] چه معنایی دارد؟ ما در مقالات قبلی تلاش کردیم تا به تمامی این سوالات پاسخ دهیم. حال قصد داریم تا به شما توضیح دهیم که انسیبل رول ( ansibl role ) به چه معناست و با دلایل استفاده از آن آشنا شویم.
امیدواریم که تا به این قسمت، مجموعه مقالات انسیبل برای شما جذاب و مفید بوده باشد. انسیبل از جمله مباحث مفید این روزهای دنیای IT است که توجه زیادی را به خود جلب کرده است. به همین دلیل، ما قصد کردهایم به صورت دورهای و پیشرفته، انسیبل و مباحث مختلف مربوط به آن را برای شما شرح دهیم.
خلاصه ای از مقالات انسیبل
در قسمت اول این سری مجموعه، بحث درباره مخزن انسیبل شروع شد؛ جایی که سرورهای هدف در آن تعریف شده و چگونگی دسته بندی و ارتباط با آنها در این قسمت تعریف میشود.
در قسمت دوم بر آن شدیم تا دید کلیای درباره دستورات اولیه استفاده از انسیبل به دست آورده و این موضوعات را مرور کنیم. استفاده از انسیبل در این قسمت در حد ابتدایی برای ما میسر شد. علاوه بر آن، ماژولها و ابزار های پرکاربرد انسیبل را به شما معرفی کردیم. شما با استفاده از این ماژولها میتوانستید اعمال مختلفی را در سرورهای هدف انجام دهید.
در قسمت بعد، از استفاده روزانهی انسیبل فراتر رفته و استفاده از این ابزار قدرتمند به عنوان یک ابزار اتومیشن را فراگرفتیم. پس از آن، با یکدیگر بحث کردیم که چگونه میتوانیم با استفاده از پلیبوکها اقدامات روزانه یا دورهای که در تمامی سرورهای مورد هدف خود باید انجام دهیم را به صورت اتومات انجام دهیم.
پس از آن نیز با انسیبل های مشروط یا انسیبل Conditional آشنا شده و گفتیم که در چه حالاتی میتوانیم شرطهایی برای انجام یا عدم انجام یک تسک در یک پلی بوک تعریف کنیم.
در نهایت در مقالهی انسیبل loop ، دربارهی روشهای نوشتن پلیبوک بیشتر صحبت کردیم. این که چگونه میتوانیم از لوپها و چرخههای انسیبل استفاده کنیم و برای انجام کارها به جای این که یک مورد را چند بار تعریف کنیم یک بار تعریف کرده و با استفاده از انسیبل loop این کار را راحتتر انجام دهیم.
حال در این مقاله یا به عبارتی آخرین قسمت از سری اول آموزش انسیبل (انسیبل مقدماتی)، قصد داریم تا درباره انسیبل رول یا نقشهای سرورهای مختلف صحبت کنیم.
انسیبل رول چیست ؟
بعد از هر اتفاقی که در انسیبل پلیبوک با توجه به مقالههای گذشته انجام میدهیم ممکن است یک سری سرور یک سری اتفاقات واحد بر هر سرور از قبیل نصب و راه قبول 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 داشته باشیم و این موضوع این امکان را به ما ارائه میدهد که قسمتهای مختلف انسیبل را راحت تر و سریعتر مدیریت کنیم.
چرا از انسیبل رول استفاده کنیم؟
دلیل کلی استفاده از انسیبل رول ( ansibl role ) میتواند در سه مورد بحث شود.
۱- سازماندهی
وقتی تسکهای انسیبل در قالب رولها قرار گرفته و این رولها در داخل پلیبوکها استفاده میشوند، به ما قابلیت سازماندهی و هدفمندتر کارکردن بسیار زیادی ارائه میکند؛ به گونهای که در ادامه استفاده و دوباره نویسی و بهبود انسیبل پلیبوک به ما کمک خواهد کرد.
۲- استفاده دوباره
استفاده از انسیبل رول به ما این امکان را میدهد که در صورتی که از یک رول تعریف شده نیاز بود در هر تعداد پلی بوک استفاده شود صرفا با معرفی آن این مشکل حل شده و دیگر نیازی به ساخت این رول ها نمیباشد.
به بیان سادهتر در صورتی که تسکهای خود را به صورت رول بنویسیم، در ساخت انسیبل پلیبوکهای بیشتر و بهتر نیازی به دوباره کاری نبوده و دوباره از رولهای قدیمی ساخته شده استفاده میکنیم.
۳- انتشار و اشتراک گذاری
در آینده با روشی آشنا خواهیم شد که کار را به شدت آسانتر کرده و به ما در استفاده از انسیبل کمک میکند. نوشتن رولهای انسیبل به ما این امکان را میدهد تا با استفاده از انسیبل گلکسی یا حتی ارائه فایلها به افراد دیگر رولهای خود را با دیگران اشتراک گذاری کرده تا بقیه هم بتوانند از این رولها استفاده کنند.
چگونگی دریافت رول ها
در جامعه انسیبل بعد از چندین سال گسترش و تحقیق پلتفرم جامعه انسیبل تحت عنوان انسیبل گلکسی یا کهکشان انسیبل شروع به کار کرد. شما با مراجعه به این سایت میتوانید با استفاده از گزینههای مختلف رولهایی که کاربران دیگر ساخته و در حال حاضر به شما ارائه کردهاند را مشاهده، دریافت و استفاده کنید. بدین صورت که بعد از ورود و انتخاب رول مورد نظر میتوانید با دستور:
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
سخن پایانی
امیدواریم از بحث امروز لذت برده و استفاده از انسیبل پلیبوک را به خوبی یاد گرفته باشید. این مقاله آخرین قسمت از سری مقالات انیسبل مقدماتی بوده و در آینده با سری جدید آموزش انسیبل در خدمت شما خواهیم بود. در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید، میتوانید با ما در میان بگذارید تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.