صفحه اصلی > آموزشی : نصب داکر با انسیبل؛ استفاده از Ansible برای نصب داکر در اوبونتو 22.04!

نصب داکر با انسیبل؛ استفاده از Ansible برای نصب داکر در اوبونتو 22.04!


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

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

در راهنمای نصب داکر با انسیبل، نحوه‌ی استفاده از Ansible و همچنین نحوه‌ی نصب و استفاده از Docker در Ubuntu 22.04 را شرح می‌دهیم. Docker برنامه‌ای است که کار ساده‌سازی مدیریت کانتینر‌ها را یا به عبارتی دیگر، فرایند‌های جدا‎شده از منابع را که به روشی مشابه ماشین‌های مجازی رفتار می‌کنند، انجام می‌دهد. این ابزار، قابل‎ حمل بوده و به سیستم عامل میزبان وابسته است.

پیش نیازهای نصب داکر با انسیبل

در زمان نصب داکر با انسیبل، برای اجرای تنظیمات خودکار روی پلی بوک انسیبل (Ansible playbook)، به موارد زیر نیاز دارید:

  • یک گره کنترلی Ansible: یک ماشین Ubuntu 22.04 با Ansible نصب و پیکربندی می‌شود تا با استفاده از کلید‌های SSH به هاست Ansible خود متصل شود. شما باید مطمئن شوید که گره کنترل، دارای یک کاربر معمولی با مجوز‌های sudo و فایروال فعال است.
  • یک یا چند هاست Ansible: باید یک یا چند سرور Ubuntu 22.04 ریموت را برای خودکارسازی تنظیمات اولیه‌ی سرور در اوبونتو 22.04 تنظیم کنید.

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

Ansible playbook چه کاری را انجام می‌دهد؟

نصب داکر با انسیبل - ansible playbook چه کاری انجام می‌دهد؟

Ansible playbook جایگزینی برای اجرای دستی روش نصب و استفاده از داکر روی Ubuntu 22.04 است. شما می‌توانید پلی بوک خود را یک بار تنظیم کرده و بعد از آن برای هر نصب، از آن استفاده کنید. با اجرای این پلی بوک، اقدامات زیر بر روی هاست Ansible شما انجام می‌شود:

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

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

برای شروع، وارد یک کاربر دارای دسترسی sudo در سرور گره کنترل Ansible خود شوید.

نصب داکر با انسیبل

نصب داکر با انسیبل

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

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

$ nano playbook.yml

با اجرای دستور بالا، یک فایل YAML خالی باز می‌شود. قبل از اضافه ‎کردن task‌ها به playbook خود، باید موارد زیر را اضافه کنید:

---

- hosts: all

  become: true

  vars:

container_count: 4

default_container_name: docker

default_container_image: ubuntu

default_container_command: sleep 1

تقریبا هر playbook که با آن سروکار داریم، با اعلان‌هایی مشابه این شروع می‌شود. میزبان یا hosts اعلام می‌کند که گره کنترل Ansible کدام سرور‌ها را با این playbook هدف قرار می‌دهد. Become مشخص می‌کند که آیا همه‌ی دستورات با امتیازات ریشه‌ی افزایش‎ یافته انجام می‌شوند یا خیر.

Vars به شما امکان می‌دهد تا داده‌ها را در متغیر‌ها ذخیره کنید. اگر تصمیم به تغییر این موارد در آینده دارید، کافی است این خطوط را در فایل‌تان ویرایش کنید. در این قسمت، توضیح مختصری در مورد هر متغیر می‌دهیم:

  • container_count: تعداد کانتینر‌هایی که باید مشخص شوند را نشان می‌دهد.
  • default_container_name: نام کانتینر‌های پیش‎فرض را نشان می‌دهد.
  • default_container_image: ایمیج پیش‎فرض Docker را برای استفاده در زمان ایجاد کانتینر‌ها، مشخص می‌کند.
  • default_container_command: دستور پیش‎فرض برای اجرا در کانتینر‌های جدید را نشان می‌دهد.

