ویرگول
ورودثبت نام
حمزه قائم پناه
حمزه قائم پناهمهندس نرم‌افزار و عاشق توسعه فردی - تکنیکال لید - اکس هم بنیان‌گذار و مدیرفنی و پرداکت استارتاپ کشمون
حمزه قائم پناه
حمزه قائم پناه
خواندن ۳ دقیقه·۱ سال پیش

یک دوری با Ansible بزنیم

انسیبل یک سری از ابزارهای رو برای Infrastructure as Code (IaC) در اختیارمون میذاره که به کمکش می‌تونیم مدیریت کانفیگ‌ها، دپلوی برنامه، orchestration و کلی کارای دیگه رو انجام بدیم.

آموزش Ansible
آموزش Ansible

مفهوم Playbook:

به اسکریپت‌های انسیبل که به فرمت YAML هستن که برای اتومات کردن تسک‌ها می‌نویسیم‌شون، playbook می‌گیم.

مفهوم Control node:

ماشینی که روش Ansible CLI tools رو اجرا می‌کنیم که از طریق اون، نودها رو مدیریت می‌کنیم.

ویژگی‌های Ansible:

  • به صورت Agent-less: یعنی لازم نیست روی سرورهایی که می‌خوایم کانفیگ‌شون کنیم، چیزی نصب کنیم. بلکه فقط روی سرور اصلی یا همون لوکال‌مون نصب میشه و از طریق SSH به سرورها متصل میشه و کانفیگ‌شون می‌کنه.
  • قابلیت رشد: خیلی راحت میشه اتومات روی کلی سرور و سرویس کلاد رشدش داد و به صورت ماژولار توسعه پیدا می‌کنه.
  • پیش‌بینی‌پذیری: وقتی سیستم در وضعیتی هست که توی playbook تعریف کردیم، Ansible چیزی رو تغییر نمیده، حتی اگر بارها playbook اجرا بشه.

شروع اتومات کردن با Ansible:

اول نصب کنیم و یک پروژه ایجاد کنیم:

pip install ansible mkdir ansible_quickstart && cd ansible_quickstart

ایجاد یک inventory

در واقع inventory یک کانفیگ فایله که گروه‌ها و مشخصات سرورهای هر گروه رو مشخص می‌کنیم. در داخل پروژه با نام: inventory.ini (میتونه فرمت YAML هم باشه)

[myhosts] 192.0.2.50 192.0.2.51 192.0.2.52

برای verify و ping کردن فایل inventory: (از -u برای مشخص کردن user می‌تونیم استفاده کنیم)

ansible-inventory -i inventory.ini --list ansible myhosts -m ping -i inventory.ini

تولید متا گروه: می‌تونیم چند گروه رو هم در یک گروه بزرگتر قرار بدیم.

افزودن متغیر: متغیرها برای مدیریت نودهاس مثل مشخص کردن port, ssh user و غیره. که می‌تونه برای یک هاست مشخص و یا گروه تعریف بشه.

نکات نام‌گذاری Inventory:

  • اسامی یکتا و با‌معنی باشن و case sensitive هستن.
  • بجای space از آندرلاین استفاده کنین.
  • برمبنای what (گروه بندی هاست‌ها براساس توپولوژی: db, web, leaf)، where (گروه بندی هاست‌ها برمبنای موقعیت: datacenter, region, floor, building)، when (گروه‌بندی برمبنای محیط: test, staging, production) نام گذاری کنین.

ساخت یک playbook:

پلی‌بوک یک برنامه اتومیشن به فرمت YAML هست که انسیبل استفاده می‌کنه تا نودهایی که مدیریت می‌کنه رو آماده و کانفیگور کنه. پلی‌بوک لیستی از play ها است که Ansible از بالا به پایین انجام میده تا به هدف کلی برسه.

مفهوم Play:

یک لیست از تسک‌ها که مرتبط با نودهای مدیریت شده در inventory هست. (تعریف what, who)

مفهوم Task:

یک رفرنس به یک ماژول که عملیاتی که Ansible انجام میده رو تعریف می‌کنه.

مفهوم Module:

یک واحد کد یا باینتری که Ansible روی نود مدیریت‌شده اجرا می‌کنه. ماژول‌های Ansible در کالکشن‌هایی برای هر ماژول گروه‌بندی شدن. (فانکشن‌های از پیش نوشته شده‌ای مثل apt, yum, copy)

نوشتن یک playbook که سرورها رو پینگ کنه و پیام hello world رو چاپ کنه: (فایل playbook.yaml)

- name: My first play hosts: myhosts tasks: - name: Ping my hosts ansible.builtin.ping: - name: Print message ansible.builtin.debug: msg: Hello world

اجرای فایل playbook:

ansible-playbook -i inventory.ini playbook.yaml

مفهوم Handlers:

یک نوع خاص Task که فقط زمانی اجرای میشه که توسط تسک‌های قبلی فراخونی بشه که یک تغییری ایجاد کردن.

مفهوم Roles:

به محتواهای reusable Ansible که می‌تونه task, handler, variable, plugin و... باشه، که می‌تونیم ازشون داخل Play ها استفاده کنیم، می‌گیم Role.

ansible
۰
۰
حمزه قائم پناه
حمزه قائم پناه
مهندس نرم‌افزار و عاشق توسعه فردی - تکنیکال لید - اکس هم بنیان‌گذار و مدیرفنی و پرداکت استارتاپ کشمون
شاید از این پست‌ها خوشتان بیاید