loading...

server22

Content extracted from http://server22.blog.ir/rss/?1581012889

بازدید : 254
يکشنبه 3 اسفند 1398 زمان : 20:09
  • 1
  • 2
  • 3
  • 4
  • 5

server22

مقدمه اتوماسیون سرور مجازیاکنون به دلیل ماهیت یکبار مصرف محیط‌های کاربردی مدرن ، نقش اساسی در مدیریت سیستم‌ها ایفا می‌کند. ابزارهای مدیریت پیکربندی مانند 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 ServerAdmin webmaster@localhost ServerName {{ http_host }} ServerAlias www.{{ http_host }} DocumentRoot /var/www/{{ http_host }} ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Options -Indexes DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm files/wp-config.php.j2 فایل wp-config.php.j2 یکی دیگر از الگوهای Jinja است که برای تنظیم فایل اصلی پیکربندیWordPress استفاده می‌شود. متغیرهای مورد استفاده در این الگو در فایل متغیر vars / default.yml تعریف شده اند. کلیدهای احراز هویت منحصر به فرد با استفاده از یک عملکرد ترکیبی ایجاد می‌شوند. files/info.php.j2 سرور مجازی‌هایی که باید هدف این مجموعه باشند (all) شروع می‌شود ، و پس از آن برای تعریف اینکه وظایف باید بصورت پیش فرض با افزایش امتیاز (sudo) انجام شود یا خیر، از become: true استفاده می‌کند. سپس ، فایل متغیر vars / default.yml را برای بارگذاری گزینه‌های پیکربندی شامل می‌شود. playbook.yml --- - hosts: all become: true vars_files: - vars/default.yml tasks: - name: Install prerequisites apt: name=aptitude update_cache=yes state=latest force_apt_get=yes tags: [ system ] - name: Install LAMP Packages apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] tags: [ system ] - name: Install PHP Extensions apt: name={{ item }} update_cache=yes state=latest loop: "{{ php_modules }}" tags: [ system ] # Apache Configuration - name: Create document root file: path: "/var/www/{{ http_host }}" state: directory owner: "www-data" group: "www-data" mode: '0755' tags: [ apache ] - name: Set up Apache VirtualHost template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Reload Apache tags: [ apache ] - name: Enable rewrite module shell: /usr/sbin/a2enmod rewrite notify: Reload Apache tags: [ apache ] - name: Enable new site shell: /usr/sbin/a2ensite {{ http_conf }} notify: Reload Apache tags: [ apache ] - name: Disable default Apache site shell: /usr/sbin/a2dissite 000-default.conf notify: Restart Apache tags: [ apache ] # MySQL Configuration - name: Set the root password mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock tags: [ mysql, mysql-root ] - name: Remove all anonymous user accounts mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Remove the MySQL test database mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Creates database for WordPress mysql_db: name: "{{ mysql_db }}" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Create MySQL user for WordPress mysql_user: name: "{{ mysql_user }}" password: "{{ mysql_password }}" priv: "{{ mysql_db }}.*:ALL" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] # UFW Configuration - name: "UFW - Allow HTTP on port {{ http_port }}" ufw: rule: allow port: "{{ http_port }}" proto: tcp tags: [ system ] # WordPress Configuration - name: Download and unpack latest WordPress unarchive: src: https://wordpress.org/latest.tar.gz dest: "/var/www/{{ http_host }}" remote_src: yes creates: "/var/www/{{ http_host }}/wordpress" tags: [ wordpress ] - name: Set ownership file: path: "/var/www/{{ http_host }}" state: directory recurse: yes owner: www-data group: www-data tags: [ wordpress ] - name: Set permissions for directories shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type d -exec chmod 750 {} \;" tags: [ wordpress ] - name: Set permissions for files shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type f -exec chmod 640 {} \;" tags: [ wordpress ] - name: Set up wp-config template: src: "files/wp-config.php.j2" dest: "/var/www/{{ http_host }}/wordpress/wp-config.php" tags: [ wordpress ] handlers: - name: Reload Apache service: name: apache2 state: reloaded - name: Restart Apache service: name: apache2 state: restarted با خیال راحت این فایل‌ها را به بهترین وجه متناسب با نیازهای فردی خود در گردش کارتان تغییر دهید. نتیجه در این راهنما ، ما از Ansible برای خودکارسازی روند نصب و راه اندازی وب سایت وردپرس با LAMP روی سرور مجازیاوبونتو 18.04 استفاده کرده ایم. اگر می‌خواهید کارهای دیگری در این playbook را برای سفارشی سازی تنظیمات سرور مجازیخود انجام دهید ، لطفاً به راهنمای مقدماتی Ansible ( پیکربندی مدیریت 101: نوشتن Ansible Playbooks) مراجعه کنید.

