سلام و خسته نباشید عرض میکنم خدمت شما همراهان هفتگی سری مقالات آموزش انسیبل.
این هفته با موضوع جدیدی به نام ابزارهای انسیبل در خدمت شما هستم تا چند مورد از مهم ترین ابزارهای انسیبل را به شما معرفی کنم.
در قسمت اول این سری مجموعه درباره مخزن انسیبل یا جایی در انسیبل که سرورهای هدف با مشخصات آنها را در آن تعریف میکنیم با یکدیگر گفتوگو کردیم؛ همچنین در قسمت دوم درباره چگونگی استفاده از دستورات انسیبل به صورت ابتدایی و کلی بحث کردیم.
در قسمت پیش درباره استفاده از تسک انسیبل حرف زدیم و جهت گذار از آن بحث به قسمت پلیبوکهای انسیبل که سطح حرفهایتری از استفاده از انسیبل میباشد نیاز داریم تا ابزارهای مختلف خود برای استفاده در انسیبل را بیشتر بشناسیم.
در این مقاله قصد دارم تا ۵ مورد از پر استفادهترین ماژولها یا ابزار انسیبل در حال حاضر را به شما معرفی کنم.
در نظر داشته باشید که ابزارهای معرفی شده به صورت کامل معرفی نمیشوند و تنها از نوع سادهای از استفاده از این ابزار برای توضیح استفاده خواهمکرد.
۱. ابزار file:
به طوری کلی این ابزار به شما کمک میکند که فایلهای سیستم را مدیریت کنید، از دسترسی و سطح اجازه برای اجرا شدن، خوانده شده و نوشته شدن توسط یوزرها و گروههای مختلف تا لینک کردن و دیگر امکانات.
به طور مثال ابن ابزار به روش رو به رو نوشته و استفاده میشود:
- name: Change file ownership, group and permissions
ansible.builtin.file:
path: /etc/foo.conf
owner: foo
group: foo
mode: '0644'
چهار آرگومانت path، owner، group و mode آرگومانتهای اصلی این بزار میباشند.
۱.۱ آرگومانت اول path:
این قسمت وظیفه آدرس دهی فایل مقصد را بر عهدهدارد.
۱.۲ آرگومانت دوم owner:
در این قسمت تعریف میکنیم که در سیستم سازنده این فایل و یوزری که دسترسی کامل به این فایل دارد چه کسی تعریف شود.
۱.۳ آرگومانت سوم group:
در این قسمت گروهی که اجازه دسترسی به این فایل را دارند قرار داده میشوند.
۱.۴ آرگومانت چهارم mode:
در این قسمت حالت اجرایی فایل با استفاده از کدهای مختصری که کاملا شبیه عددی میباشد که در دستور chmod استفاده میکنیم قرار داده میشود.
۲. ابزار include:
در این ابزار میتوانیم یک فایل که یک تسک یا پلی در آن قرار دارد را استفادهکنیم.
به طور مثال در نظر داشته باشید که داخل یک پلیبوک میخواهید در یک سری از سرورهای تعریف شده در مخزن یک پلی دیگر که در فایل دیگری گذاشته اید اجرا شود؛ در همچین موقعی میتوانیم از ابزار include استفاده کنیم.
نحوه نوشتار عادی این ابزار در داخل یک پلی بوک به صورت زیر میباشد:
- name: Include a play after another play
include: otherplays.yaml
در این قسمت از پلی بوک فایلی که بعد از include معرفی شده در سرور(های) هدف اجرا خواهد شد.
۳. ابزار template:
این ابزار یک تغییر دهنده و ایجاد کننده فایل است که بر اساس استاندارد زبان jinja2 کار میکند.
شما میتوانید با استفاده از این ابزار یک فایل j2 در هاست خود ساخته و با توجه به ساختار نوشتار خودتان این فایل را با یک فایل در داخل سرور هدف تغییر دهید.
در نظر داشته باشید که این روش برای تنظیم فایلهای متفاوت در تعداد زیادی سرور استفاده میشود.
ابزار template به روش زیر استفاده میشود:
- name: Template a file to /etc/file.conf
ansible.builtin.template:
src: /mytemplates/foo.j2
dest: /etc/file.conf
owner: bin
group: wheel
mode: '0644'
۳.۱ آرگومانت src:
این قسمت فایل مبدا که در داخل دستگاه ارائه دهنده انسیبل میباشد را نشان میدهد و آدرس این فایل j2 را باید در این قسمت بنویسیم.
۳.۲ آرگومانت dest:
فایلی که در جلو این آرگومانت قرار میگیرد فایل میباشد که در سرور هدف تغییر میکند.
۳.۳ آرگومانت owner:
این قسمت سازنده فایل و یوزری که در سیستم عامل اجازه دسترسی به این فایل دارد رو نمایانگر میکند.
۳.۴ آرگومانت group:
این قسمت گروهی که به این فایل دسترسی دارند را نشان داده و به این گروه اجازه میدهد تا از محتوای فایل ساخته شده در مقصد استفاده کنند.
۳.۵ آرگومانت mode:
در این قسمت حالت اجرایی فایل با استفاده از کدهای مختصری که کاملا شبیه عددی میباشد که در دستور chmod استفاده میکنیم قرار داده میشود.
۴. ابزار command
این ابزار وظیفه دارد که دستوری که به آن میدهید را در سرور هدف اجرا کند.
تنها ملاحظاتی که در باره این دستور وجود دارد این است که در فضای shell اجرا نمیشود در نتیجه تمامی متغیر ها از قبیل $HOSTNAME در این دستور کارا نبوده و همچینین علائمی مانند | در این دستور به دلیل این که در محیط غیر قابل اجرا میباشد.
این ابزار ساخته نشده که دستورات در سرور با آن اجرا شوند. دلیلی که این ابزار ساخته شده آن است که اجرای دستورات در شرایط خاص مورد بررسی قرار بگیرد.
نحوه استفاده از این دستور در داخل پلی بوک به روش رو به رو میباشد:
- name: Run command if /path/to/database does not exist (with 'args' keyword)
ansible.builtin.command: /usr/bin/make_database.sh db_user db_name
args:
creates: /path/to/database
در متن بالا جلوی اسم ابزار فایل اجراییای که باید در آن هنگام اجرا شود نوشته شده و همچنین دو آرگومانت db_user و db_name به این فایل فرستاده شده اند.
این دستور با این دو آرگومانت در صورتی ساخته میشود که فایل /path/to/database در سرور وجود نداشته باشد.
۵. ابزار service
در این ابزار قرار نیست کار عجیبی انجام گیرد؛ صرفا قرار است که یک سرویس در سیستم عامل هدف در شرایطی قرار گیرد که ما از آن انتظار داریم.
به طور مثال فکر کنید نیاز دارید که سرویس httpd در قسمتی از کار حتما روشن باشد.
برای این کار اصولیترین اتفاق آن است که از این سرویس استفاده کنید.
دلیل این موضوع آن است که در هنگام اجرای دستور توسط ابزاری command یا shell امکان خطا در اجرا وجود دارد ولی وقتی از این ابزار استفاده میکنیم انسیبل حتما این کار را انجام خواهد داد و در صورت عدم موفقیت حتما خارج میشود.
برای انجام این اتفاق میتوانیم درخواست خود را در فایل پلی بود اینگونه ثبت کنیم:
- name: Start service httpd, if not started
ansible.builtin.service:
name: httpd
state: started
این سومین قسمت از قسمتهای سریالی آموزش کاربردی انسیبل بود که در آن قصد داریم به صورت هفتگی این سری را با همدیگر جلو ببریم.
امیدوارم توضیحات من برای شما در یادگیری انسیبل کاربردی باشد.
در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید میتوانید با بنده در میان گذاشته تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.
با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.
تا هفته بعد...