مقدمه
Ansible یک ابزار مدیریت پیکربندی است که برای خودکار سازی سرور مجازی های کنترل کننده برای مدیران و تیم های عملیاتی طراحی شده است. با استفاده از Ansible می توانید از یک سرور مجازی مرکزی منفرد استفاده کنید تا بسیاری از سیستمهای مختلف از راه دور را با استفاده از SSH و Python به عنوان تنها ابزار مورد نیاز کنترل و پیکربندی کنید.
Ansible وظایف خود را بر روی سرور مجازی هایی انجام می دهد که بر اساس تعریف وظیفه آنها را مدیریت می کند. این کارها از ماژول های داخلی Ansible با استفاده از قطعه های کوچک YAML برای هر کار استفاده می کند.
هرچه تعداد و تنوع سیستمهایی که شما با یک گره کنترل Ansible مدیریت می کنید پیچیده تر می شود ، معقول است که وظایف را با هم در playbooks Ansible گروه بندی کنید. استفاده از این playbook ها نیاز به اجرای بسیاری از وظایف فردی روی سیستم های از راه دور را برطرف می کند ، در عوض به شما امکان می دهد تمام محیط ها را به طور هم زمان با یک فایل واحد پیکربندی کنید.
با این حال ، وقتی که playbooks وظیفه تنظیم بسیاری از سیستم های مختلف با کارهای مختلف برای هر سیستم را دارند ، می توانند پیچیده تر شوند بنابراین Ansible همچنین به شما امکان می دهد تا وظایفی را در یک ساختار دایرکتوری به نام Role سازماندهی کنید. در این پیکربندی ، playbooks به جای وظایف ، رول ها را فراخوانی می کنند ، بنابراین شما هنوز هم می توانید وظایف را با هم گروه بندی کرده و سپس در سایر playbooks از رول ها استفاده مجدد کنید. رول ها همچنین به شما امکان می دهد قالب ها ، فایل های استاتیک و متغیرها را به همراه کارهای خود در یک قالب ساختاری جمع آوری کنید.
در این آموزش چگونگی ایجاد رول ها و چگونگی اضافه کردن قالب ها ، فایل های استاتیک و متغیرها به یک رول مورد بررسی قرار خواهد گرفت. پس از آشنایی با اصول رول های ساختای ، از Ansible Galaxy استفاده خواهیم کرد تا رول های مرتبط با جامعه را در playbooks وارد کنیم. با پایان این آموزش قادر خواهید بود برای سرور مجازی های خود رول های خاص محیطی خود را ایجاد کرده و از آنها در playbooks خود استفاده کنید تا یک یا بسیاری از سیستم ها را مدیریت کنید.
پیش نیازها
برای دنبال کردن این آموزش ، باید Ansible را نصب و پیکربندی کنید تا بتوانید playbooks را ایجاد و اجرا کنید. شما همچنین نیاز به درک نحوه نوشتن playbooks Ansible حساس دارید.
رول Ansible چیست؟
در آموزش های پیش نیاز ، شما یاد گرفتید که چگونه ابزار اصلی Ansible را با استفاده از دستور ansible در یک ترمینال اجرا کنید. همچنین آموخته اید که چگونه وظایف را در playbooks جمع آوری کرده و آنها را با استفاده از دستور playbooks ansible اجرا کنید. مرحله بعدی رفتن از اجرای دستورات منفرد ، به سمت وظایف ، و playbooks ، سازماندهی مجدد همه چیز با استفاده از یک رول Ansible است.

رول ها سطحی از انتزاع در صدر کارها و playbook هستند که به شما امکان می دهد پیکربندی Ansible خود را در قالب مدولار و قابل استفاده مجدد سازماندهی کنید. هرچه عملکرد و انعطاف پذیری بیشتری را به playbooks خود اضافه می کنید ، آنها گسترده میشوند و نگهداری شان می تواند دشوار شود. رول ها به شما امکان می دهد یک playbook پیچیده را به بخش های جداگانه و کوچکتر تقسیم کنید که با یک نقطه ورودی مرکزی هماهنگ شوند. به عنوان مثال ، در این آموزش کل playbook.yml که با آنها کار خواهیم کرد به شرح زیر است:
Example Playbook
1—

