مجموعه های 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. بهترین روش ها برای استفاده از مجموعه ها
- سازماندهی منطقی محتوا: مطمئن شوید که نقشها، افزونهها و سایر محتواها در مجموعه به خوبی سازماندهی شدهاند.
- از نام های توصیفی استفاده کنید: به نقش ها، ماژول ها و سایر منابع موجود در مجموعه خود اسامی معنادار بدهید تا قابلیت کشف و خوانایی را بهبود ببخشید.
- مجموعه های نسخه: از نسخهسازی معنایی (major.minor.patch) برای پیگیری تغییرات در مجموعههای خود استفاده کنید.
-
مجموعه خود را مستند کنید: ارائه مستندات واضح و مختصر در
README.rst
وdocs/
برای توضیح نحوه استفاده از مجموعه - مجموعه خود را تست کنید: مجموعه خود را به طور مرتب آزمایش کنید تا از سازگاری و عملکرد آن اطمینان حاصل کنید.
10. نتیجه گیری
مجموعههای Ansible راهی مؤثر برای بستهبندی، توزیع و مدیریت محتوای اتوماسیون ارائه میدهند. آنها شما را قادر می سازند نقش ها، ماژول ها و سایر منابع مرتبط را در یک واحد سازماندهی کنید و اشتراک گذاری و استفاده مجدد از محتوای اتوماسیون را در محیط های مختلف آسان تر می کند.
نکات کلیدی:
- مجموعه ها مدولار هستند: آنها به شما امکان می دهند نقش ها، ماژول ها، پلاگین ها و موارد دیگر را در واحدهای قابل استفاده مجدد بسته بندی کنید.
- مجموعه ها توزیع را ساده می کنند: اشتراک گذاری و توزیع آنها از طریق Ansible Galaxy یا سایر پلتفرم ها آسان است.
-
فراداده:
galaxy.yml
فایل فوق داده های مجموعه، وابستگی ها و نسخه سازی را تعریف می کند. - بهترین شیوه ها: محتوا را به طور منطقی سازماندهی کنید، مجموعه خود را مستند کنید و آن را به درستی نسخه کنید تا از سازگاری و قابلیت استفاده اطمینان حاصل کنید.
با تسلط بر مجموعه ها، می توانید گردش کار اتوماسیون Ansible خود را بسیار افزایش دهید، محتوا را به راحتی به اشتراک بگذارید، و محیط اتوماسیون خود را مقیاس پذیرتر و قابل نگهداری تر کنید.