برنامه نویسی

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

مجموعه های Ansible: راهنمای کامل

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

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


1. مجموعه Ansible چیست؟

یک مجموعه Ansible یک قالب توزیع است که محتوای Ansible مرتبط را بسته بندی می کند. می تواند شامل موارد زیر باشد:

  • ماژول ها: اسکریپت هایی که کار خاصی را انجام می دهند (مثلاً مدیریت یک سرویس یا یک فایل).
  • پلاگین ها: قابلیت Ansible را برای مواردی مانند روش‌های اتصال، فیلترها یا منابع موجودی گسترش دهید.
  • نقش ها: اجزای قابل استفاده مجدد برای سازماندهی وظایف، فایل ها و کنترل کننده ها.
  • کتاب های بازی: لیستی از وظایف و پیکربندی که در برابر مجموعه ای از میزبان های مدیریت شده اجرا می شوند.
  • مستندات: راهنماها و مراجع نحوه استفاده از مجموعه.
  • متغیرها: متغیرهایی که برای قابلیت استفاده مجدد در مجموعه قرار می گیرند.

مجموعه ها روشی استاندارد برای بسته بندی و توزیع محتوای اتوماسیون ارائه می دهند که اشتراک و استفاده از محتوا را از منابع مختلف آسان می کند.


2. مزایای استفاده از مجموعه ها

  • مدولارسازی: مجموعه ها به شما امکان می دهند وظایف اتوماسیون بزرگ را به اجزای ماژولار و قابل استفاده مجدد تقسیم کنید.
  • سهولت در توزیع: با مجموعه ها، می توانید محتوای اتوماسیون خود را در محیط ها، تیم ها و سازمان ها بسته بندی و به اشتراک بگذارید.
  • استانداردسازی: مجموعه ها به استانداردسازی محتوای Ansible کمک می کنند و مدیریت و استفاده از آن را آسان تر می کنند.
  • نسخه سازی: می‌توانید مجموعه‌ها را نسخه کنید و اطمینان حاصل کنید که می‌توانید تغییرات را ردیابی کنید و سازگاری را مدیریت کنید.
  • ادغام با Ansible Galaxy: مجموعه‌ها از طریق Ansible Galaxy، یک مرکز مرکزی برای یافتن، اشتراک‌گذاری و استفاده مجدد از محتوای اتوماسیون توزیع می‌شوند.

3. ساختار یک مجموعه Ansible

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

my_collection/
├── docs/
│   └── my_collection.rst
├── roles/
│   └── my_role/
│       ├── tasks/
│       ├── files/
│       ├── templates/
│       └── handlers/
├── plugins/
│   ├── modules/
│   │   └── my_module.py
│   ├── connection/
│   └── inventory/
├── playbooks/
│   └── my_playbook.yml
├── galaxy.yml
└── README.rst
وارد حالت تمام صفحه شوید

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

اجزای کلیدی:

  • docs/: حاوی مستنداتی درباره مجموعه است.
  • roles/: شامل یک یا چند نقش Ansible است که بخشی از مجموعه هستند.
  • plugins/: حاوی پلاگین های مختلف (ماژول ها، فیلترها، جستجو و غیره) برای مجموعه.
  • playbooks/: حاوی کتاب های بازی است که بخشی از مجموعه هستند.
  • galaxy.yml: فایل متادیتا که مجموعه و وابستگی های آن را تعریف می کند.
  • README.rst: اسناد مجموعه، معمولاً نحوه استفاده از آن را تشریح می کند.

4. ایجاد یک مجموعه Ansible

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

4.1 راه اندازی یک مجموعه

شما می توانید یک مجموعه با استفاده از ansible-galaxy دستور، که به تنظیم اولیه ساختار دایرکتوری برای مجموعه شما کمک می کند.

ansible-galaxy collection init my_namespace.my_collection
وارد حالت تمام صفحه شوید

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

این دستور ساختار زیر را ایجاد می کند:

my_namespace/
└── my_collection/
    ├── docs/
    ├── plugins/
    ├── roles/
    ├── playbooks/
    ├── galaxy.yml
    └── README.rst
وارد حالت تمام صفحه شوید

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

  • my_namespace: فضای نام (معمولاً سازمان یا نام کاربری شما).
  • my_collection: نام مجموعه.

4.2 تعریف فراداده در galaxy.yml

را galaxy.yml فایل برای تعریف ابرداده برای مجموعه بسیار مهم است. این شامل جزئیاتی مانند نام مجموعه، نسخه، وابستگی ها و نویسنده است.

مثال galaxy.yml:

namespace: my_namespace
name: my_collection
version: 1.0.0
author: Your Name
description: This is a collection that provides tasks for managing servers.
dependencies: []
وارد حالت تمام صفحه شوید

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


5. سازماندهی محتوا در مجموعه ها

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

5.1 اضافه کردن نقش ها

نقش ها برای گروه بندی وظایف، کنترل کننده ها، الگوها و سایر منابع در واحدهای قابل استفاده مجدد استفاده می شوند. می توانید نقش هایی را به آن اضافه کنید roles/ دایرکتوری

مثال:

my_namespace/
└── my_collection/
    └── roles/
        └── my_role/
            ├── tasks/
            ├── files/
            ├── templates/
            └── handlers/
وارد حالت تمام صفحه شوید

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

برای تعریف وظایف در نقش خود:

# tasks/main.yml
- name: Install Apache
  apt:
    name: apache2
    state: present
وارد حالت تمام صفحه شوید

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

5.2 اضافه کردن ماژول ها

ماژول ها منطق یک کار Ansible را تعریف می کنند. ماژول های خود را در plugins/modules/ دایرکتوری

مثال:

my_namespace/
└── my_collection/
    └── plugins/
        └── modules/
            └── my_module.py
وارد حالت تمام صفحه شوید

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

ماژول سفارشی شما ممکن است به شکل زیر باشد:

from ansible.module_utils.basic import AnsibleModule

def run_module():
    module = AnsibleModule(argument_spec={})
    module.exit_json(changed=True, msg="Hello from my module!")

if __name__ == '__main__':
    run_module()
وارد حالت تمام صفحه شوید

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

5.3 افزودن پلاگین

پلاگین ها عملکرد Ansible را افزایش می دهند. می توانید انواع مختلفی از پلاگین ها مانند پلاگین های اتصال، پلاگین های جستجو و پلاگین های فیلتر را در داخل آن قرار دهید plugins/ دایرکتوری

مثال:

my_namespace/
└── my_collection/
    └── plugins/
        ├── lookup/
        │   └── my_lookup.py
        ├── filter/
        │   └── my_filter.py
وارد حالت تمام صفحه شوید

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

5.4 افزودن کتابهای راهنما

می‌توانید کتاب‌های بازی قابل استفاده مجدد را در فهرست قرار دهید playbooks/ دایرکتوری

مثال:

# playbooks/install_nginx.yml
- name: Install Nginx
  hosts: all
  tasks:
    - name: Install Nginx package
      apt:
        name: nginx
        state: present
وارد حالت تمام صفحه شوید

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


6. استفاده از مجموعه های Ansible

هنگامی که مجموعه ای را ایجاد کردید، می توانید با ارجاع به فضای نام و نام آن از آن استفاده کنید. مجموعه‌ها معمولاً از Ansible Galaxy نصب می‌شوند، اما می‌توانید آنها را مستقیماً از یک مسیر محلی یا یک مخزن Git نیز نصب کنید.

6.1 نصب یک مجموعه از Ansible Galaxy

شما می توانید مجموعه ای از Ansible Galaxy را با استفاده از ansible-galaxy CLI.

مثال:

ansible-galaxy collection install my_namespace.my_collection
وارد حالت تمام صفحه شوید

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

6.2 استفاده از مجموعه در کتاب راهنما

پس از نصب یک مجموعه، می توانید از محتوای آن در کتاب های بازی خود استفاده کنید.

مثال:

---
- name: Install and configure Apache
  hosts: all
  collections:
    - my_namespace.my_collection
  roles:
    - my_role
وارد حالت تمام صفحه شوید

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

در این مثال:

  • my_namespace.my_collection به مجموعه ای که حاوی نقش است اشاره دارد my_role.

6.3 نصب یک مجموعه محلی

همچنین می توانید با استفاده از دستور زیر مجموعه ای را از یک فهرست محلی نصب کنید:

ansible-galaxy collection install ./my_collection/
وارد حالت تمام صفحه شوید

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


7. توزیع مجموعه ها

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

7.1 انتشار در Ansible Galaxy

برای انتشار مجموعه در Ansible Galaxy از دستور زیر استفاده کنید:

ansible-galaxy collection publish ./my_namespace-my_collection-1.0.0.tar.gz
وارد حالت تمام صفحه شوید

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

این دستور بسته مجموعه را آپلود می کند (tar.gz) به Ansible Galaxy، آن را به صورت عمومی برای استفاده دیگران در دسترس قرار می دهد.


8. مدیریت وابستگی های مجموعه

مجموعه ها ممکن است به مجموعه های دیگر بستگی داشته باشند، و Ansible راهی برای مدیریت این وابستگی ها با استفاده از dependencies کلید در galaxy.yml فایل

مثال از galaxy.yml با وابستگی ها:

dependencies:
  - name: community.general
    version: ">=2.0.0"
وارد حالت تمام صفحه شوید

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

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


9. بهترین روش ها برای استفاده از مجموعه ها

  1. سازماندهی منطقی محتوا: مطمئن شوید که نقش‌ها، افزونه‌ها و سایر محتواها در مجموعه به خوبی سازماندهی شده‌اند.
  2. از نام های توصیفی استفاده کنید: به نقش ها، ماژول ها و سایر منابع موجود در مجموعه خود اسامی معنادار بدهید تا قابلیت کشف و خوانایی را بهبود ببخشید.
  3. مجموعه های نسخه: از نسخه‌سازی معنایی (major.minor.patch) برای پیگیری تغییرات در مجموعه‌های خود استفاده کنید.
  4. مجموعه خود را مستند کنید: ارائه مستندات واضح و مختصر در README.rst و docs/ برای توضیح نحوه استفاده از مجموعه
  5. مجموعه خود را تست کنید: مجموعه خود را به طور مرتب آزمایش کنید تا از سازگاری و عملکرد آن اطمینان حاصل کنید.

10. نتیجه گیری

مجموعه‌های Ansible راهی مؤثر برای بسته‌بندی، توزیع و مدیریت محتوای اتوماسیون ارائه می‌دهند. آنها شما را قادر می سازند نقش ها، ماژول ها و سایر منابع مرتبط را در یک واحد سازماندهی کنید و اشتراک گذاری و استفاده مجدد از محتوای اتوماسیون را در محیط های مختلف آسان تر می کند.

نکات کلیدی:

  • مجموعه ها مدولار هستند: آنها به شما امکان می دهند نقش ها، ماژول ها، پلاگین ها و موارد دیگر را در واحدهای قابل استفاده مجدد بسته بندی کنید.
  • مجموعه ها توزیع را ساده می کنند: اشتراک گذاری و توزیع آنها از طریق Ansible Galaxy یا سایر پلتفرم ها آسان است.
  • فراداده: galaxy.yml فایل فوق داده های مجموعه، وابستگی ها و نسخه سازی را تعریف می کند.
  • بهترین شیوه ها: محتوا را به طور منطقی سازماندهی کنید، مجموعه خود را مستند کنید و آن را به درستی نسخه کنید تا از سازگاری و قابلیت استفاده اطمینان حاصل کنید.

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

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

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

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

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