2- hosts: all

3 become: true
4 roles:
5 – apache

6 vars:

7 doc_root: /var/www/example

مجموعه تمام کارهایی که برای پیکربندی یک وب سرور مجازی Apache انجام می شود ، در رول apache که ایجاد خواهیم کرد ، درج خواهد شد. این رول به جای لیست کردن تکالیف به صورت جداگانه مانند آنچه در نسخه پیکربندی مدیریت 101 انجام دادیم ، به شرح زیر تمام کارهایی را که باید برای نصب Apache انجام شود ، تعریف می کند.
ساماندهی ستاپ Ansible  شما به صورت رول ها به شما امکان می دهد از مراحل پیکربندی مشترک بین انواع مختلف سرور مجازیها مجدد استفاده کنید. حتی اگر این کار با وجود چندین فایل وظیفه در یک playbook نیز امکان پذیر باشد ، رول ها به ساختار دایرکتوری شناخته شده و کنوانسیون نام فایل متکی هستند تا به صورت خودکار فایل هایی که در این بازی استفاده می شوند را بارگیری کنند.
به طور کلی ، ایده های پشت رول ها این است که به شما امکان می دهد با استفاده از یک ساختار پایدار ، وظایف خود را با یکدیگر به اشتراک بگذارید و از آنها استفاده مجدد کنید ، در حالی که نگهداری آنها بدون انجام کارهای تکراری برای همه زیرساخت های شما آسان می شود.
ایجاد رول
برای ایجاد رول Ansible  به یک ساختار دایرکتوری اختصاصی نیاز دارید. رول ها همیشه به این طرح دایرکتوری نیاز دارند تا Ansible بتواند آنها را پیدا کرده و از آنها استفاده کند.

ما در اینجا فرض می کنیم که از دایرکتوری هوم کاربر به عنوان دایرکتوری کاربری Ansible استفاده کرده اید. اگر پیکربندی Ansible خود را در یک مکان دیگر نگه داشته باشید ، باید (cd) را در آن دیرکتوری تغییر دهید.
برای شروع ، بیایید دایرکتوری به نام roles ایجاد کنیم. وقتی می خواهیم در ادامه این آموزش رول جدید خود را در یک playbook  استفاده کنیم، Ansible به اینجا نگاه می کند.
$ cd ~

$ mkdir roles

$ cd roles
در این دایرکتوری رول هایی را تعریف خواهیم کرد که قابل استفاده مجدد در چندین playbook  و سرور مجازی های مختلف هستند. هر رولی که ایجاد خواهیم کرد نیاز به دیرکتوری خاص خود دارد. ما می خواهیم نمونه playbook  Apache را از آموزش  Configuration Management 101: Writing Ansible Playbooks  بگیریم و آن را به یک رول قابل استفاده مجدد Ansible تبدیل کنیم.
برای ارجاع، این playbook  از آن آموزش است:
playbook.yml
1—
2- hosts: all
3 become: true
4 vars:
5 doc_root: /var/www/example
6 tasks:
7 – name: Update apt
8 apt: update_cache=yes
9
10 – name: Install Apache

11 apt: name=apache2 state=latest
12
13 – name: Create custom document root
14 file: path={{ doc_root }} state=directory owner=www-data group=www-data
15
16 – name: Set up HTML file

17 copy: src=index.html dest={{ doc_root }}/index.html owner=www-data group=www-data mode=0644
18
19 – name: Set up Apache virtual host file
20 template: src=vhost.tpl dest=/etc/apache2/sites-available/000-default.conf
21 notify: restart apache
22
23 handlers:
24 – name: restart apache
25 service: name=apache2 state=restarted
در ابتدا ، یک دایرکتوری Apache برای رول خود ایجاد می کنیم و آن را با دیرکتوری های مورد نیاز جمع کنیم:
$ mkdir apache

