مقدمه اتوماسیون سرور مجازی اکنون به دلیل ماهیت یکبار مصرف محیطهای کاربردی مدرن ، نقش اساسی در مدیریت سیستمها ایفا میکند. ابزارهای مدیریت پیکربندی مانند Ansible معمولاً برای ساده سازی فرایند خودکار سازی تنظیم سرور مجازی با تعیین مراحل استاندارد برای سرور مجازی جدید استفاده میشود و در عین حال خطای انسانی مرتبط با تنظیمات دستی را نیز کاهش میدهد. Ansible یک معماری ساده را ارائه میدهد که نیازی به نصب نرم افزار ویژه روی گرهها ندارد. همچنین مجموعهای از ویژگیها و ماژولهای داخلی را فراهم میکند که نوشتن اسکریپتهای اتوماسیون را تسهیل میکند. در این راهنما نحوه استفاده از Ansible برای خودکارسازی مراحل موجود در راهنمای ما درباره نحوه نصب وردپرس با LAMP در اوبونتو 18.04 توضیح داده شده است. وردپرس محبوب ترین CMS (سیستم مدیریت محتوا) در اینترنت است که به کاربران امکان میدهد وبلاگها و وب سایتهای قابل انعطاف را فراتر از MySQL با پردازش PHP تنظیم کنند. پس از راه اندازی ، تقریباً تمام مراحل اجرا از طریق web frontend قابل انجام است. پیش نیازها برای اجرای تنظیم خودکار ارائه شده توسط playbook که در این راهنما در مورد آن صحبت میکنیم ، به این موارد نیاز دارید: • یک گره کنترل Ansible : یک دستگاه اوبونتو 18.04 که دارای Ansible نصب شده و تنظیم شده است تا با استفاده از کلیدهای SSH به میزبانهای Ansible شما متصل شود. اطمینان حاصل کنید که گره کنترل دارای یک کاربر معمولی با مجوزهای sudo باشد و فایروال فعال نیز داشته باشد ، همانطور که در راهنمای راه اندازی سرور مجازی اولیه ما توضیح داده شده است. برای تنظیم Ansible ، لطفا راهنمای ما در مورد نحوه نصب و پیکربندی Ansible در اوبونتو 18.04 را دنبال کنید. • یک یا چندهاست Ansible: یک یا چند سرور مجازی از راه دور Ubuntu 18.04 که قبلاً به کمک راهنمای نحوه استفاده از Ansible برای خودکارسازی تنظیمات اولیه سرور مجازی در اوبونتو 18.04 تنظیم شده اند. قبل از ادامه کار ، ابتدا باید اطمینان حاصل کنید که گره کنترل Ansible شما قادر به اتصال و اجرای دستورات درهاست (های) Ansible باشد. برای بررسی اتصال ، لطفاً مرحله 3 نحوه نصب و پیکربندی Ansible در اوبونتو 18.04 را بررسی کنید. این Playbook چه کاری انجام میدهد؟ این playbook Ansible از طریق روشی که در راهنمای ما در مورد نحوه نصب وردپرس با LAMP در اوبونتو 18.04 ارائه شده است ، جایگزینی برای اجرای دستی فراهم میکند. اجرای این playbook اقدامات زیر را درهاست Ansible شما انجام خواهد داد: 1) aptitude را نصب میکند ، که توسط Ansible به عنوان جایگزینی برای مدیر بسته apt ارجحیت داده میشود. 2)بستههای LAMP مورد نیاز و پسوندهای PHP را نصب میکند. 3) یک Apache VirtualHost جدید برای وب سایت وردپرس ایجاد و فعال مینماید. 4) ماژول بازنویسی Apache (mod_rewrite) را فعال میکند. 5) وب سایت پیش فرض Apache را غیرفعال میکند. 6) رمز ورود را برای کاربر root MySQL تنظیم میکند. 7) حسابهای MySQL ناشناس را حذف و پایگاه داده را آزمایش میکند. 8) برای وب سایت وردپرس یک بانک اطلاعاتی MySQL و کاربر جدید ایجاد میکند. 9)UFW را تنظیم میکند تا ترافیک HTTP روی درگاه پیکربندی شده انجام شود (به طور پیش فرض 80). 10) وردپرس را دانلود و باز میکند. 11) مالکیت و مجوزهای صحیح دایرکتوری را تنظیم میکند. 12) با استفاده از الگوی ارائه شده ، فایل wp-config.php را تنظیم کنید. پس از پایان کار playbook ، بر اساس گزینههایی که در متغیرهای پیکربندی خود تعریف کرده اید ، یک نصب وردپرس در یک محیط LAMP اجرا میشود. نحوه استفاده از این Playbook اولین کاری که ما باید انجام دهیم این است که وردپرس را در playbook LAMP و متعلقات آن از منبع do-community / ansible-playbooks را دریافت کنیم. ما باید این منبع را به یک پوشه محلی در داخل گره کنترل Ansible تبدیل کنیم. اگر قبلا با دنبال کردن راهنمای دیگری ، این منبع را کلون کرده اید ، به کپیansible-playbooks موجود خود دسترسی پیدا کنید و یک دستور git pull را اجرا کنید تا مطمئن شوید که مطالب به روز شده را دارید: ⦁ $ cd ~/ansible-playbooks ⦁ ⦁ $ git pull اگر این اولین بار است که از منابع do-community / ansible-playbooks استفاده میکنید ، باید با کلون کردن منبع در پوشه هوم فولدر خود شروع کنید: ⦁ $ cd ~ ⦁ ⦁ $ git clone https://github.com/do-community/ansible-playbooks.git ⦁ ⦁ $ cd ansible-playbooks فایلهای مورد علاقه ما در داخل پوشه wordpress-lamp_ubuntu1804 قرار گرفته اند که دارای ساختار زیر است: wordpress-lamp_ubuntu1804 ├── files │ ├── apache.conf.j2 │ └── wp-config.php.j2 ├── vars │ └── default.yml ├── playbook.yml └── readme.md در اینجا در مورد هر یک از این فایلها آمده است: files / apache.conf.j2: فایل الگو برای تنظیم Apache VirtualHost. files / wp-config.php.j2: فایل الگو برای تنظیم فایل پیکربندی WordPress. vars / default.yml: فایل متغیر برای شخصی سازی تنظیمات playbook. playbook.yml: فایل playbook ، شامل کارهایی که باید روی سرور مجازی راه دور اجرا شود. readme.md: فایل متنی حاوی اطلاعات مربوط به این playbook . ما برای سفارشی سازی گزینههای playbook ، فایل متغیرهای آن را ویرایش خواهیم کرد. به دایرکتوری wordpress-lamp_ubuntu1804 دسترسی پیدا کنید و فایل vars / default.yml را با استفاده از ویرایشگر خط فرمان مورد نظر خود باز کنید: ⦁ $ cd wordpress-lamp_ubuntu1804 ⦁ ⦁ $ nano vars/default.yml این فایل شامل چند متغیر است که باید به آن توجه کنید: vars/default.yml --- #System Settings php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL Settings mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP Settings http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" لیست زیر شامل توضیح مختصری در مورد هر یک از این متغیرها و نحوه تغییر آنها میباشد: php_modules: آرایهای حاوی افزونههای PHP که باید برای پشتیبانی از راه اندازی وردپرس شما نصب شوند. شما نیازی به تغییر این متغیر ندارید ، اما در صورت نیاز برای ستاپ خاص شما، باید افزودنههای جدید به لیست اضافه کنید. mysql_root_password: کلمه عبور مورد نظر برای حساب MySQL ریشه mysql_db: نام پایگاه داده MySQL که باید برای وردپرس ایجاد شود. mysql_user: نام کاربر MySQL که باید برای وردپرس ایجاد شود. mysql_password: رمز عبور برای کاربر جدید MySQL. http_host: نام دامنه شما. http_conf: نام فایل پیکربندی که در Apache ایجاد میشود. http_port: درگاه HTTP برای اینهاست مجازی ، که به طور پیش فرض 80 است. پس از اتمام به روزرسانی متغیرهای داخل vars / default.yml ، این فایل را ذخیره کنید و ببندید. اگر از nano استفاده کرده اید ، این کار را با فشار دادن CTRL + X ، Y انجام دهید. سپس enter را بزنید. اکنون آماده اجرای این playbook در یک یا چند سرور مجازی هستید. بیشتر playbookها به گونه پیش فرض تنظیم شده اند که در هر سرور مجازی موجود شما اجرا میشود. ما میتوانیم از فلگ -l استفاده کنیم تا مطمئن شویم که فقط یک زیر مجموعه از سرور مجازیها یا یک سرور مجازی منفرد تحت تأثیر Playbook قرار گرفته است. ما همچنین میتوانیم از فلگ -u استفاده کنیم تا مشخص کنیم از کدام کاربر روی سرور مجازی از راه دور استفاده میکنیم تا دستورات playbook را روی میزبان از راه دور متصل کنیم. برای اجرای playbook فقط در server1 ، با اتصال به عنوان sammy ، میتوانید از دستور زیر استفاده کنید: ⦁ $ ansible-playbook playbook.yml -l server1 -u sammy ⦁ خروجی مشابه این دریافت خواهید کرد: Output PLAY [all] ***************************************************************************************************************************** TASK [Gathering Facts] ***************************************************************************************************************** ok: [server1] TASK [Install prerequisites] *********************************************************************************************************** ok: [server1] … TASK [Download and unpack latest WordPress] ******************************************************************************************** changed: [server1] TASK [Set ownership] ******************************************************************************************************************* changed: [server1] TASK [Set permissions for directories] ************************************************************************************************* changed: [server1] TASK [Set permissions for files] ******************************************************************************************************* changed: [server1] TASK [Set up wp-config] **************************************************************************************************************** changed: [server1] RUNNING HANDLER [Reload Apache] ******************************************************************************************************** changed: [server1] RUNNING HANDLER [Restart Apache] ******************************************************************************************************* changed: [server1] PLAY RECAP ***************************************************************************************************************************** server1 : ok=22 changed=18 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 توجه: برای کسب اطلاعات بیشتر در مورد نحوه اجرای Ansible playbooks ، راهنمای Ansible Cheat Sheet Guide را بررسی کنید. پس از پایان راه اندازی Playbook ، میتوانید به مرورگر وب خود بروید تا نصب وردپرس را از همانجا به پایان برسانید. به نام دامنه یا آدرس IP عمومیسرور مجازی خود بروید: http: // server_host_or_IP صفحهای مانند این را مشاهده خواهید کرد: پس از انتخاب زبانی که میخواهید برای نصب وردپرس خود استفاده کنید ، مرحله نهایی برای تنظیم کاربر و رمزعبور وردپرس به شما ارائه میشود تا بتوانید وارد کنترل پنل شوید: با کلیک بر روی صفحه ، شما به صفحهای منتقل میشوید که از شما خواسته میشود وارد شوید: پس از ورود به سیستم ، شما به داشبورد مدیریت وردپرس منتقل میشوید: برخی از مراحل بعدی رایج برای سفارشی سازی نصب وردپرس شامل انتخاب تنظیمات permalinks برای پستهای شما (میتوانید در Settings > Permalinks بیابید) و انتخاب تم جدید (در Appearance > Themes) میباشد. محتوای Playbook میتوانید تنظیمات سرور LAMP وردپرس را که در این آموزش مشاهده شده است ، در پوشه wordpress-lamp_ubuntu1804 در داخل منبع DigitalOcean Community Playbooks مشاهده کنید. برای کپی یا دانلود مستقیم محتوای اسکریپت ، روی دکمه Raw به سمت بالای هر اسکریپت کلیک کنید. محتویات کامل Playbook و همچنین فایلهای مرتبط با آن نیز برای راحتی شما در اینجا گنجانده شده است. vars / default.yml فایل متغیر default.yml حاوی مقادیری است که در وظایف playbook از جمله تنظیمات بانک اطلاعاتی و نام دامنه برای پیکربندی در Apache استفاده خواهد شد. vars/default.yml #System Settings php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL Settings mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP Settings http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" files/apache.conf.j2 فایل apache.conf.j2 یک فایل الگوی Jinja 2 است که یک آپشن جدید Apache VirtualHost را پیکربندی میکند. متغیرهای مورد استفاده در این الگو در فایل متغیر vars / default.yml تعریف شده اند. files/apache.conf.j2
مقدمه 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 موارد زیر را در ویرایشگر پیست کنید ، سپس آن را ذخیره کنید و ببندید:
چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04 تنظیم کرد (شروع سریع)تعداد صفحات : 0