برنامه نویسی

Maestro: Mastering Ansible با Docker از Drudgery دستی تا Automation

این پست وبلاگ شما را از سختی‌های پیکربندی دستی سرور دور می‌کند و با Ansible ✨ به قلمرو توانمندسازی خودکارسازی می‌رود. آیا تا به حال احساس کرده اید که یک سرآشپز راک استار هستید، مجبور شده اید همه سبزیجات را با دست خرد کنید، ادویه ها را به دقت اندازه بگیرید ⚖️، و برای هر غذا از ابتدا آتش بسازید؟ این دقیقا همان چیزی است که من هنگام پیکربندی دستی سرورها احساس کردم!
نترسید، دوستان علاقه‌مند به اتوماسیون! Ansible، یک ابزار مدیریت پیکربندی قدرتمند، دستور العمل عالی برای تسلط بر اتوماسیون را ارائه می دهد. این پست وبلاگ شما را با دانش راه اندازی یک محیط محلی Ansible با استفاده از Docker مجهز می کند و زمین بازی اتوماسیون شخصی خود را ایجاد می کند.
چرا Ansible را یاد بگیریم؟
دو دلیل اصلی به ماجراجویی یادگیری Ansible من دامن زد:

  1. اتوماسیون راه اندازی محلی: کاوش من در توزیع‌های مختلف لینوکس برای راه‌اندازی ایده‌آل‌ام اغلب باعث می‌شود که در آرزوی راهی سریع برای بازگشت به پیکربندی آشنا باشم. Ansible مانند یک شوالیه در زره درخشان ️️ وارد شد و به من این امکان را داد که این فرآیند را خودکار کرده و محیط مورد نظر خود را در یک لحظه به دست بیاورم ⚡️.
  2. اتوماسیون سرور از راه دور: اخیراً این فرصت را داشتم که یک سرور و یک خط لوله CI/CD راه اندازی کنم. این شامل بسیاری از کارهای تکراری مانند نصب بسته های خاص سیستم عامل، پیکربندی پراکسی های معکوس، تولید کلیدهای SSH و راه اندازی مخازن محلی است. Ansible راهی برای خودکارسازی این وظایف پیش از پروژه ارائه کرد و فرآیند توسعه را ساده کرد. به یاد داشته باشید، با اتوماسیون، کارایی به همراه می‌آید، اما همیشه عاقلانه است که از «خارهای» بالقوه (خطاها یا رفتار غیرمنتظره) که ممکن است به وجود بیایند آگاه باشید.

چرا یک راه‌اندازی محلی را از طریق ابر انتخاب کنید؟ ☁️
در حالی که پلتفرم های ابری مانند AWS منابع و آموزش های آنلاین به راحتی در دسترس را ارائه می دهند، من یک راه اندازی محلی را انتخاب کردم. این تصمیم، اگرچه به تلاش بیشتری نیاز داشت، اما تجربه عملی ارزشمندی را به خصوص در مورد SSH ارائه کرد. این دانش بدون شک در دراز مدت مفید خواهد بود.
*پیش نیازها *

  • داکر: https://www.docker.com/
  • ویرایشگر متن: در حالی که گزینه هایی مانند VS Code، Neovim و Zed گزینه های محبوبی هستند، حتی یک ویرایشگر متن ساده مانند Notepad نیز کار خواهد کرد. جادو در ترمینال اتفاق می افتد! 🪄
    ساختار پوشه
Learn-Ansible/
│ ├── hosts
│ └── playbooks/
│   ├── ping.yml
│   ├── gather_facts.yml
│   ├── log_os.yml
│ ├── run_all.yml
│ ├── Dockerfile (Optional: Create a custom Ansible Docker image)
│ ├── docker-compose.yml (Optional: Manage all Docker services with a single command)
# and so on…
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ابهام زدایی از ساختار پوشه: نقشه راه شما برای اتوماسیون Ansible
اکنون که از فتح اتوماسیون با Ansible و Docker خسته شده اید، بیایید ساختار پوشه ای را که نقشه راه شما به سوی موفقیت خواهد بود، بررسی کنیم. به آن به عنوان یک آشپزخانه خوب سازماندهی شده فکر کنید – همه چیز مکان مشخص خود را دارد، و پیدا کردن مواد لازم (کتاب های بازی) را که برای به دست آوردن جادوی اتوماسیون نیاز دارید آسان می کند ✨.