$ cd apache
در مرحله بعدی مجموعه زیر دایرکتوری های مورد نیاز را ایجاد خواهیم کرد که به Ansible اطلاع می دهد که باید از محتویات به عنوان یک رول استفاده کند. با استفاده از دستور mkdir این دایرکتوری ها را ایجاد کنید:
$ mkdir defaults files handlers meta templates tasks vars
این دیرکتوری ها برای اجرای رول ما شامل کلیه کد ها می باشند. بسیاری از رول ها بسته به پیچیدگی کارهایی که انجام می دهند فقط از یک یا چند مورد از این دایرکتوری ها استفاده خواهند کرد. هنگام نوشتن رول های خود ، ممکن است نیازی به ایجاد همه این دایرکتوری ها نباشد.
در اینجا توضیحی در مورد آنچه هر دایرکتوری نشان می دهد آورده شده است:
defaults: این دایرکتوری به شما امکان می دهد متغیرهای پیش فرض را برای رول های شامل یا وابسته تنظیم کنید. هر پیش فرض تنظیم شده در اینجا می تواند در playbooks  یا فایل های موجودی تنظیم شود.
files: این دایرکتوری حاوی فایل های استاتیک و فایلهای اسکریپتی است که ممکن است در یک سرور مجازی از راه دور کپی شده یا اجرا شوند.
handlers : همه هندلر هایی که قبلاً در playbooks  شما بوده اند اکنون می توانند در این دایرکتوری قرار بگیرند.
Meta : این دایرکتوری برای ابرداده رول ها ، كه معمولاً برای مدیریت وابستگی استفاده می شود ، محفوظ است. به عنوان مثال ، می توانید لیستی از رول ها را تعریف كنید كه باید قبل از استناد به رول فعلی اعمال شوند.
templates: این دایرکتوری برای قالب هایی اختصاص داده شده است که تولید فایل در هاست از راه دور را انجام میدهند. قالب ها معمولاً از متغیرهایی استفاده می کنند که در فایل های واقع در دایرکتوری vars و اطلاعات جمع آوری شده هاست در زمان اجرا، تعریف شده اند.
tasks: این دایرکتوری شامل یک یا چند فایل با کارهایی است که بطور معمول در بخش وظایف یک playbook معمولی Ansible تعریف می شود. این کارها می توانند به طور مستقیم فایل ها و الگوهای موجود در دایرکتوری های مربوطه خود را در داخل رول ، بدون نیاز به ارائه مسیر کاملی برای فایل ، ارجاع دهند.
Vars : متغیرهای یک رول را می توان در فایل های داخل این دایرکتوری مشخص کرد و سپس به مکان دیگری در یک رول ارجاع داد.
اگر فایلی به نام main.yml در یک دایرکتوری وجود داشته باشد ، محتوای آن به طور خودکار به playbook ای که رول را فرامیخواند اضافه می شود. با این حال ، این امر در مورد دایرکتوری های files  و templates  صدق نمی کند ، زیرا محتوای آنها به صراحت ارجاع داده شود.
تبدیل یک Playbook به یک رول
اکنون که با آنچه در هر دایرکتوری در رول Ansible استفاده می شود آشنا هستید ، می توانیم playbook Apache را به رولی تبدیل کنیم تا امور بهتر سازماندهی شود.
ما باید ساختارهای role / / apache2 / d subdirectories from را از قسمت آخر تنظیم کنیم. حال باید برخی از فایلهای YAML را برای تعریف رول خود ایجاد کنیم.
ایجاد فایل main.yml کارها
ما با زیرمجموعه وظایف شروع خواهیم کرد. اکنون به آن دایرکتوری منتقل میشویم:
$ cd ~/roles/apache/tasks
ما باید یک فایل main.yml را در این دایرکتوری ایجاد کنیم. آن را با کل محتوای Playbook Apache جمع می کنیم و سپس ویرایش می کنیم تا فقط شامل وظایف باشد.
$ nano main.yml
وقتی شروع می کنید ، فایل باید از این قرار باشد:

main.yml
1—
2- hosts: all
3 become: true
vars:
5 _root: /var/www/example
6
7 tasks:
– name: Update apt
9 apt: update_cache=yes
10
11- name: Install Apache
12 apt: name=apache2 state=latest
13
14 – name: Create custom document root
15 file: path={{ doc_root }} state=directory owner=www-data group=www-data
16
17 – name: Set up HTML file

18 copy: src=index.html dest={{ doc_root }}/index.html owner=www-data group=www-data mode=0644
19
20 – name: Set up Apache virtual host file
21 template: src=vhost.tpl dest=/etc/apache2/sites-available/000-default.conf
22 notify: restart apache
23
24 handlers:
25 – name: restart apache
26 service: name=apache2 state=restarted
ما فقط می خواهیم خط اول — و خطوط قسمت tasks را برجسته نگه داریم. ما همچنین می توانیم فضاهای فرعی را به سمت چپ وظایف خود حذف کنیم. همچنین برای فعال کردن یک ماژول Apache به نام modsecurance یک بخش جدید اضافه خواهیم کرد که بعداً در این آموزش پیکربندی خواهیم کرد. پس از این تغییرات ، فایل جدید ~ / role / apache / works / main.yml ما به این شکل ظاهر می شود:
main.yml
1—

2- name: Update apt

3 apt: update_cache=yes

4

5- name: Install Apache

6 apt: name=apache2 state=latest

7

8- name: Create custom document root

9 file: path={{ doc_root }} state=directory owner=www-data group=www-data

10

11- name: Set up HTML file

12 copy: src=index.html dest={{ doc_root }}/index.html owner=www-data group=www-data mode=0644

13

14- name: Set up Apache virtual host file
15 template: src=vhost.tpl dest=/etc/apache2/sites-available/000-default.conf

16 notify: restart apache
اکنون پیگیری و فهم فایل tasks آسان تر است زیرا فقط شامل مراحل واقعی است که هنگام استفاده از رول Apache انجام می شود.
توجه داشته باشید که چگونه خطوط copy و template به ترتیب از src = index.html و src = vhost.tpl برای فایل های مرجع در رول ما استفاده می کنند ، بدون اینکه مسیر قبلd داشته باشkد. ساختار دایرکتوری رول ما اجازه می دهد فایل ها و قالب ها را مستقیماً با نام آنها ارجاع دهیم ، و Ansible آنها را به طور خودکار برای ما پیدا می کند.
هنگام پایان ویرایش آن ، فایل را ذخیره کنید و ببندید.
ایجاد فایل main.yml هندلرها
اکنون که توده ای از playbook را در فایل وظایف / main.yml داریم ، باید بخش هندلر ها را به یک فایل واقع در handlers / main.yml منتقل کنیم.
ابتدا در زیر مجموعه هندلرها در رول ما cd را انجام دهید:
$ cd ~/roles/apache/handlers
دوباره ، فایل را در ویرایشگر متن خود باز کنید و کل محتویات اصلی playbook.yml را پیست کنید:
$ nano main.yml
قسمت هایی که باید آنها را نگهداریم دوباره مشخص شده است:
playbook.yml
1—

2- hosts: all

3 become: true

4 vars:

5 doc_root: /var/www/example

6 tasks:

7 – name: Update apt

8 apt: update_cache=yes

9

10 – name: Install Apache

11 apt: name=apache2 state=latest

12

13 – name: Create custom document root

14 file: path={{ doc_root }} state=directory owner=www-data group=www-data

15

16 – name: Set up HTML file
17 copy: src=index.html dest={{ doc_root }}/index.html owner=www-data group=www-data mode=0644
18

19 – name: Set up Apache virtual host file

