
اتوماسیون سرور یکی از فرآیندهای مهمی است که نقش عمده ای در مدیریت سیستم ایفا می کند. یکی از ابزارهای رایج مدیریت پیکربندی، Ansible است که بیشتر برای ساده سازی فرآیند نصب خودکار سرور، استفاده از روش های استاندارد برای سرورهای جدید و کاهش خطای انسانی در تنظیمات دستی این فرآیند استفاده می شود.
معماری Ansible ساده است و نیازی به نصب نرم افزار خاصی روی گره ها ندارد. علاوه بر این، این ابزار مجموعه ای از ویژگی ها و ماژول های داخلی را فراهم می کند که نوشتن اسکریپت های خودکار را بسیار آسان می کند.
در این مقاله وبلاگ پارس پک، نحوه استفاده از Ansible برای خودکار کردن فرآیند نصب داکر در اوبونتو 22.04 را به شما می گوییم و نحوه انجام آن را به صورت گام به گام به شما آموزش می دهیم. پس تا انتها با این آموزش همراه باشید.
پیش نیازها
برای اینکه بتوانید مراحل این آموزش را به ترتیب انجام دهید، به پیش نیازهای زیر نیاز دارید:
- Ansible Control Node: ماشینی با توزیع Ubuntu 22.04 که Ansible روی آن نصب و پیکربندی شده است تا از طریق SSH به میزبان Ansible متصل شود. اطمینان حاصل کنید که این گره به عنوان یک کاربر عادی با سطح دسترسی sudo اجرا می شود و فایروال برای آن فعال است.
- یک یا چند میزبان برای Ansible: این سرورها باید توزیع Ubuntu 22.04 را نیز نصب کرده باشند.
Playbook دقیقا چه کاری انجام می دهد؟
کتاب بازی Ansible جایگزینی برای نصب دستی Docker در اوبونتو 22.04 است. اجرای این playbook روی میزبان Ansible موارد زیر را انجام می دهد:
- Aptitude نصب خواهد شد. Aptitude توسط Ansible به عنوان جایگزینی برای مدیر بسته apt توصیه می شود.
- بسته منیجرهای مورد نیاز را نصب کنید
- کلید Docker GPT APT را نصب کنید
- مخزن رسمی Docker به منابع APT اضافه شد
- Docker را نصب کنید
- نصب ماژول Python Docker از طریق PIP
- تصویر پیش فرض مشخص شده توسط default_container_image را از داکر هاب دانلود کنید
- کانتینرهای مشخص شده توسط متغیر container_count را ایجاد کنید. هر یک از این کانتینرها در کانتینرهای جداگانه با استفاده از تصویر تعریف شده توسط default_container_image و دستور تعریف شده توسط default_container_command اجرا خواهند شد.
پس از اتمام کتاب بازی، تعداد کانتینرها بر اساس گزینه های تعریف شده در متغیرهای پیکربندی ایجاد می شود. برای شروع، با استفاده از کاربری با دسترسی sudo در سرور وارد گره کنترل Ansible شوید.
کاربردهای کتاب های بازی Ansible چیست؟
مرحله 1: Playbook را آماده کنید
در ابتدا بهتر است بدانید که هر زمان که در این آموزش از عبارت Task استفاده می شود، به معنای کوچکترین واحد عملی است که می توانید با استفاده از کتاب بازی Ansible فرآیند انجام آن را خودکار کنید. همه کارها در فایل playbook.yml وارد خواهند شد. برای شروع، باید فایل کتاب را با ویرایشگر متن مورد علاقه خود باز کنید:
nano playbook.yml
با استفاده از این دستور یک فایل YAML خالی باز می شود. قبل از اینکه شروع به اضافه کردن کارهای جدید کنیم، کد زیر را به این فایل اضافه کنید:
--- - hosts: all become: true vars: container_count: 4 default_container_name: docker default_container_image: ubuntu default_container_command: sleep 1
تقریباً تمام کتابهایی که با آن مواجه میشوید با کدی مشابه این شروع میشوند. خط میزبان به گره کنترل Ansible می گوید که کدام سرورها هدف این کتاب کار هستند. علاوه بر این، خط تبدیل میشود که نشان میدهد آیا همه دستورات با حقوق ریشه اجرا میشوند یا خیر.
گزینه های var به شما امکان می دهد داده ها را در متغیرها ذخیره کنید. در جدول زیر توضیح مختصری از هر یک از گزینه های این بخش ارائه شده است:
عامل | شرح |
تعداد_ظروف | تعداد ظروف برای ایجاد |
default_container_name | نام کانتینر پیشفرض |
default_container_image | تصویر پیشفرض Docker برای استفاده هنگام ایجاد کانتینر |
default_container_command | دستور پیش فرض برای اجرا در کانتینر جدید |
مرحله دوم: وظیفه Install Packages را به Playbook اضافه کنید
Ansible به طور پیش فرض وظایف Playbook را از بالا به پایین و همزمان اجرا می کند. بنابراین، باید در نظر داشته باشید که ترتیب قرار دادن وظایف مهم است و وظایف با اولویت بالاتر باید در ردیف های بالاتر قرار گیرند. علاوه بر این، می توانید مطمئن باشید که هیچ کار جدیدی راه اندازی نخواهد شد. مگر اینکه کار قبلی تکمیل شود.
نکته دیگری که باید در نظر گرفت این است که همه وظایف مستقل هستند و می توان از آنها در دیگر Playbook ها استفاده کرد. اولین کار یعنی Install Aptitude را با استفاده از کد زیر اضافه کنید. Aptitude ابزاری است که برای ارتباط با مدیر بسته لینوکس و نصب بسته های سیستم مورد نیاز استفاده می شود:
tasks: - name: Install aptitude apt: name: aptitude state: latest update_cache: true - name: Install required system packages apt: pkg: - apt-transport-https - ca-certificates - curl - software-properties-common - python3-pip - virtualenv - python3-setuptools state: latest update_cache: true
شما می توانید بسته ها را به دلخواه اضافه یا حذف کنید. بنابراین، می توانید مطمئن باشید که تمام بسته های مورد نیاز نه تنها وجود دارند. در عوض، تماس با بسته، آنها را از طریق APT به روز می کند.
برای آشنایی با Playbook و نحوه ایجاد و پیکربندی آن در Ansible، مقاله زیر را بخوانید.
کتاب بازی چیست؟
مرحله 3: وظیفه نصب Docker را به Playbook اضافه کنید
این کار آخرین نسخه Docker را از مخزن رسمی خود نصب می کند. این فرآیند کلید Docker GPG را برای تأیید بارگیری و مخزن رسمی به عنوان منبع دانلود اضافه می کند، بنابراین Docker را نصب می کند. علاوه بر این، ماژول داکر برای پایتون نیز نصب شده است:
- name: Add Docker GPG apt Key apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present - name: Add Docker Repository apt_repository: repo: deb https://download.docker.com/linux/ubuntu jammy stable state: present - name: Update apt and install docker-ce apt: name: docker-ce state: latest update_cache: true - name: Install Docker Module for Python pip: name: docker
مرحله 4: یک تصویر Docker و ظرف وظیفه را به Playbook اضافه کنید
ساخت کانتینرهای داکر در این مرحله با دانلود تصاویر داکر آغاز می شود. این تصاویر به طور پیش فرض از داکر هاب رسمی گرفته شده اند. با استفاده از این تصاویر، کانتینرهای Playbook با توجه به مشخصات تعیین شده در متغیرهای ذکر شده در ابتدای این مقاله ایجاد خواهند شد. برای این منظور از کدهای زیر استفاده کنید:
- name: Pull default Docker image community.docker.docker_image: name: "{{ default_container_image }}" source: pull - name: Create default containers community.docker.docker_container: name: "{{ default_container_name }}{{ item }}" image: "{{ default_container_image }}" command: "{{ default_container_command }}" state: present with_sequence: count={{ container_count }}
مرحله 5: تنظیمات ایجاد شده در Playbook را مرور کنید
اگر تنظیمات را تا این مرحله به درستی انجام داده اید، کتاب بازی شما باید به شکل زیر باشد:
--- - hosts: all become: true vars: container_count: 4 default_container_name: docker default_container_image: ubuntu default_container_command: sleep 1d tasks: - name: Install aptitude apt: name: aptitude state: latest update_cache: true - name: Install required system packages apt: pkg: - apt-transport-https - ca-certificates - curl - software-properties-common - python3-pip - virtualenv - python3-setuptools state: latest update_cache: true - name: Add Docker GPG apt Key apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present - name: Add Docker Repository apt_repository: repo: deb https://download.docker.com/linux/ubuntu jammy stable state: present - name: Update apt and install docker-ce apt: name: docker-ce state: latest update_cache: true - name: Install Docker Module for Python pip: name: docker - name: Pull default Docker image community.docker.docker_image: name: "{{ default_container_image }}" source: pull - name: Create default containers community.docker.docker_container: name: "{{ default_container_name }}{{ item }}" image: "{{ default_container_image }}" command: "{{ default_container_command }}" state: present with_sequence: count={{ container_count }}
ناگفته نماند، شما به راحتی می توانید این کتاب بازی را مطابق با نیازهای دقیق خود تغییر دهید. برای مثال، میتوانید از ماژول docker_image برای فشار دادن تصاویر به Docker Hub یا ماژول docker_container برای راهاندازی شبکههای کانتینری استفاده کنید.
پس از اعمال تغییرات مورد نظر در کتاب خود، آن را ذخیره کرده و از ویرایشگر متن خارج شوید.
تنظیمات Ensemble Playbook را مرور کنید
مرحله 6: Playbook را راه اندازی کنید
اکنون همه چیز برای اجرای Playbook شما بر روی سرورهای مورد نظر آماده است. لازم به ذکر است که تقریباً همه Playbookها به طور پیش فرض برای اجرا بر روی هر سرور موجودی شما پیکربندی شده اند. اما در این مثال خاص، سرور را خودمان مشخص می کنیم.
برای اجرای Playbook روی سروری با نام پیش فرض server1 که به عنوان Sammy متصل است، از دستور زیر استفاده کنید:
ansible-playbook playbook.yml -l server1 -u sammy
در این دستور، پرچم -l به سرور شما و پرچم -u به کاربر وارد شده به سرور اشاره می کند. خروجی این دستور مشابه مثال زیر است:
Output . . . changed: [server1] TASK [Create default containers] ***************************************************************************************************************** changed: [server1] => (item=1) changed: [server1] => (item=2) changed: [server1] => (item=3) changed: [server1] => (item=4) PLAY RECAP *************************************************************************************************************************************** server1 : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
این نتیجه نشان می دهد که راه اندازی سرور کامل شده است. البته ممکن است خروجی شما دقیقاً مشابه این مثال نباشد. اما عدد درج شده در مقابل فاکتور ناموفق باید صفر باشد.
هنگامی که سرور با موفقیت راه اندازی شد، از طریق Ansible با استفاده از SSH وارد شوید و بررسی کنید که کانتینرها با موفقیت ایجاد شده اند. برای این کار از دستور زیر استفاده کنید:
ssh [email protected]_remote_server_ip
برای لیست کردن کانتینرهای Docker نیز از دستور زیر استفاده کنید:
sudo docker ps -a
خروجی شما باید مشابه مثال زیر باشد:
Output CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a3fe9bfb89cf ubuntu "sleep 1d" 5 minutes ago Created docker4 8799c16cde1e ubuntu "sleep 1d" 5 minutes ago Created docker3 ad0c2123b183 ubuntu "sleep 1d" 5 minutes ago Created docker2 b9350916ffd8 ubuntu "sleep 1d" 5 minutes ago Created docker1
این نتیجه به این معنی است که کانتینرهای تعریف شده در راهنما با موفقیت ایجاد شده اند. با توجه به اینکه این کار آخرین مرحله تعریف Playbook بود، نتیجه میگیریم که Playbook به طور کامل بر روی سرورهای مورد نظر ساخته شده است.
برای آشنایی با نحوه کار و نصب Ansible، مقاله زیر را بخوانید.
Ansible چیست؟
نتیجه
خودکارسازی زیرساخت های شما نه تنها در زمان شما صرفه جویی می کند. همچنین به شما کمک می کند تا از پیکربندی استاندارد سرورهای خود اطمینان حاصل کنید. این استاندارد سازی پیکربندی سرور حتی می تواند بر اساس نیاز شما انجام شود و این کاری است که Ansible به صورت کاملا حرفه ای برای شما انجام خواهد داد.
در این مقاله از وبلاگ پارس پاک، نحوه استفاده از Ansible برای خودکارسازی فرآیند نصب و راه اندازی Docker در سرور با توزیع اوبونتو 22.04 را به شما آموزش دادیم. اگر در مورد این موضوع سوال یا ابهامی دارید، از طریق نظرات با ما در میان بگذارید.
سوالات متداول
1. Ansible چیست؟
Ansible مجموعه ای از ابزارهای نرم افزاری است که در فعال کردن زیرساخت به عنوان کد تخصص دارند. Ansible منبع باز و کاملا رایگان برای استفاده است.
2. کتاب بازی چیست؟
playbook فایلی است که می توانیم تعریف و هدف هر فرآیند را بررسی کرده و در پایان آن را تنظیم کنیم. بنابراین، یک کتاب بازی به ما کمک می کند تا کارهای تکراری را به طور مداوم و در قالب عادی انجام دهیم.
3. آیا استفاده از Ansible به نرم افزار یا ابزارهای کمکی برای نصب Docker نیاز دارد؟
خیر، معماری Ansible به گونه ای است که برای استفاده از آن نیازی به ابزار یا نرم افزار اضافی نخواهید داشت.
{ “@context”: “https://schema.org”، “@type”: “FAQPage”، “mainEntity”: [{
“@type”: “Question”,
“name”: “Ansible چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Ansible به مجموعهای از ابزارهای نرمافزاری گفته میشود که در فعالسازی زیرساخت بهعنوان کد تخصص دارد. Ansible منبعباز و استفاده از آن نیز کاملاً رایگان است.”
}
},{
“@type”: “Question”,
“name”: “Playbook چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “پلیبوک (Playbook) به فایلی گفته میشود که میتوانیم مراحل مختلفی که برای اجرا در نظر داریم، در آن تعریف و هدف هر فرایند را بررسی و در پایان آن را تنظیم کنیم. بنابراین، پلیبوک به ما کمک میکند تا بتوانیم کاری تکراری را بهصورت مداوم و در قالبی منظم انجام دهیم.”
}
},{
“@type”: “Question”,
“name”: “آیا استفاده از Ansible برای نصب داکر به نرمافزارها یا ابزارهای کمکی نیاز دارد؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “خیر، معماری Ansible بهگونهای است که برای استفاده از آن به هیچ ابزار یا نرمافزار جانبی دیگری نیاز نخواهید داشت.”
}
}]
}
مقاله نحوه استفاده از Ansible برای نصب و اجرای Docker در اوبونتو 22.04 اولین بار در Parsepack ظاهر شد. به نظر می رسد.