ریشه اتوماسیون: یادگیری-پاسخگو
این دایرکتوری اصلی است که همه چیزهای Ansible شما را در خود جای می دهد. آن را به عنوان انباری پر از پتانسیل خود برای خودکارسازی کارهای مختلف تصور کنید.

مواد ضروری: فایل میزبان
داخل Learn-Ansible، شما را پیدا خواهید کرد hosts فایل. اینجاست که سرورها یا سیستم‌هایی را که Ansible مدیریت می‌کند، مانند لوازم آشپزخانه مطمئن خود (لپ‌تاپ، سرور و غیره) تعریف می‌کنید. هر سرور را می توان با نام میزبان یا آدرس IP خود فهرست کرد و به Ansible اجازه می دهد آنها را شناسایی و پیکربندی کند.

جعبه دستور غذا: فهرست راهنمای کتاب‌های بازی
این قلب آشپزخانه اتوماسیون شماست! در اینجا، کتاب‌های بازی Ansible – اساساً دستور العمل‌های خود – را ایجاد می‌کنید که وظایف خاصی را که می‌خواهید Ansible بر روی سرورهای مدیریت شده شما انجام دهد، مشخص می‌کند. هر کتاب پخش معمولاً یک فایل YAML است (دستورالعمل‌های دستور غذا را در نظر بگیرید!) که مراحل پیکربندی نرم‌افزار، مدیریت فایل‌ها یا اجرای دستورات را شرح می‌دهد.
ما در بخش بعدی به ایجاد کتاب‌های بازی خواهیم پرداخت، اما در حال حاضر، درک کنید که جادو در اینجا اتفاق می‌افتد!

داستان سرایی بس است، بیایید اکنون وارد کد شویم!
اکنون که چرایی و چگونگی استفاده از Docker برای راه‌اندازی محلی Ansible را بررسی کردیم، بیایید به خود کد بپردازیم. ما سه بخش اصلی را پوشش خواهیم داد:

  1. راه اندازی محلی با Dockerfile و تولید تصویر داکر با استفاده از docker build
  2. ایجاد یک ظرف با استفاده از تصویر تولید شده در مرحله قبل با استفاده از docker-compose
  3. بازی با Ansible

راه اندازی محلی با Dockerfile

# Use the official image as a parent image
FROM ubuntu
# Update the system, install OpenSSH Server, and set up users
RUN apt-get update && apt-get upgrade -y && \
 apt-get install -y openssh-server && apt-get install sudo -y && apt-get install sshpass -y
# Create user and set password for user and root user
RUN useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo -u 1000 ubuntu && \
 echo 'ubuntu:your_secret_password_here' | chpasswd && \
 echo 'root:your_secret_password_here' | chpasswd
# Set up configuration for SSH
RUN mkdir /var/run/sshd && \
 sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
 sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd && \
 echo "export VISIBLE=now" >> /etc/profile
# Expose the SSH port
EXPOSE 22
# Run SSH
CMD ["/usr/sbin/sshd", "-D"]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات کامل در مورد Dockerfile
ارائه شده است Dockerfile یک تصویر Docker سفارشی را تعریف می کند که به طور خاص برای اجرای Ansible در یک کانتینر طراحی شده است. در اینجا یک تفکیک کد آمده است:
1. تصویر پایه:
Dockerfile

FROM ubuntu
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این خط با استفاده از رسمی پایه و اساس تصویر ما را تنظیم می کند ubuntu تصویر از داکر هاب این تصویر یک محیط لینوکس پایه با بسته های ضروری از پیش نصب شده ارائه می دهد.
2. به روز رسانی سیستم و نصب بسته:

