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

به اسکریپتهای انسیبل که به فرمت YAML هستن که برای اتومات کردن تسکها مینویسیمشون، playbook میگیم.
ماشینی که روش Ansible CLI tools رو اجرا میکنیم که از طریق اون، نودها رو مدیریت میکنیم.
اول نصب کنیم و یک پروژه ایجاد کنیم:
pip install ansible mkdir ansible_quickstart && cd ansible_quickstart
در واقع 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 و غیره. که میتونه برای یک هاست مشخص و یا گروه تعریف بشه.
پلیبوک یک برنامه اتومیشن به فرمت YAML هست که انسیبل استفاده میکنه تا نودهایی که مدیریت میکنه رو آماده و کانفیگور کنه. پلیبوک لیستی از play ها است که Ansible از بالا به پایین انجام میده تا به هدف کلی برسه.
یک لیست از تسکها که مرتبط با نودهای مدیریت شده در inventory هست. (تعریف what, who)
یک رفرنس به یک ماژول که عملیاتی که Ansible انجام میده رو تعریف میکنه.
یک واحد کد یا باینتری که 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
یک نوع خاص Task که فقط زمانی اجرای میشه که توسط تسکهای قبلی فراخونی بشه که یک تغییری ایجاد کردن.
به محتواهای reusable Ansible که میتونه task, handler, variable, plugin و... باشه، که میتونیم ازشون داخل Play ها استفاده کنیم، میگیم Role.