بعد از قسمت صفرم، در قسمت اول در مورد اینونتوریها(Inventories) به تفصیل صحبت کردیم. در این قسمت به «ماژولهای انسیبل» (Ansible Modules) خواهیم پرداخت.
ماژولها – Modules
برای درک بهتر ماژولها میبایست با مفاهیم پایه در انسیبل آشنا بشویم.
-
نمادهای رنگی
در اسنیبل در خروجی به صورت عمده از سه رنگ متفاوت استفاده میکند که هر کدام از این رنگها بیانگر نتیجهای است.
- قرمز:
این رنگ بیانگر خطاهایی است که هنگان اجرا شدن انسیبل رخ داده است. - زرد:
این رنگ بیانگر ایجاد تغیررات و همزمان موفقیت آمیز بودن اجرای انسیبل است. - سبز:
این رنگ بیانگر موفقیت آمیز بودن اجرای انسیبل است اما بر خلاف رنگ زرد انسیبل تغییری انجام نداده است. - صورتی:
این رنگ بیانگر هشدارها و توصیه های انسیبل است. مثلا در هنگام استفاده از یک ماژول یا متغیر منسوخ.
- Idempotence
به صورت تحت اللفظی Idempotency به این معنی است که تیجه اجرای یکبار عملیات هوشمند (Idempotence) به صورت نظیر به نظیر برابر با n بار اجرای همان عملیات است بدون اینکه عمل خاصی صورت بگیرد. در اسنیبل تفاوت رنگ زرد با رنگ سبز نمایانگر مفهوم Idempotency است. و این از ویژگیهای کلیدی انسیبل به شمار میآید.
در این قسمت در خصوص ماژولهای معمول در انسیبل صحبت خواهم کرد و همچنین نحوه استفاده از این ماژولها را در مد Ad-Hoc مورد بررسی قرار خواهیم داد. نکته ای در اینجا لازم به ذکر است و آن اینکه تعداد زیادی ماژول استاندارد برای انسیبل در دسترس است و بنابراین ما در این سری آموزش به تعدادی از آنها خواهیم پرداخت. انتظار میرود شما مخاطب عزیز به لینک پیوست مراجعه کرده و از مستندات انسیبل ماژول/ماژولهای مورد نیاز خود را مطالعه بفرمائید.
-
ماژولهای مرسوم
همانطور که اشاره شد ماژولهای زیادی در دسترس است. ما در این بین به برخی ماژولها مرسوم که نقش ویژهای برای ما ایفا میکنند میپردازیم.
-
- ماژول ستاپ – The Setup Module
این ماژول برای جمع آوری اطلاعات در مورد سیستم به یاری ما خواهد آمد. پلیبوکها(Playbook) بصورت خودکار این ماژول را صدا میکنند تا بصورت متغیر، اطلاعات مفیدی در خصوص هاستها در اختیار ما بگذارند که در پلیبوکها مورد استفاده قرار بگیرند. مثلا نسخه توزیع سیستم عامل.
این ماژول همچنین میتواند به طور مستقیم از مسیر /usr/bin/ansible
فراخوانی بشود و بررسی کند که چه متغیراهای در یک هاست در دسترس هستند. انسیبل بصورت خودکار Fact های زیادی از یک سیستم ارائه میکند. این ماژول از سیستم عامل ویندوز هم برای جمعآوری اطلاعات (Facts) استفاده میکند.
برای اجرای این ماژول میتوان میتوانیم نام آن را بعد سوئچ -m
صدا بزنیم.
$ ansible centos1 -m stup
-
- ماژول فایل – The File Module
این ماژول برای عملتهای مختلف در مورد فایلها مورد استفاده قرار خواهد گرفت. این ماژول میتواند مشخصه (Attribute) یک فایل، symlink ویا دایرکتوری را تغییر بدهد.
ماژولهای دیگری هم این تغییرات را پشتیبانی میکنند مثلا ماژول Copy که مورد آن نیز صحبت خواهیم کرد. و همچنین ماژولهای Template و Assemble. لازم به ذکر است که برای سیستم عامل ویندوز از ماژول win_file
استقاده میشود.
استفاده از ماژول File با ترکیت آرگومانهای path
و state
به ما این امکان را میدهد که یک فایل در مسیر مشخص ایجاد کنیم.
$ ansible all -m file -a 'path=/tmp/ansibleForDevOps state=touch'
توجه کنید که در مثال بالا سوئیچ -a برای پاس دادن آرگومانها به ماژول فایل است (لطفا بمنظور مطالعه بیشتر این ماژول به مستندات انسیبل مراجعه فرمایید). به عنوان مثال ما میتوانیم از همین ماژول استفاده کنیم و از آرگومان mode بهره ببریم که دسترسی به این فایل را در سطح سیستم را محدود کنیم.
$ ansible all -m file -a 'path=/tmp/ansibleForDevOps state=file -mode=600'
-
- کپی – The Copy Module
این ماژول برای کپی کردن یک فایل از یک هاست لوکال (localhost) یا ریومت (remote hosts) به یک مسیر در هاستهای انسیبل مورد استفاده قرار میگیرد. برای هاستهای ویندوز از ماژول win_copy
استفاده میشود.
$ ansible all -m copy -a 'src=/tmp/ansibleForDevOps dest=/tmp/ansible.txt'
در مثال بالا ماژول Copy فایل /tmp/ansible
را سیستم از کنترلر که در بالا به عنوان لوکال هاست (localhost) معرفی شد بر روی همه هاستها در مسیر /tmp/ansible
کپی میکند.
بجر لوکالهاست ماژول کپی قادر است که فایلها را از ریومت هاست (remote host) هم بر روی هاستها و یک مسیر مشخص کپی نماید.
$ ansible all -m copy -a 'remote_src=yes src=/tmp/anisbleForDevOps dest=/tmp/ansible'
-
- ماژول کامند(دستور) – The Command Module
وظیفه ماژول کامند به طور خاص اجرای فرامین بر روی هاستهای مورد نظر است. ولی این ماژول از طریق shell اجرا نمیشود. برای اینکه از متغیرهایی مثل $HOME
، >
،<
یا |
بهره ببریم باید از ماژول shell استفاده کنیم. برای هاستهای ویندوز از ماژول win_command استفاده میشود.
$ anisble all -m command -a 'uname -r' -o
انسیبل به طور پیش فرض از این ماژول به عنوان ماژول پیش فرض استفاده میکند. این بدین معنی است که اجرای فرمان زیر نتیجهای برابر با فرمان قبلی خواهد داشت:
$ anisble all -a 'uname -r' -o
برای درک بهتر این ماژول میتوانیم از دستور id به عنوان آرگومان به ماژول Command استفاده کنیم. همانطور که در قسمت صفرم میحیط آزمایشگاهی خودمان را آماده میکردیم، متوجه شدیم که هاستهای اوبنتو از یوزر vagrant با روش sudo به یوزر root میرسیدند و هاستهای centos بطور مستقمی از یوزر root استفاده میکردند.
$ ansible all -a 'id'
همانگونه که ملاحظه میکنید به جز هاست ubuntu-c که بصورت local از انسیبل دستور میگیرد در باقی موارد تمام دستورات تحت قلمرو روت (root authority) اجرا میشوند.
از دیگر ویژگیهای ماژول کامند، ایجاد و یا حذف متغیر است.
$ ansible all -a 'touch /tmp/command_module creates=/tmp/command_module'
وقتی ما دستور بالا را برای اولین بار اجرا کنیم این ماژول با touch فایل را ایجاد میکند. اما با پاس دادن آرگومان creates به این ماژول از او میخواهیم که در نظر بگیرد که یک دستور ایجاد است. و با دوباره اجرا کردن همین فرمان متوجه میشویم که انسیبل با رنگ سبز با ما جواب موفقیت دستور را بر میگرداند.
حال اگر بجای touch از rm اسفتاده کنیم میتوانیم با پاس دادن آرگومان removes این قابلیت را به انسیبل یاد بدهیم.
$ ansible all -a 'rm /tmp/command_module removes=/tmp/command_module'
-
انسیبل داک – Ansible-Doc
آخرین مطلبی که امروز به آن میپردازیم، دستور انسیبل داک است است. این دستور برای استفاده کردن از مستندات انسیبل در محیط ترمینال است.
خیلی عالی.
کیفیت صدا ولی خیلی خوب نیست.
ممنون
سلام در قسمت دوم از بخش دوم آموزش انسیبل برای دواپس هم این موضوع را همرسانی کردید. خیلی ممنون از نظرتون. حتما سعی میکنم در آینده این مشکل را برطرف کنم.
ارادتمند
فرق کپی با فایل چیه؟
سلام دوست من.
ممنون از پیامتون. فرقهای زیادی دارند. با ماژول فایل میشه یک فایل ایجاد کرد از وجود اون مطمئن شد و سطح دسترسی را با متغیر mode تعیین کرد. اما فایل اساسا به یک source نیاز داره و یک destination که این source متیونه لوکالهاست یا ریموتهاست باشه. در این خصوص در قسمتهای مفصل تر صحبت میکنم که ملموس تر بشه 🙂
ممنونم
خواهش میکنم 🙂
چه قدر عالی.
ممنونم 🙂
سلام.
ممنون از پستهای خوب. شما فقط بصورت ad-hock از انسیبل استفاده میکنید؟
سلام همایون جان و ممنون از پیامت.
من تا قسمت چهارم که YAML هست را نوشتم و ویدئو را رکورد کردم. این پیش نیازی برای Palybook ها هست که بزودی در چهار قسمت منتشر خواهد شد. با من همراه باشید.
ممنونم اشکان جان از اینکه زحمت کشیدی و این پست های خوب رو تهیه کردی . خسته نباشی
سلام علی.
خیلی ممنون که مطالعه/تماشا کردی