RUN apt-get update && apt-get upgrade -y && \
 apt-get install -y openssh-server sudo sshpass
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این بلوک کد چندین عمل را انجام می دهد:

  • apt-get update: لیست بسته های موجود را از مخازن به روز می کند.
  • apt-get upgrade -y: تمام بسته های نصب شده را به آخرین نسخه خود ارتقا می دهد ( -y پرچم از اعلان های تایید عبور می کند).
  • apt-get install -y openssh-server sudo sshpass: سه بسته مهم را نصب می کند: –openssh-server: عملکرد سرور SSH را در ظرف فعال می کند و به شما امکان می دهد از راه دور متصل شوید. – sudo : امتیازات بالایی را برای اجرای دستورات با حقوق اداری فراهم می کند. –sshpass: ابزاری که به شما امکان می دهد رمز عبور SSH را در خط فرمان مشخص کنید و اتوماسیون را ساده می کند.
    3. ایجاد کاربر و تنظیم رمز عبور:
RUN useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo -u 1000 ubuntu && \
 echo 'ubuntu:your_sudo_password_here' | chpasswd && \
 echo 'root:your_sudo_password_here' | chpasswd
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این بخش دو کاربر ایجاد می کند:

  • ubuntu: این کاربر برای تعامل با کانتینر استفاده خواهد شد. –-rm: کاربر را پس از پایان کانتینر حذف می کند. –-d /home/ubuntu: فهرست اصلی را برای کاربر تنظیم می کند. –-s /bin/bash: پوسته پیش فرض را برای کاربر تعریف می کند (bash). –-g root -G sudo: کاربر را به root و sudo گروه ها، اعطای امتیازات اداری. –-u 1000: شناسه کاربر (UID) را روی 1000 تنظیم می کند (که معمولاً برای ubuntu کاربر).
  • root: کاربر root نیز همان رمز عبور ایجاد و به آن اختصاص داده می شود ubuntu کاربر. توجه داشته باشید: به طور کلی توصیه نمی شود که به دلایل امنیتی به عنوان روت در کانتینرها اجرا شود.
    4. پیکربندی SSH:
RUN mkdir /var/run/sshd && \
 sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
 sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd && \
 echo "export VISIBLE=now" >> /etc/profile
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این دستورات سرور SSH را در ظرف پیکربندی می کند:

  • mkdir /var/run/sshd: دایرکتوری مورد نیاز دیمون SSH را ایجاد می کند.
  • sed: ابزار خط فرمان برای دستکاری متن. در اینجا، دو فایل را اصلاح می کند: –/etc/ssh/sshd_config: این فایل رفتار سرور SSH را کنترل می کند. این sed دستور جایگزین خط می شود PermitRootLogin prohibit-password با PermitRootLogin yes، اجازه ورود به ریشه از طریق SSH (احتیاط: با احتیاط استفاده کنید!). –/etc/pam.d/sshd: این فایل فرآیند احراز هویت را برای SSH تعریف می کند. این sed دستور یک خط مربوط به را تغییر می دهد pam_loginuid.so ماژول، به طور بالقوه ورود برای اسکریپت های اتوماسیون را ساده می کند (برای جزئیات به مستندات مراجعه کنید).
  • echo "export VISIBLE=now" >> /etc/profile: این خط یک متغیر محیطی را به نمایه کاربر اضافه می کند، که به طور بالقوه به برنامه های گرافیکی درون ظرف کمک می کند (برای موارد استفاده خاص به مستندات مراجعه کنید).
    5. افشای پورت SSH:
EXPOSE 22
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این خط پورت 22 (درگاه استاندارد SSH) کانتینر را نشان می دهد. این به شما امکان می دهد با استفاده از SSH از دستگاه محلی خود به ظرف متصل شوید.
6. اجرای SSH Daemon:

CMD ["/usr/sbin/sshd", "-D"]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این خط دستور پیش فرض را برای کانتینر تنظیم می کند. دیمون SSH را اجرا می کند (/usr/sbin/sshd) با -D flag، که حالت پس‌زمینه را فعال می‌کند و کانتینر را حتی پس از قطع اتصال از جلسه SSH در حال اجرا نگه می‌دارد.

چرا داکرفایل؟ چرا خود تصویر اوبونتو نیست؟

تصویر پایه اوبونتو ممکن است فاقد بسته‌های خاص مورد نیاز برای گردش کار Ansible شما باشد. Dockerfile ارائه شده با نصب ابزارهای ضروری این مشکل را برطرف می کند:

  • openssh-server: عملکرد SSH را در ظرف برای مدیریت از راه دور فعال می کند.
  • sudo: برای کارهای اداری که اغلب مورد نیاز Ansible است امتیازات بالایی اعطا می کند.
  • sshpass: اتوماسیون را با تعیین رمز عبور SSH در خط فرمان ساده می کند.