20 template: src=vhost.tpl dest=/etc/apache2/sites-available/000-default.conf

21 notify: restart apache

22
23 handlers:

24 – name: restart apache
25 service: name=apache2 state=restarted

فضای سفید را از جلوی هندلرها نیز رفع کنید. در پایان ، فایل باید به صورت زیر باشد:

– name: restart apache
service: name=apache2 state=restarted

پس از اتمام فایل را ذخیره کنید و ببندید.
افزودن فایل ها و قالب ها
اکنون که وظایف و هندلرهایی داریم ، مرحله بعدی این است که اطمینان حاصل کنیم که یک فایل index.html و یک الگوی vhost.tpl وجود دارد تا Ansible بتواند آنها را پیدا کند و روی سرور مجازی های راه دور ما قرار دهد. از آنجا که ما به این فایل ها در فایل های tasks/main.yml ارجاع داده ایم ، آنها باید وجود داشته باشند درغیر این صورتAnsible قادر به اجرای صحیح این رول نیست.
ابتدا فایل index.html را در دایرکتوری ~ / role / apache / files ایجاد کنید:
$ cd ~/roles/apache/files
$ nano index.html
موارد زیر را در ویرایشگر پیست کنید ، سپس آن را ذخیره کنید و ببندید:
<html>
<head><title>Configuration Management Hands On</title></head>

<h1>This server was provisioned using <strong>Ansible</strong></h1>

</html>

سپس الگوی vhost.tpl را ویرایش خواهیم کرد. به دیرکتوری templates رفته و فایل را با nano ویرایش کنید:
$ cd ~/roles/apache/templates
$ nano vhost.tpl
این خطوط را در ویرایشگر پیست کنید ، سپس آن را ذخیره کرده و ببندید:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot {{ doc_root }}

<Directory {{ doc_root }}>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

دایرکتوری متا
اگر رول ما به رول دیگری بستگی داشت ، می توانستیم فایلی در دایرکتوری متا به نام main.yml اضافه کنیم. این فایل ممکن است مشخص کند که این رول به رولی به نام “apt” بستگی دارد. در رول Apache  که ما ایجاد کرده ایم هیچ وابستگی لازم نداریم. با این حال ، در صورت نیاز فرضی به رول دیگری مانند “apt” ، فایل در ~ / role / apache / meta / main.yml ممکن است به شرح زیر باشد:

dependencies:
– apt

این تضمین می کند که رول “apt” قبل از رول Apache  ما اجرا می شود. ایجاد وابستگی هایی مانند این برای رول های پیچیده تری که قبل از اجرای رول واقعی نیاز به وجود سایر نرم افزارها یا پیکربندی ها دارند، مفید است.
دایرکتوری Vars
ما قبلاً گفتیم که یک دایرکتوری “vars” وجود دارد که می تواند برای تعیین متغیرها برای رول ما استفاده شود. در حالی که پیکربندی پارامترهای پیش فرض برای یک رول از طریق فایل vars / main.yml ممکن است ، این معمولاً برای رول های کوچکتر توصیه نمی شود.
دلیل استفاده نکردن از دایرکتوری “vars” این است که باعث می شود جزئیات پیکربندی شما در سلسله مراتب رول ها قرار بگیرد. رول بیشتر وظایف عمومی و وابستگی را به عهده دارد ، در حالی که متغیرها داده پیکربندی هستند. اتصال این دو ، استفاده مجدد از رول شما در جای دیگر را دشوارتر می کند.
در عوض ، بهتر است جزئیات پیکربندی را خارج از رول مشخص کنید تا بتوانید به راحتی رول را بدون نگرانی از افشای اطلاعات حساس به اشتراک بگذارید. همچنین ، متغیرهای اعلام شده در یک رول به راحتی توسط متغیرهای مکانهای دیگر رد می شوند. خیلی بهتر است داده های متغیر را در playbookهایی قرار دهید که برای کارهای خاص استفاده می شوند.
با این حال ، ذکر دایرکتوری “vars” هنوز هم خالی از لطف نیست، زیرا با رول های پیچیده تر مفید است. به عنوان مثال ، اگر یک رول به پشتیبانی از توزیع های مختلف لینوکس نیاز دارد ، تعیین مقادیر پیش فرض برای متغیرها می تواند برای مدیریت نام های مختلف بسته ها ، نسخه ها و تنظیمات مفید باشد.
شمول فایل های دیگر
بعضی مواقع وقتی رول ها با وظایف متعدد ایجاد می کنید ، درک و فهم وابستگی ها یا منطق شرطی دشوار خواهد شد. در چنین شرایطی می توانید وظایف خود را در فایل های خود تقسیم کرده و آنها را در tasks/main.yml قرار دهید.