نکته: اگر می‌خواهید فایل playbook را در وضعیت نهایی‌اش ببینید. به مرحله‌ی 5 بروید. فایل‌های YAML با ساختار تورفتگی خاص‌شان مشخص شده‌اند؛ بنابراین، می‌توانید پس از افزودن تمام task‌ها، playbook خود را دوباره بررسی کنید.

مرحله‌ی 2 – اضافه‎ کردن Task‌های نصب پکیج Playbook

به طور پیش‎فرض، Task‌ها توسط Ansible به صورت همزمان و به ترتیب از بالا به پایین در Playbook شما اجرا می‌شوند. این بدان معناست که ترتیب Task‌ها مهم است و شما خیال‌تان از بابت اجرای یک Task قبل از شروع کار بعدی، راحت خواهد بود.

همه‌ی Task‌ها در این playbook می‌توانند به تنهایی اجرا شده و در سایر playbook‌های شما، مجددا استفاده شوند.

یکی از اولین task‌ها یعنی نصب aptitude، ابزاری است که از آن برای ارتباط با مدیر پکیج سرور مجازی لینوکس و نصب پکیج‌های سیستم مورد‎نیاز استفاده می‌شود و شما باید آن را اضافه کنید. Ansible از نصب این پکیج‌ها بر روی سرور شما مطمئن می‌شود:

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 Ansible برای هدایت Ansible برای نصب پکیج‌هایتان استفاده می‌کنید. ماژول‌ها در Ansible به عنوان میانبر‌هایی برای اجرای عملیاتی عمل می‌کنند و در غیر اینصورت، باید آن‌ها را به عنوان دستورات bash خام اجرا کنید. در صورتی که aptitude در دسترس نباشد، Ansible به apt برای نصب پکیج‌ها برمی‎گردد، اما به طور کلی، aptitude را ترجیح می‌دهد.

در زمان نصب داکر با انسیبل شما می‌توانید پکیج‌های مورد‎نظرتان را اضافه یا حذف کنید. با این کار، مطمئن می‌شوید که نه تنها همه‌ی پکیج‌ها موجود هستند، بلکه در آخرین نسخه‌ی خود نیز وجود دارند و پس از فراخوانی بروزرسانی با apt، به آن‌ها دسترسی دارید.

مرحله‌ی 3 – افزودن Task‌های نصب Docker به Playbook

به مرحله سوم نصب داکر با انسیبل رسیدیم!

Task شما در زمان نصب داکر، آخرین نسخه‌ی Docker را از مخزن رسمی نصب می‌کند. کلید Docker GPG برای تایید دانلود اضافه شده است و مخزن رسمی به عنوان منبع پکیج اضافه می‌شود و در نهایت، Docker نصب می‌شود. علاوه‎ بر‎این، با اجرای دستور زیر، ماژول 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

مشاهده می‌کنید که ماژو‌ل‎‌های Ansible داخلی apt_key و apt_repository در ابتدا به آدرس‌های اینترنتی اشاره کرده و سپس یک task احتمال وجود آن‌ها (present) را بر‎عهده می‌گیرد. با این دستور، امکان نصب آخرین نسخه‌‎ی Docker به همراه استفاده از pip برای نصب ماژول برای پایتون را فراهم می‌کند.

مرحله‌ی 4 – افزودن Docker Image و Container Tasks به Playbook

ایجاد کانتینر‌های Docker شما از این مرحله با pull کردن ایمیج Docker مورد‎نظر شروع می‌شود. به طور پیش‌‎فرض، این ایمیج‌ها از Docker Hub رسمی می‌آیند. با استفاده از این ایمیج، کانتینر‌ها می‌توانند مطابق با مشخصات تعیین‎‌شده توسط متغیر‌های اعلام‎‌شده در بالای 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 }}

در کد بالا، از docker_image برای pull کردن ایمیج داکری که می‌خواهید به عنوان پایه‌ی کانتینر استفاده کنید، استفاده می‌شود. docker_container نیز به شما اجازه می‌دهد تا مشخصات کانتینر‌هایی که ایجاد می‌کنید را به همراه دستوری که می‌خواهید آن‌ها را ارسال کنید، مشخص کنید.

دستور with_sequence یک روش Ansible برای ایجاد یک حلقه است و با آن، کانتینر‌های شما با توجه به تعداد تعیین‎‌شده در حلقه، ایجاد می‌شوند. این حلقه، یک حلقه‌ی شمارش اولیه است و متغیر item عددی که تکرار حلقه را مشخص می‌کند را نشان می‌دهد. این شماره در این‌جا، برای نامگذاری کانتینر‌های شما استفاده می‌شود.

مرحله‌ی 5 – Playbook خود را مرور کنید.

در این مرحله، 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 را مطابق به نیاز‌های فردی‌تان تغییر دهید. به عنوان مثال، می‌توانید از ماژول docker_image برای push کردن ایمیج به Docker Hub و یا از ماژول docker_container برای راه‎ اندازی شبکه‌های کانتینری استفاده کنید.

زمانی که پس از بررسی، playbook را مطابق با سلیقه‌ی خود یافتید، می‌توانید از ویرایشگر متن خارج شده و نتایج را ذخیره کنید.

توجه: در بسیاری از موارد، خطاهایی که دریافت می‌کنید به خاطر رعایت‎‌نکردن تورفتگی‌ها در کدنویسی است. YAML پیشنهاد می‌کند که برای ایجاد تورفتگی از دو فاصله استفاده کنید.

مرحله‌ی 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

خروجی بالا، نشان می‌دهد که راه‌‎اندازی سرور کامل شده ‎است. البته، خروجی شما نباید عینا شبیه به خروجی بالا باشد. با این حال، مهم است که هیچ خطایی دریافت نکنید.

پس از تمام‌‎شدن اجرای playbook، می‌توانید از طریق SSH وارد سرور ارائه‎‌شده توسط Ansible شده و بررسی کنید که آیا کانتینر‌ها با موفقیت ایجاد شده‌اند یا خیر.

برای ورود به سرور ریموت، دستور زیر را اجرا کنید:

$ ssh sammy@your_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 بود، خروجی بالا تایید می‌کند که playbook به صورت کامل بر روی این سرور، اجرا شده‎ است.

سخن پایانی

در این راهنما، به طور مفصل درباره‌ی نصب داکر با انسیبل و راه اندازی آن صحبت کردیم. با تنظیم خودکار زیرساخت‌ها، نه تنها در زمان صرفه جویی خواهید کرد، بلکه مطمئن می‌شوید که سرور‌هایتان از یک پیکربندی استاندارد پیروی کرده و مطابق با نیاز‌های شما سفارشی می‌شوند. با‎توجه به ماهیت توزیع شده‌ی برنامه‌های کاربردی مدرن و نیاز به سازگاری بین محیط‌های مرحله‌بندی شده‌ی مختلف، اتوماسیون به یکی از اجزای اصلی در فرایند‌های توسعه‌ی تیم‌های مختلف، تبدیل شده است.

امتیاز شما به این مطلب

نوشته نصب داکر با انسیبل؛ استفاده از Ansible برای نصب داکر در اوبونتو 22.04! اولین بار در مجله آقای وب. پدیدار شد.



منبع

پست های مرتبط

وب سرور لایت اسپید چیست؟ 5 ویژگی مهم و کاربردی

از آن جا که استفاده از یک وب‌سرور نامناسب می‌تواند به طور…

روتر چیست و چگونه کار می‌کند؟ + انواع روتر و تفاوت با مودم

روتر چیست؟ Router دستگاهی است که نقش مهمی در جابه‌جایی اطلاعات در…

نحوه حذف وردپرس از روی لوکال هاست آموزش قدم به قدم + تصویری

دلایلی زیادی برای استفاده از وردپرس روی لوکال هاست وجود دارد. چه…

یک کسب‌و‌کار برای اینکه بتواند پیشرفت کند، نیازمند این است که بر روی نام تجاری خود سرمایه‌گذاری کند. در دنیای دیجیتال امروز، یکی از راه‌های برند شدن، داشتن وب سایت و فعالیت در فضای اینترنت است و سفارش طراحی سایت اولین قدم برای گام برداشتن در دنیای مارکتینگ امروزی است.

1403 © طراحی سایت | سئو | آقای وب