علاوه بر این، یک Dockerfile به شما امکان می دهد یک کاربر جدید به طور خاص برای آزمایش های خود ایجاد کنید (به عنوان مثال، ubuntu در این مورد). این کاربر اختصاصی به عنوان نقطه اصلی تعامل شما در ظرف برای اجرای کتاب‌های بازی Ansible و مدیریت پیکربندی‌ها عمل می‌کند.

در اصل، Dockerfile کنترل بیشتری را فراهم می‌کند، از وجود ابزارهای لازم اطمینان می‌دهد و محیطی تمیز برای تلاش‌های اتوماسیون Ansible شما ایجاد می‌کند.

ایجاد یک کانتینر اوبونتو قابل دسترسی SSH با Docker Compose
این راهنما روند راه اندازی یک ظرف اوبونتو قابل دسترسی از طریق SSH با استفاده از Docker Compose را شرح می دهد.

پیش نیازها:

  • Docker روی سیستم شما نصب و اجرا می شود.

مراحل:

1. پیکربندی Docker Compose را تعریف کنید:
یک فایل به نام ایجاد کنید docker-compose.yml با محتوای زیر:

version: "3.8"

services:
  ubuntu-ssh:
    image: ubuntu-ssh
    container_name: ansible-node
    ports:
      - "2222:22"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

– این پیکربندی سرویسی به نام را تعریف می کند ubuntu-ssh که از ubuntu-ssh تصویر
– ظرف نامگذاری خواهد شد ansible-node.
– پورت 2222 در ماشین میزبان به پورت 22 (درگاه SSH پیش فرض) در داخل کانتینر نگاشت شده است و امکان دسترسی از راه دور را فراهم می کند.

2. ظرف را راه اندازی کنید:
یک ترمینال را باز کنید و به دایرکتوری حاوی آن بروید docker-compose.yml فایل. دستور زیر را اجرا کنید:

 docker-compose up -d
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

– این دستور به Docker Compose دستور می دهد تا ظرف را در حالت جدا شده بسازد و راه اندازی کند (-d).

3. به ظرف متصل شوید:
از دستور زیر برای ایجاد یک اتصال SSH به کانتینر استفاده کنید:

 ssh -o PubkeyAuthentication=no ubuntu@localhost -p 2222
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح:
ssh: اتصال SSH را راه اندازی می کند.
-o PubkeyAuthentication=no: احراز هویت کلید عمومی را غیرفعال می کند (روش های ایمن تر به طور پیش فرض تلاش شده است).
ubuntu@localhost: نام کاربری را مشخص می کند (ubuntu) و نام میزبان (localhost).
-p 2222: شماره پورت را مشخص می کند (2222) برای اتصال.

کمربندت رو ببند, Ansible ماجراجو! آماده باشید تا ابرقدرت های اتوماسیون خود را در این زمینه آزاد کنید با شکوه زمین بازی Ansible! برای تسخیر کوه های وظایف و کشتی گرفتن سرورها روی زمین آماده شوید (البته با عشق) این بوت کمپ شخصی Ansible شما است، جایی که یادگیری در آن انجام می شود. حماسه و امکانات هستند
بی پایان
می خواهید anisble را نصب کنید؟

pip install ansible
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگرچه من یک راه بسیار ساده برای نصب ansible ارائه کرده ام، اما همیشه خوب است که راه های دیگری برای نصب ansible بدانید.

