این هفته نیز با قسمتی دیگر از سری آموزشهای استفاده از انسیبل در خدمت شما هستم.
همانطور که در قسمت پیش گفته شد انسیبل در واقع یک ابزار برای انجام کار های مشخص بر روی تعداد زیادی ماشین میباشد که به کمک آن میتوانیم زیرساختهای خود را به خوبی گسترش داده و پشتیبانی کنیم.
در قسمت قبل درباره مخزن اسنیبل یا اینونتوری با هم حرف زدیم؛ فایلی که نمایانگر سرورهای هدف بوده و به ما اجازه میدهد که سرورهای هدف یا نودهای تحت تاثیر را به صورت دستهبندی در آورده و به ما اجازه میدهد که در قسمت مورد نظر خود تاثیر دلخواه را بگذاریم.
در این قسمت رو به تسکهای انسیبل کرده و درباره نحوه استفاده از دستورات انسیبل با یکدیگر بحث میکنیم.
به طور کلی انسیبل دارای ساختار کاملی میباشد که اولین قسمت از این ساختار تسک میباشد.
تسکها یک سری اتفاقات میباشند که میتوان آنها را توسط دستورات انسیبل در یک یا یک گروه سرور انجام داد یا این که در پلی بوک (مفهوم پلی بوک در مقالههای بعدی تحت بحث قرار خواهد گرفت) از آن برای انجام کار های مختلف انجام میشود.
هر ابزاری که درباره آن شروع به یادگیری میکنیم قسمتی به نام دستورات دارد که در ابتدا بعد از فهمیدن کلیت موضوع آن ابزار این دستورات را باید فرا بگیریم تا بتوانیم ادامه آموزش را در این موضوع داشته باشیم و بتوانیم با آن کار کنیم.
تسکها از یک سری ماژول یا ابزار استفاده میکند تا آنها را تحقق دهند.
در این قسمت ابتدا نحوه قرارگیری دستورات انسیبل را برای شما عزیزان مطرح کرده و سپس به فراگیری تعدادی از ماژولها میپردازیم.
به طور کلی نحوه نوشتاری اولیه دستورات انسیبل در صورتی که بخواهیم تنها و تنها یک تسک در آن انجام شود به صورت زیر می باشد:
# ansible GROUP -i INVENTORY -m MODULE -a ‘ARG’
در قسمت بالا کلمات GROUP , INVENTORY , MODULE , ARG’قسمت های مختلف دستور بوده که در پایین به شرح آنها میپردازیم:
در ابتدای این دستور به قسمت GROUP برخورد میکنیم. این قسمت به این معناست که یک گروه یا یک سرور تعریف شده در مخزن انسیبل را میتوانیم برای انجام این تسک هدف قرار دهیم.
به طور مثال:
# ansible web-server -i INVENTORY -m MODULE -a ‘ARG’
در این مثال از فایل مخزن معرفی شده قسمت web-server برای انجام این تسک هدف قرار گرفته میشود.
در قسمت بعدی به عنوان INVENTORY مواجه میشویم. از آنجا که در قسمت قبلی به طور کامل درباره این موضوع حرف زدیم این قسمت را با یک مثال توضیح میدهم:
# ansible web-server -i /var/lib/ansible/inventory -m MODULE -a ‘ARG’
در مثال بالا در نظر داشته باشید که به جای INVENTORY از آدرس فایل مخزن معرفی شده به انسیبل برای انجام اتفاقات استفاده میکنیم.
به طور کلی انسیبل در قسمت اول هر کدام از دستورات یا فایل ها ابتدا همیشه باید سرور های هدف را مشخص کنیم و سپس به بحث درباره عمل قابل انجام بپردازیم.
حال نوبت آن است که به قسمت MODULE و ARG توجه کنیم. این دو قسمت کاملا به یکدیگر وابسته هستند.
در یک تسک انسیبل ما همواره از ابزار مختلفی استفاده میکنیم تا به مقصود خود نزدیک شویم.
ماژولها یا ابزار وسایلی هستند که به ما در انسیبل کمک میکنند تا اتفاقات رخ دهند.
هر ماژول برای انجام به متغییرها و اطلاعات مختلفی نیاز دارد که این متغییرها تا بدینجای کار به عنوان ARG در مقاله حضور داشتند.
در نظر داشته باشید که بعضا ممکن است ماژولی وجود داشته باشد که آرگومانت یا متغییری در آن وجود نداشته باشد به همین دلیل از استفاده از سوییچ -a خودداری خواهیم کرد
به طور مثال:
# ansible web-server -i /var/lib/ansible/inventory -m shell -a ‘ls’
در مثال بالا در داخل گروه web-server در داخل مخزن معرفی شده به انسیبل در تک تک سرورهای این گروه دستور ls که گیرنده لیست فایلهای موجود در قسمت مشخصی از سرور میباشد را اجرا کرده و نتیجه را به ما نمایش میدهد.
ماژول استفاده شده در این مثلا shell بوده که نمایانگر این است که متغییر یا آرگومنت معرفی شده خود را در داخل شل یا محیط دستور گیری سرور هدف قرار داده و اجرا کند.
در این قسمت قصد دارم تا تعدادی از ماژول ها و ابزار های کارآمد در انسیبل را به شما معرفی کنم.
در نظر داشته باشید که در این قسمت تنها چند ماژول پر کاربرد و در دسترس را معرفی میکنیم و در یک قسمت دیگر به معرفی ماژولهای کاربردیتر میپردازیم.
در اولین قسمت از این لیست به سراغ ماژول ping میرویم.
این ماژول هیچ گونه آرگومانتی ندارد و وظیفه آن اطلاع از وجود و ارتباط سالم با سرور های هدف میباشد.
به طور مثال:
# ansible web-server -i /var/lib/ansible/inventory -m ping
خروجی این دستور به ما نشان میدهد که آیا web-server ها روشن و در دسترس برای انجام کار هستند یا خیر.
دومین ماژول، ماژول shell میباشد که در بالا درباره آن بحث شد.
کاری که این ماژول برای ما انجام میدهد این است که آرگومانت خود را عینا در داخل شل یا محیط دستورگیری سرور مقصد اجرا میکند.
به طور مثال:
# ansible web-server -i /var/lib/ansible/inventory -m shell -a ‘ifconfig eno1’
دستور بالا وظیفه دریافت و نمایش اطلاعات اینترفیس یا شبکه eno1 را در صورت وجود در هر سرور بر عهده دارد.
همین دو ماژول بالا برای تست و انجام تمرین در حد همین مقاله کافی بوده و در مقالههای بعد بیشتر درباره ماژولها با همدیگر یاد میگیریم.
این دومین قسمت از قسمتهای سریالی آموزش کاربردی انسیبل که قصد داریم به صورت هفتگی این سری را با همدیگر جلو ببریم.
امیدوارم توضیحات من برای شما در یادگیری انسیبل کاربردی باشد.
در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید میتوانید با بنده در کامنتها یا در ایمیل s.m.javadi001@gmail.com میان گذاشته تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.
با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.
تا هفته بعد...