به عنوان مثال ، اگر ما یک مجموعه کار اضافی برای پیکربندی TLS برای سرور مجازی Apache خود داشتیم ، می توانستیم آن ها را در فایل خودشان جدا کنیم. ما می توانیم فایل tasks/tls.yml را فراخوانی کنیم و آن را مانند این در فایل tasks/main.yml قرار دهیم:
. . .
tasks:
– include: roles/apache/tasks/tls.yml

یک Playbook اسکلتی ایجاد کنید
اکنون که ساختار رول خود را پیکربندی کرده ایم ، می توانیم آن را با حداقل playbook  در مقایسه با نسخه یکپارچه در ابتدای این آموزش استفاده کنیم.
استفاده از رول ها به این طریق به ما این امکان را می دهد تا از playbooks استفاده کنیم تا آنچه را که سرور مجازی باید انجام دهد را بدون نیاز به تکرار همیشگی وظایف برای انجام این کار ، اعلان کنیم.
برای ایجاد یک playbook حداقل که شامل رول Apache ما باشد ، از دایرکتوری رول ها (دایرکتوری هوم ما در این مثال). cd out کنید. اکنون می توانیم یک فایل playbook ایجاد کنیم:
$ cd ~
$ nano playbook.yml
پس از باز کردن فایل ، موارد زیر را پیست کنید و سپس فایل را ذخیره کرده و ببندید:

– hosts: all
become: true
roles:
– apache
vars:
– doc_root: /var/www/example

اطلاعات بسیار کمی در این فایل مورد نیاز است. ابتدا سرور مجازی هایی را که می خواهیم این رول را اجرا کنند ، لیست می کنیم ، بنابراین از – hosts: all استفاده می کنیم . اگر گروهی از هاست ها به نام webservers را داشتید می توانستید آنها را هدف قرار دهید. در مرحله بعد ، اعلام می کنیم که از چه رول هایی استفاده می کنیم. در این حالت فقط یکی وجود دارد ، بنابراین از خط – apache استفاده می کنیم.
این کل playbook ما است که بسیار کوچک و خواندن و فهمیدن آن سریع است. مرتب کردن playbook هایی مانند این به ما امکان می دهد تا به جای فعالیت روی کارهای شخصی ، روی اهداف کلی برای پیکربندی سرور مجازی تمرکز کنیم. حتی نکته بهتر آن که، اگر چندین رول مورد نیاز داشته باشیم ، اکنون می توانیم آنها را در بخش رول ها در playbook خود لیست کنیم و آنها به ترتیبی که ظاهر می شوند اجرا شوند.

به عنوان مثال ، اگر ما برای راه اندازی سرور مجازی وردپرس با استفاده از Apache و MySQL رول هایی داشتیم ، احتمالا playbook داشتیم که مشابه زیر میبود:

– hosts: wordpress_hosts
become: true
roles:
– apache
– php
– mysql
– wordpress
vars:
– doc_root: /var/www/example

این ساختار playbook به ما امکان می دهد درباره این که می خواهیم یک سرور مجازی چگونه باشد ، خیلی دقیق پیش برویم. سرانجام ، از آنجا که playbook ها رول ها را فرا میخوانند ، دستور اجرای ما دقیقاً مشابه حالتی است که گویا همه در یک فایل واحد قرار گرفته اند:
$ ansible-playbook playbook.yml