Demystifying Ansible: واژه نامه ای برای نینجاهای اتوماسیون
همانطور که ما قابلیت‌های Ansible را بررسی کرده‌ایم، ممکن است در ابتدا برای شیرجه رفتن به سمت اتوماسیون احساس خارش کنید. اما برای اطمینان از اینکه سفرهای اتوماسیون شما روان است، بیایید درک خود را از برخی از اصطلاحات کلیدی Ansible تقویت کنیم.

  • وظایف: آرسنال اتوماسیون شما
    – وظایف را به عنوان اجزای سازنده اتوماسیون در نظر بگیرید. آنها اقدامات خاصی مانند نصب بسته های نرم افزاری، شبیه سازی مخازن Git، پیکربندی پوسته ها یا ایجاد کاربران sudo را نشان می دهند.
  • نمایشنامه ها: ارکستراسیون سمفونی اتوماسیون شما – نمایش ها روال های اتوماسیون فردی هستند که وظایف مرتبط را گروه بندی می کنند. آنها مجموعه خاصی از اقدامات را برای انجام بر روی سیستم های هدف شما تعریف می کنند.
  • کتابهای راهنما: طرحی برای موفقیت در اتوماسیون – Playbookها قلب اتوماسیون Ansible هستند. این فایل‌های YAML به‌عنوان اسکریپت عمل می‌کنند، و به‌دقت بازی‌ها و وظایفی را که باید در یک توالی دقیق اجرا شوند، تنظیم می‌کنند.
  • فایل های موجودی: تعریف چشم انداز اتوماسیون شما – فایل موجودی، که اغلب به عنوان hosts فایل، نقشه شما به سرورهای هدف است. اطلاعات مربوط به ماشین‌هایی را که جادوی اتوماسیون شما در آنجا انجام می‌شود ذخیره می‌کند. این فایل را به عنوان لیست هدف خود برای ماموریت های اتوماسیون تصور کنید.فایل موجودی مثال: رمزگشایی کد در اینجا تجزیه و تحلیل یک نمونه است hosts فایل، جزئیات یک سرور به نام را نشان می دهد node1:
# learn-ansible/hosts
node1 ansible_user=ubuntu ansible_host=localhost ansible_port=2222 ansible_password=your_secret_password_here ansible_ssh_common_args="-o PubkeyAuthentication=no" ansible_become_pass=your_secret_password_here
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • node1: این یک نام مستعار، نامی دوستانه برای سرور شما در کتاب‌های بازی است. خواندن و نگهداری اسکریپت های اتوماسیون شما را آسان تر می کند.
  • ansible_user=ubuntu: این نام کاربری “ubuntu” را برای اتصالات SSH به سرور که با نام مستعار نشان داده شده است مشخص می کند. node1.
  • ansible_host=localhost: این دستگاهی را که خود Ansible را اجرا می کند هدف قرار می دهد (اگر لوکال هاست نیست، نام میزبان سرور واقعی را جایگزین کنید).
  • ansible_port=2222:این به Ansible می گوید که به جای پورت پیش فرض 22 به پورت 2222 برای SSH متصل شود.
  • ansible_password=your_secret_password_here:این رمز عبور را برای احراز هویت به عنوان کاربر “ubuntu” در سرور فراهم می کند.
  • ansible_ssh_common_args="-o PubkeyAuthentication=no":این امر احراز هویت کلید عمومی را غیرفعال می کند و احراز هویت مبتنی بر رمز عبور را برای این سرور خاص مجبور می کند.
  • ansible_become_pass=your_secret_password_here:این رمز عبور را برای افزایش امتیاز با استفاده از آن فراهم می کندsudoدستورات روی سرور

مثال فایل Playbook: قرار دادن اتوماسیون در عمل
این راهنمای نمونه نحوه نصب نرم افزار خاص و پیکربندی پوسته پیش فرض را بر روی آن نشان می دهد node1 سرور.:

# learn-ansible/playbook/install_playbook.yml
--- 
- name: Play for installing curl, zsh, python and pip
  hosts: node1
  gather_facts: false
  tasks:
    - name: Install curl
      ansible.builtin.apt:
        name: curl
        state: present

    - name: Install zsh, python and pip
      ansible.builtin.apt:
        name:
          - zsh
          - python3
          - python3-pip
        state: present

- name: Play for choosing zsh as default shell
  hosts: node1
  gather_facts: false
  tasks:
    - name: Choose zsh as default shell
      ansible.builtin.user:
        name: ubuntu
        shell: /bin/zsh
      become: true

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کتاب بازی (YAML:  - -)
یک کتاب بازی را به عنوان طرح اولیه معمار برای پروژه اتوماسیون خود تصور کنید. این یک فایل YAML است که با دقت تمام توالی اتوماسیون را مشخص می کند. این فایل به عنوان مرکز فرماندهی مرکزی عمل می کند و بازی ها، وظایف و سیستم های هدف درگیر در ماموریت اتوماسیون شما را دیکته می کند.