بازدید : 244
يکشنبه 3 اسفند 1398 زمان : 20:09
  • 1
  • 2
  • 3
  • 4
  • 5

server22

مقدمه

code-server یک کد مایکروسافت ویژوال استودیو است که روی یک سرور مجازیاز راه دور اجرا می‌شود و مستقیماً از مرورگر شما قابل دسترسی است. این بدان معنی است که می‌توانید از دستگاه‌های مختلف با سیستم عامل‌های مختلف استفاده کنید و همیشه یک محیط توسعه مداوم داشته باشید. در این آموزش ، پلت فرم cloud IDE کد سرور مجازیرا بر روی دستگاه Ubuntu 18.04 خود تنظیم کرده و آن را در دامنه خود قرار می‌دهید ، که با Let’s Encrypt ایمن شده است. برای نسخه دقیق تر این آموزش ، به نحوه راه اندازی رمز سرور مجازیCloud IDE در اوبونتو 18.04 مراجعه کنید. پیش نیازها ⦁ سرور مجازیکه اوبونتو 18.04 را اجرا میکند با حداقل 2 گیگابایت حافظه رم ، دسترسی به ریشه و یک حساب سودو و غیر ریشه. می‌توانید این کار را با دنبال کردن راهنمای اولیه تنظیم سرور مجازیUbuntu 18.04 انجام دهید. ⦁ Nginx که روی سرور مجازیشما نصب شده است. برای راهنمایی در مورد نحوه انجام این کار ، مراحل 1 تا 4 نحوه نصب Nginx را در اوبونتو 18.04 مطالعه کنید. ⦁ یک نام دامنه به طور کامل ثبت شده برای‌هاست کد سرور مجازی، که به سرور مجازیشما اشاره میکند. در این آموزش از code-server.your-domain استفاده می‌شود. می‌توانید نام دامنه را در Namecheap خریداری کنید ، یکی از آنها را به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید. ⦁ هر دو سابقه DNS زیر برای سرور مجازیشما تنظیم شده اند. برای جزئیات بیشتر در مورد چگونگی اضافه کردن آنها می‌توانید این مقدمه را در DigitalOcean DNS دنبال کنید. ⦁ یک پرونده با your-domain که آدرس IP عمومی‌ سرور مجازیشما را نشان می‌دهد. ⦁ یک پرونده با دامنه www. your-domain که آدرس IP عمومی‌ سرور مجازیشما را نشان می‌دهد. مرحله 1 - نصب کد سرور مجازیبرای ذخیره کلیه داده‌ها برای کد سرور مجازی، دایرکتوری زیر را ایجاد کنید: ⦁ $ mkdir ~/code-server به سمت آن جهت دهی کنید: ⦁ $ cd ~/code-server به صفحه نسخه‌های کد سرور مجازیGithub مراجعه کرده و آخرین لینوکس را انتخاب کنید. آن را با استفاده از آدرس زیر دانلود کنید: ⦁ $ wget https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz ⦁ آرشیو را باز کنید: ⦁ $ tar -xzvf code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz ⦁ به دیرکتوری حاوی کد سرور مجازیقابل اجرا بروید: ⦁ $ cd code-server2.1692-vsc1.39.2-linux-x86_64 ⦁ برای دسترسی به کد سرور مجازیقابل اجرا در سیستم خود ، آن را با دستور زیر کپی کنید: ⦁ $ cd code-server2.1692-vsc1.39.2-linux-x86_64 ⦁ پوشه‌‌‌ای برای کد سرور مجازیایجاد کنید تا داده‌های کاربر ذخیره شود: ⦁ $ sudo mkdir /var/lib/code-server ⦁ یک سرویس سیستمی‌، code-server.service ، در دیرکتوری / lib / systemd / system ایجاد کنید: ⦁ $ sudo nano /lib/systemd/system/code-server.service ⦁ خطوط زیر را اضافه کنید: /lib/systemd/system/code-server.service [واحد] توضیحات = سرور مجازیکد پس از = nginx.service [سرویس] نوع = ساده محیط = PASSWORD = کلمه کلیدی شما ExecStart = / usr / local / bin / code-server - host 127.0.0.1 --user-data-dir / var / lib / code-server - رمز ورود راه اندازی مجدد = همیشه [نصب] WantedBy = multi-user.targe /lib/systemd/system/code-server.service [Unit] Description=code-server After=nginx.service [Service] Type=simple Environment=PASSWORD=your_password ExecStart=/usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password Restart=always [Install] WantedBy=multi-user.target --host 127.0.0.1 آن را به localhost متصل می‌کند. --user-data-dir /var/lib/code-server دایرکتوری داده‌های کاربر آن را تنظیم می‌کند. --auth password مشخص می‌کند که باید بازدید کنندگانی معتبر با رمز عبور وجود داشته باشند. به یاد داشته باشید که your_password را با رمز عبور دلخواه خود جایگزین کنید. فایل را ذخیره کنید و ببندید. سرویس کد سرور مجازیرا شروع کنید: ⦁ $ sudo systemctl start code-server ⦁ بررسی کنید که به درستی شروع شده است: ⦁ $ sudo systemctl status code-server ⦁ خروجی مشابه با زیر مشاهده میکنید: Output ● code-server.service - code-server Loaded: loaded (/lib/systemd/system/code-server.service; disabled; vendor preset: enabled) Active: active (running) since Mon 2019-12-09 20:07:28 UTC; 4s ago Main PID: 5216 (code-server) Tasks: 23 (limit: 2362) CGroup: /system.slice/code-server.service ├─5216 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password └─5240 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password ... بعد از راه اندازی مجدد سرور مجازی، سرویس کد سرور مجازیرا فعال کنید: ⦁ $ sudo systemctl enable code-server ⦁ مرحله 2 – به نمایش گذاشتن کد سرور مجازیاکنون Nginx را به عنوان یک پروکسی معکوس برای کد سرور مجازیپیکربندی خواهید کرد. برای ذخیره پیکربندی جهت نمایش دادن کد سرور مجازیدر دامنه خود ، code-server.conf را ایجاد کنید: sudo nano /etc/nginx/sites-available/code-server.conf خطوط زیر را برای تنظیم بلوک سرور مجازیخود با دستورالعمل‌های لازم اضافه کنید: /etc/nginx/sites-available/code-server.conf server { listen 80; listen [::]:80; server_name code-server.your_domain; location / { proxy_pass http://localhost:8080/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Accept-Encoding gzip; } } code-server.your_domain را با دامنه مورد نظر خود جایگزین کنید ، سپس فایل را ذخیره کنید و ببندید. برای فعال کردن پیکربندی این سایت ، یک سیملینک از آن ایجاد کنید: ⦁ $ sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf ⦁ اعتبار پیکربندی را تست کنید: ⦁ $ sudo nginx -t ⦁ خروجی زیر را مشاهده خواهید کرد: Output nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful برای اجرای پیکربندی ، Nginx را مجدداً راه اندازی کنید: ⦁ $ sudo systemctl restart nginx ⦁ مرحله 3 - دامنه خود را ایمن کنید اکنون دامنه خود را با استفاده از گواهی Let’s Encrypt TLS ایمن می‌کنید. منبع بسته Certbot را به سرور مجازیخود اضافه کنید: ⦁ $ sudo add-apt-repository ppa:certbot/certbot ⦁ Certbot و افزونه Nginx آن را نصب کنید: ⦁ $ sudo apt install python-certbot-nginx ⦁ ufw را برای پذیرش ترافیک رمزگذاری شده پیکربندی کنید: ⦁ $ sudo ufw allow https ⦁ خروجی به شکل زیر خواهد بود: Output Rule added Rule added (v6) برای پیکربندی برای اجرا مجدد آن را بارگذاری کنید: ⦁ $ sudo ufw reload ⦁ خروجی زیر نشان داده می‌شود: Output Firewall reloaded به دامنه کد سرور مجازیخود بروید. رمز عبور سرور مجازیکد خود را وارد کنید. مرز نمایش داده شده در دامنه خود را مشاهده خواهید کرد. برای تأمین امنیت آن ، یک مجوز Let’s Encrypt TLS با استفاده از Certbot نصب کنید. برای دامنه خود با دستور زیر درخواست یک مجوز بدهید: ⦁ $ sudo certbot --nginx -d code-server.your_domain ⦁ برای اطلاع رسانی‌های فوری یک آدرس ایمیل ارائه دهید ، شرایط خدمات EFF را بپذیرید ، و تصمیم بگیرید که آیا تمام ترافیک HTTP را به HTTPS هدایت کنید یا خیر. خروجی مشابه زیر خواهد بود: Output IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/code-server.your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/code-server.your_domain/privkey.pem Your cert will expire on ... To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" ... Certbot با موفقیت گواهینامه‌های TLS را ایجاد میکند و آنها را در پیکربندی Nginx برای دامنه شما اعمال می‌نماید. نتیجه اکنون شما دارای کد سرور مجازی، و یک cloud IDE همه کاره هستید که بر روی سرور مجازیUbuntu 18.04 نصب شده است ، در دامنه شما قرار گرفته و با استفاده از گواهی نامه‌های Let’s Encrypt ایمن شده است. برای اطلاعات بیشتر در مورد ویژگی‌ها و دستورالعمل‌های دقیق در مورد سایر مؤلفه‌های کد سرور مجازی، به مطالب ویژوال استودیو کد مراجعه کنید.

بازدید : 319
يکشنبه 3 اسفند 1398 زمان : 20:09
  • 1
  • 2
  • 3
  • 4
  • 5

server22

مقدمه

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 موارد زیر را در ویرایشگر پیست کنید ، سپس آن را ذخیره کنید و ببندید:

Configuration Management Hands On

This server was provisioned using Ansible

سپس الگوی vhost.tpl را ویرایش خواهیم کرد. به دیرکتوری templates رفته و فایل را با nano ویرایش کنید: $ cd ~/roles/apache/templates $ nano vhost.tpl این خطوط را در ویرایشگر پیست کنید ، سپس آن را ذخیره کرده و ببندید: ServerAdmin webmaster@localhost DocumentRoot {{ doc_root }} AllowOverride All Require all granted دایرکتوری متا اگر رول ما به رول دیگری بستگی داشت ، می‌توانستیم فایلی در دایرکتوری متا به نام 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 شما تمیز و خوانا است. از همه مهمتر ، رول‌ها به شما امکان می‌دهند تا به راحتی از کد استفاده کرده و به اشتراک بگذارید و تغییرات خود را به صورت کنترل شده و مدولار پیاده سازی کنید.

تعداد صفحات : 0

آمار سایت
  • کل مطالب : 3
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • بازدید امروز : 1
  • بازدید کننده امروز : 1
  • باردید دیروز : 0
  • بازدید کننده دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 1
  • بازدید ماه : 13
  • بازدید سال : 40
  • بازدید کلی : 1216
  • کدهای اختصاصی