Output
PLAY [all] ******************************************************************************************

TASK [Gathering Facts] ******************************************************
ok: [64.225.15.1]

TASK [apache : Update apt] **************************************************
ok: [64.225.15.1]

TASK [apache : Install Apache] **********************************************
changed: [64.225.15.1]

TASK [apache : Create custom document root] *********************************
changed: [64.225.15.1]

TASK [apache : Set up HTML file] ********************************************
changed: [64.225.15.1]

TASK [apache : Set up Apache virtual host file] *****************************
changed: [64.225.15.1]

RUNNING HANDLER [apache : restart apache] ***********************************
changed: [64.225.15.1]

PLAY RECAP ******************************************************************
64.225.15.1 : ok=7 changed=5 unreachable=0 failed=0

به عنوان مثال می توانید فایل playbook.yml به نام apache.yml را فراخوانی کنید ، تا نام فایل رول (های) موجود در آن را منعکس کند.
گلکسی Ansible
آموزش در مورد رول های Ansible بدون بررسی منابع موجود از طریق Galaxy Ansible کامل نخواهد بود. کهکشان جستجوگر ، منبعی از رول های کمکی کاربر است که می توانید برای انجام کارهای مختلف بدون نیاز به نوشتن آنها ، به playbooks اضافه کنید.
به عنوان مثال ، می توانیم یک ماژول مفید Apache به نام mod_security2 را به playbook خود اضافه کنیم تا آپاچی را با برخی تنظیمات امنیتی اضافی پیکربندی کنیم. ما از یک رول ansible Galaxy با عنوان apache_modsecurance استفاده خواهیم کرد. برای استفاده از این رول ، آن را به صورت محلی دانلود خواهیم کرد و سپس آن را در playbook خود قرار خواهیم داد.
ابتدا با ابزار ansible-galaxy آشنا می شویم. ما با استفاده از ابزار Galaxy را جستجو خواهیم کرد و سپس یک رول را از لیست انتخاب شده از دستور جستجو انتخاب می کنیم:
$ ansible-galaxy search “PHP for RedHat/CentOS/Fedora/Debian/Ubuntu”
دستور جستجو خروجی شبیه به زیر را به همراه خواهد داشت:

Output
Found 21 roles matching your search:

Name Description
—- ———–
alikins.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
bpresles.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
entanet_devops.ansible_role_php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
esperdyne.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
fidanf.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
frogasia.ansible-role-php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
geerlingguy.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
icamys.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
jhu-sheridan-libraries.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
jibsan94.ansible_php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
KAMI911.ansible_role_php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
monsieurbiz.geerlingguy_php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
nesh-younify.ansible-role-php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
net2grid.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
thom8.ansible-role-php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
v0rts.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
vahubert.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
Vaizard.mage_php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
viasite-ansible.php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
vvgelder.ansible-role-php PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
(END)

اگر نتایج زیادی حاصل شود ، Ansible از دستور less برای خروجی نتایج جستجو استفاده می کند ، که تا زمانی که q را فشار دهید، ترمینال شما را مسدود می کند. این کار برای زمانی مفید است که نتایج جستجو گسترده باشد و شما باید در میان آنها صفحه گذاری کنید ، که می توانید با فشار دادن space این کار را انجام دهید.
ما رول geerlingguy.php را برای playbook خود انتخاب خواهیم کرد. اگر مایل هستید اطلاعات بیشتری درباره رول هایی که با نتایج جستجوی شما برگشته اند ، بخوانید ، می توانید به صفحه جستجوی Galaxy مراجعه کرده و اسم رول مورد نظر خود را در محل نام رول پیست کنید.
برای دانلود رول برای استفاده در playbook ، از دستور installible-galaxy استفاده می کنیم:
$ ansible-galaxy install geerlingguy.php
هنگامی که آن فرمان را اجرا می کنید ، باید خروجی مانند این را مشاهده کنید:
Output
– downloading role ‘php’, owned by geerlingguy
– downloading role from https://github.com/geerlingguy/ansible-role-php/archive/3.7.0.tar.gz
– extracting geerlingguy.php to /home/sammy/.ansible/roles/geerlingguy.php
– geerlingguy.php (3.7.0) was installed successfully

