آموزش های سرور

آموزش استفاده از Ansible برای نصب و راه‌اندازی داکر در اوبونتو

به این post امتیاز دهید

فرایند اتوماسیون سرور یکی از عناصر کلیدی در حوزه مدیریت زیرساخت‌های فناوری اطلاعات به‌شمار می‌رود. از مزایای این کار می‌توان به تسریع در راه‌اندازی و پیکربندی سرورها اشاره کرد. برای این کار کاربران می‌توانند از ابزار Ansible استفاده کنند.

این ابزار با معماری ساده و بدون نیاز به نصب عامل، امکان پیاده‌سازی رویه‌های استاندارد در مدیریت سیستم را فراهم می‌آورد. در این مطلب قرار است بیاموزید که چگونه می‌توان برای نصب و راه‌اندازی داکر در اوبونتو از ابزار Ansible استفاده کرد، پس با ما همراه باشید.

نحوه عملکرد Playbook

اولین سوالی که باید به آن جواب دهیم این است که پلی‌بوک Anisbe چه کاری می‌تواند برای ما انجام دهد؟ پلی‌بوک Ansible جایگزینی کامل برای نصب دستی Docker در Ubuntu 22.04 به شمار می‌رود. با اجرای این پلی‌بوک، می‌توانید ابزار Aptitude که به‌عنوان جایگزینی برای apt توسط Ansible توصیه شده است را نصب کنید.
همچنین پکیج منیجرهای مورد‌نیاز شما و کلید GPG APT مربوط به Docker نیز با بکارگیری این پلی‌بوک به منابع سیستم شما اضافه می‌شود. از دیگر کارکردهای این پلی‌بوک می‌‌توان به موارد زیر نیز اشاره کرد:

• اضافه‌شدن ریپوزیتوری رسمی Docker به منابع APT
• نصب Docker
• نصب ماژول Python Docker از طریق PIP
• Pull گرفتن از ایمیج پیش‌فرض مشخص‌شده از طریق default_container_image از Docker Hub

نحوه استفاده از Ansible برای نصب و راه‌اندازی داکر در اوبونتو

برای بهره‌گیری از Ansible برای نصب داکر در اوبونتو نیاز است مراحلی نظیر آماده‌سازی Playbook، افزودن تسک نصب پکیج‌‌ها روی Playbook، افزودن تسک نصب Docker به Playbook، اضافه‌ کردن ایمیج داکر و تسک کانتینر به Playbook، مرور تنظیمات ایجاد‌شده روی Playbook و در نهایت اجرای Playbook را به ترتیب انجام دهید.

مرحله اول: آماده‌سازی Playbook
در اولین گام برای آماده‌سازی Playbook کافیست فایل کانفیگ آن را در در ویرایشگر دلخواه خود باز کنید.

Sudo nano playbook.yml

سپس کدهای زیر را به فایل خالی اضافه کنید:

hosts: all
become: true
vars:
container_count: 4
default_container_name: docker
default_container_image: ubuntu
default_container_command: sleep 1

در این دستورات خط hosts نشان می‌دهد که Node کنترل Ansible کدام سرورها هدف این پلی‌بوک هستند. علاوه‌براین خط become نیز نشان‌دهنده این است که همه دستورها با استفاده از امتیاز Root انجام می‌شوند.

مرحله دوم: افزودن تسک نصب پکیج‌ ها روی Playbook

در Ansible، تسک‌ها به‌صورت پیش‌فرض و به آن ترتیبی که در Playbook هستند اجرا می‌شوند. به همین دلیل، ترتیب قرارگیری تسک‌ها اهمیت بالایی دارد. نکته مهم دیگر این است که تنها با اجرای کامل یک تسک، تسک بعدی آغاز می‌شود بنابراین، ترتیب اجرا تضمین شده است. با استفاده از کدهای زیر، اولین تسک یعنی نصب 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

در‌واقع Aptitude یک ابزار پیشرفته برای مدیریت بسته‌های نرم‌افزاری در سیستم‌عامل‌های لینوکسی است. این ابزار امکان تعامل موثر با پکیج منیجر APT را برای کاربران فراهم می‌کند.

مرحله سوم: افزودن تسک نصب Docker به Playbook

طراحی این تسک به گونه‌ای است که آخرین نسخه Docker را از مخزن رسمی آن برای شما نصب کند. در جریان این فرایند، ابتدا کلید GPG مربوط به Docker برای اطمینان از صحت دانلود اضافه می‌شود. در گام بعدی ریپوزیتوری رسمی Docker به فهرست منابع APT سیستم افزوده خواهد شد. پس از آن، عملیات نصب Docker آغاز می‌شود. علاوه‌بر‌این، ماژول Python مربوط به Docker نیز به‌منظور مدیریت آسان‌تر کانتینرها از طریق اسکریپت‌های Python نصب خواهد شد.

  • 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

مرحله چهارم: اضافه‌ کردن ایمیج داکر و تسک کانتینر به Playbook

ایجاد کانتینرهای Docker را با Pull گرفتن از ایمیج‌های 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 }}

مرحله پنجم: مرور تنظیمات ایجاد‌شده روی 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 }}

در این مرحله می‌توانید تنظیمات مورد‌نظر خود را روی پلی‌بوک خود اعمال کنید و شخصی‌سازی‌های لازم را انجام دهید.

مرحله ششم: اجرای Playbook

زمان اجرای Playbook روی سرور فرا رسیده است. نام فرضی test که اتصال آن به‌صورت Sammy است را در نظر بگیرید و دستورات زیر را وارد کنید.

ansible-playbook playbook.yml -l test-u sammy

در این دستور دو فلگ وجود دارد. فلگ -l نشان‌دهنده سرور شما و فلگ -u کاربر وارد‌شده به سرور را نشان می‌دهد. در نتیجه دستور زیر یک نمونه کامل است:

Output
. . .
changed: [test]TASK [Create default containers] *
changed: [test] => (item=1)
changed: [test] => (item=2)
changed: [test] => (item=3)
changed: [test] => (item=4)
PLAY RECAP *
test : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

اگر عدد درج‌شده روبه‌روی فاکتور failed باید صفر باشد، نشان‌دهنده این است که راه‌اندازی سرور کامل شده است.
پس از تکمیل این فرایند از طریق Ansible با استفاده از SSH وارد شوید. سپس مطمئن شوید که کانتینرها با موفقیت ایجاد شده‌اند. برای این کار کافیست از دستور زیر استفاده کنید.

ssh sammy@your_remote_server_ip

برای فهرست‌ کردن کانتینرهای Docker هم دستور زیر را وارد کنید.

sudo docker ps -a

در صورتی که خروجی شما همانند نمونه زیر باشد، کانتینرهای تعریف‌شده در Playbook با موفقیت ایجاد شده‌اند. در نتیجه پلی‌بوک نیز روی سرور مورد‌نظر شما راه‌اندازی شده است:

Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3fe9bfb89cf ubuntu “sleep 1d” 5 minutes ago Created docker4
۸۷۹۹c16cde1e 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

جمع‌ بندی

مقیاس‌پذیری، انعطاف‌پذیری و اتوماسیون سرعت بی‌نظیری را به دنیای اطلاعات بخشیده است. شما با به کارگیری ابزارهایی مانند Ansible می‌توانید در بهینه‌سازی فرایندهای DevOps و مدیریت سیستم‌ها درخشان عمل کنید. در این آموزش، گام‌به‌گام نحوه استفاده از Ansible برای نصب و راه‌اندازی Docker در سیستم‌عامل Ubuntu 22.04 را بررسی کردیم. همانطور که مشاهده کردید با بهره‌گیری از Ansible و ساخت یک Playbook ساده، فرایند نصب Docker به‌ صورت خودکار، قابل تکرار و بدون خطای انسانی پیاده‌سازی می‌شود. در پایان شما می‌توانید سوالات و نظرات خود را با کارشناسان ما در میان بگذارید.

سؤالات متداول

  1. آیا اجرای پلی‌بوک Ansible نیازی به نصب نرم‌افزار خاص روی سرور دارد؟
    خیر؛ یکی از مزایای اصلی Ansible معماری Agentless آن است؛ به این معنا که تنها کافی است روی سرور کنترل (Control Node) Ansible نصب باشد.
  2. آیا پلی‌بوک Ansible فقط روی Ubuntu 22.04 قابل اجراست؟
    اگرچه پلی‌بوک ارائه‌شده برای Ubuntu 22.04 بهینه‌سازی شده است؛ اما با اندکی تغییر در پیکربندی می‌توانید از آن را برای نسخه‌های دیگر اوبونتو نیز استفاده کنید.
  3. در صورت تغییر تعداد کانتینرها یا تنظیمات ایمیج، آیا باید پلی‌بوک Ansible را دوباره اجرا کنیم؟
    خیر؛ انعطاف‌پذیری بالا در این پلی‌بوک این امکان را برای کاربران فراهم کرده است که بتوانند تنها بخش‌هایی از پلی‌بوک را که مربوط به ایجاد یا مدیریت کانتینر‌ها است، اجرا کنند و یا از متغیرهای قابل تنظیم استفاده کنند.
خرید هاست لینوکس

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

5  +  3  =  

دکمه بازگشت به بالا