منو سایت

  • خانه
  • وبلاگ
  • نحوه استفاده از 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 را نیز نصب کرده باشند.

کتاب بازی دقیقاً چه کاری انجام می دهد؟

Ansible playbook جایگزینی برای نصب دستی Docker در اوبونتو 22.04 است. با اجرای این راهنما، موارد زیر در هاست Ansible انجام می شود:

  • صلاحیت ایجاد خواهد شد. Aptitude توسط Ansible به عنوان جایگزینی برای مدیر بسته apt توصیه می شود.
  • نصب پکیج منیجرهای مورد نیاز
  • docker gpt نصب کلید apt
  • مخزن رسمی Docker به منابع APT اضافه شد
  • داکر را نصب کنید
  • نصب ماژول های Python Docker از طریق PIP
  • تصویر پیش‌فرض مشخص‌شده توسط default_container_image را از Docker Hub بکشید
  • ظرف تعریف شده توسط متغیر container_count را ایجاد کنید. هر یک از این کانتینرها در کانتینرهای جداگانه با استفاده از تصویر تعریف شده توسط default_container_image و دستورات تعریف شده توسط default_container_command اجرا می شوند.

پس از اجرای playbook، تعداد کانتینرها بر اساس گزینه های تعریف شده در متغیرهای پیکربندی ایجاد می شود. برای شروع، با استفاده از کاربری با دسترسی sudo در سرور وارد گره کنترل Ansible شوید.

کتاب بازی چیست؟

کتاب بازی چیست؟

کاربرد Ansible Playbook چیست؟

مرحله 1: Playbook را آماده کنید

در همان ابتدا، بهتر است بدانید که هرگاه از کلمه “وظیفه” در این آموزش استفاده می شود، به معنای کوچکترین واحد عملی است که می توانید با استفاده از کتاب بازی Ansible فرآیند انجام آن را خودکار کنید. همه توابع در فایل playbook.yml ارائه خواهند شد. برای شروع، باید فایل PlayBook را با استفاده از ویرایشگر متن مورد علاقه خود باز کنید:

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 به شما امکان می دهد داده ها را در متغیرها ذخیره کنید. در جدول زیر شرح مختصری از هر گزینه در این بخش آورده شده است:






عاملشرح
container_countتعداد ظروف برای ساخت
default_container_nameنام کانتینر پیش فرض
default_container_imageتصویر پیش‌فرض Docker برای استفاده هنگام ساخت کانتینر
default_container_commandدستور پیش فرض برای اجرا در کانتینر جدید

مرحله 2: عملکرد نصب بسته ها را به Playbook اضافه کنید

Ansible به طور پیش فرض وظایف موجود در playbook را از بالا به پایین و همزمان اجرا می کند. بنابراین باید توجه داشته باشید که ترتیب قرار گرفتن وظایف مهم است و کارهای با اولویت بالاتر باید در ردیف های بالاتر قرار گیرند. همچنین می توانید مطمئن باشید که هیچ شغل جدیدی شروع نخواهد شد. تا زمانی که کار قبلی تکمیل شود.

نکته دیگری که باید در نظر گرفت این است که همه کارها رایگان هستند و می توان از آنها در راهنماهای دیگر استفاده کرد. با استفاده از کد زیر، اولین کار را اضافه کنید، 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 Image و Tasks Container را به 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 روی سروری با نام پیش‌فرض 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 در سرور با توزیع Ubuntu 22.04 را آموزش دادیم. اگر در مورد این موضوع سوال یا ابهامی دارید، آن را از طریق نظرات با ما در میان بگذارید.

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

1. Ansible چیست؟

Ansible مجموعه ای از ابزارهای نرم افزاری است که در فعال کردن زیرساخت به عنوان کد تخصص دارند. Ansible منبع باز و کاملا رایگان برای استفاده است.

2. Playbook چیست؟

Playbook فایلی است که می توانیم تعریف و هدف هر فرآیند را بررسی کرده و در نهایت آن را تنظیم کنیم. از این رو، کتاب های بازی به ما کمک می کنند تا کارهای تکراری را به طور مداوم و در قالب منظم انجام دهیم.

3. آیا استفاده از Ansible به نرم افزار یا ابزارهای کمکی برای نصب Docker نیاز دارد؟

خیر، معماری Ansible به گونه ای است که برای استفاده از آن نیازی به ابزار یا نرم افزار اضافی نخواهید داشت.