اکنون می توانیم رول را به فایل playbook.yml اضافه کنیم:

– hosts: all
become: true
roles:
– apache
– geerlingguy.php
vars:
– doc_root: /var/www/example
– php_default_version_debian: “7.2”

با قرار دادن رول پس از رول apache، اطمینان می دهیم که Apache قبل از تنظیمات مربوط به مکان رول geerlingguy.php ، روی سیستمهای از راه دور تنظیم و پیکربندی شده است. بسته به نحوه رفتار سرور مجازی های از راه دور ، می توانیم رول های mysql و wordpress را نیز به هر ترتیبی که انتخاب می کنیم ، شامل شویم.
اجرای ansible-playbook playbook.yml با رول Galaxy اضافه شده منجر به خروجی زیر خواهد شد:
Output
PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [64.225.15.1]

TASK [apache : Update apt] *****************************************************
changed: [64.225.15.1]

TASK [apache : Install Apache] *************************************************
changed: [64.225.15.1]

TASK [apache : Install modsecurity] ********************************************
changed: [64.225.15.1]

TASK [apache : Create custom document root] ************************************
changed: [64.225.15.1]

TASK [apache : Set up HTML file] ***********************************************
changed: [64.225.15.1]

TASK [apache : Set up Apache virtual host file] ********************************
changed: [64.225.15.1]

TASK [geerlingguy.php : Include OS-specific variables.] ************************
ok: [64.225.15.1]

TASK [geerlingguy.php : Define php_packages.] **********************************
ok: [64.225.15.1]

. . .

PLAY RECAP *********************************************************************
64.225.15.1 : ok=37 changed=15 unreachable=0 failed=0
(END)

نتیجه
رول های Ansible یک روش عالی برای ساختاردهی و تعریف چگونگی سرور مجازی های شما میباشد. حتی اگر فقط به playbooks برای هر یک از سرور مجازی های خود تکیه کرده اید ، ارزشش را دارد که نحوه استفاده از آنها را بیاموزید. اگر قصد استفاده گسترده از Ansible را دارید ، رول ها پیکربندی سطح میزبان را جدا از وظیفه خود نگه می دارند ، و اطمینان حاصل می کنند که کد Ansible شما تمیز و خوانا است. از همه مهمتر ، رول ها به شما امکان می دهند تا به راحتی از کد استفاده کرده و به اشتراک بگذارید و تغییرات خود را به صورت کنترل شده و مدولار پیاده سازی کنید.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04

نحوه نصب و استفاده از TimescaleDB در CentOS 7

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 (شروع سریع)

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10

نحوه نصب و استفاده ازRadamsa برای فوز کردن برنامه ها (تکنیک تست خودکار نرم افزار) و خدمات شبکه روی Ubuntu 18.04

نحوه نصب Docker Compose در Debian 10

چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose در اوبونتو 18.04

نحوه بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16.04

نحوه استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18.04

چگونه می توان پلتفرم كد سرور Cloud IDE را در اوبونتو 18.04 تنظیم كرد (شروع سریع)

چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی خود استفاده کرد

نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18.04

نحوه تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes در vpsgol با استفاده از Velero

نحوه نصب و استفاده از PostgreSQL در CentOS 7

چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو 18.4 تنظیم کرد

نحوه استقرار و مدیریت DNS با استفاده از DNSControl در Debian 10

چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7 تنظیم كرد

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی هلند – خرید وی پی اس – خرید vps هلند – خرید vps فرانسه

برچسب‌ها: