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

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