---
# This line signifies the start of the YAML document
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پخش (YAML: بلوک تورفتگی)
یک نمایشنامه را به عنوان یک کنش فردی در نمایشنامه اتوماسیون خود در نظر بگیرید (درست مانند یک نمایش در یک تولید تئاتر). هر بازی وظایف مرتبطی را گروه بندی می کند که اهداف خاصی را هدف قرار می دهند. شما می توانید چندین نمایشنامه را در یک کتاب بازی واحد داشته باشید که به شما امکان می دهد اهداف مختلف اتوماسیون را به روشی ساختاریافته انجام دهید.
در اینجا یک نمونه بازی از کتاب بازی نمونه آورده شده است:

- name: Play for installing curl, zsh, python and pip  # Play definition with a descriptive name
  hosts: node1  # This targets the server aliased as 'node1' in your hosts file
  gather_facts: false  # Optional, skips information gathering

  tasks:  # This indented block contains all tasks for this play
    # ... task definitions ... (explained later in Tasks section)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Tasks (YAML: Further Indented Block)
وظایف، بلوک‌های اساسی اتوماسیون در یک نمایشنامه هستند. آنها اقدامات خاصی را برای اجرا در سیستم هدف نشان می دهند. یک نمایشنامه می‌تواند وظایف متعددی را با نظم خاصی در کنار هم داشته باشد تا به نتیجه دلخواه برسد. این کارها مانند دستورالعمل های فردی است که یک بازیگر روی صحنه اجرا می کند تا نمایشنامه را زنده کند.
در اینجا یک مثال تعریف کار در یک نمایشنامه آمده است:

  tasks:
    - name: Install curl  # Task definition with a descriptive name
      ansible.builtin.apt:  # The module used for package management
        name: curl  # The specific package to install
        state: present  # Desired state (ensure curl is installed)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مدیریت کارآمد چندین سرور با گروه‌های موجودی Ansible
Ansible به شما این امکان را می دهد که وظایف را در چندین سرور به طور همزمان خودکار کنید. این راهنما نحوه دستیابی به این هدف را با استفاده از گروه‌های موجودی در پیکربندی Ansible نشان می‌دهد.

گروه بندی سرورها برای مدیریت ساده شده
1. فایل موجودی:

– فایل موجودی Ansible خود را ویرایش کنید (hosts به صورت پیش فرض).

– گروه هایی را برای دسته بندی منطقی سرورهای خود تعریف کنید. به عنوان مثال، یک گروه به نام ایجاد کنید group1 سرورها را در بر بگیرد node1 و node2.

[group1]
node1 ansible_user=ubuntu ansible_host=localhost ansible_port=2222 ansible_password=your_secret_password_here ansible_ssh_common_args="-o PubkeyAuthentication=no" ansible_become_pass=your_secret_password_here
node2 ansible_user=ubuntu ansible_host=localhost ansible_port=2223 ansible_password=your_secret_password_here ansible_ssh_common_args="-o PubkeyAuthentication=no" ansible_become_pass=your_secret_password_here
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. گروه های هدف کتاب راهنما:
– کتاب بازی Ansible خود را برای هدف قرار دادن گروه تازه ایجاد شده تغییر دهید.

---
- name: Install curl, zsh, Python, and pip
  hosts: group1
  gather_facts: false
  tasks:
    # ... your Ansible tasks here
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

hosts: group1 خط مشخص می کند که این بازی باید بر روی تمام سرورهای داخل اجرا شود group1 گروه

مقیاس بندی با چند گروه

  • گروه های اضافی را در فایل موجودی خود ایجاد کنید تا سرورهای بیشتری را سازماندهی کنید.
  • کتاب های بازی خود را برای هدف قرار دادن چندین گروه با استفاده از دو نقطه به روز کنید (:) جدا کننده.
---
- name: Install software across all servers
  hosts: group1:group2
  gather_facts: false
  tasks:
    # ... your Ansible tasks here
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

– این دفترچه در همه سرورها در هر دو اجرا می شود group1 و group2.

حالا مرحله آخر، کد را در ترمینال اجرا کنید

# pwd :- learn-ansible 
ansible-playbook -i hosts playbooks/install_playbook.yml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وبلاگ بعدی به زودی در تست واحد ارائه می شود

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

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

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

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