منو سایت

  • خانه
  • وبلاگ
  • نحوه استفاده از Ansible برای نصب Docker در اوبونتو

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

 تاریخ انتشار :
/
  وبلاگ
نحوه استفاده از Ansible برای نصب Docker در اوبونتو

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

پس از اعمال تغییرات مورد نظر در کتاب خود، آن را ذخیره کرده و از ویرایشگر متن خارج شوید.

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

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

تنظیمات 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 به گونه ای است که برای استفاده از آن نیازی به ابزار یا نرم افزار اضافی نخواهید داشت.