Bosh sahifa Wiki Playbook

Playbook

Playbook — configuration management va orchestration vositasida qaysi hostlarga, qanday tartibda va qaysi tasklar qo‘llanishini ifodalovchi versiyalanadigan hujjat. Atama ayniqsa Ansible ekotizimida YAML fayl uchun ishlatiladi. Playbook inventory guruhini, privilege, variable, role, task va handlerlarni bir bajarilish oqimiga birlashtiradi.

Play tuzilishi

Bitta play ma’lum host pattern va tasklar to‘plamini bog‘laydi. Playbook bir nechta play’dan iborat bo‘lishi mumkin: avval database serverlar, keyin application node’lar, so‘ng load balancer yangilanadi.

- hosts: web
  become: true
  tasks:
    - name: Paketni o‘rnatish
      <a href="/wiki/package" target="_blank" rel="noopener" class="wiki-auto-link">package</a>:
        name: <a href="/wiki/nginx" target="_blank" rel="noopener" class="wiki-auto-link">nginx</a>
        <a href="/wiki/state" target="_blank" rel="noopener" class="wiki-auto-link">state</a>: present

Task moduli desired holatni tekshiradi. Paket mavjud bo‘lsa changed bermasligi idempotency’ning amaliy ko‘rinishidir.

Task va module

Task module chaqiruvi, argument, condition, loop va tagni o‘z ichiga oladi. Shell command har doim bajarilishi mumkin, maxsus package yoki file moduli esa joriy holatni tushunadi. Maxsus modul mavjud bo‘lsa u idempotency va structured error uchun afzal.

Element Vazifa
hosts Inventory’dagi targetlar
vars Play darajasidagi qiymatlar
tasks Bajariladigan amallar
handlers Change bo‘lsa ishga tushadigan amallar
roles Qayta ishlatiladigan tuzilma
tags Selected tasklarni bajarish

Tag bilan qisman run dependency’ni chetlab o‘tishi mumkin. Tagged task mustaqil va prerequisite’lari aniq bo‘lishi kerak.

Tartib va batch

Tasklar odatda play ichida yuqoridan pastga bajariladi, hostlar esa parallel strategiya bilan ishlashi mumkin. Serial rolling batch hajmini cheklaydi. Masalan, web node’larning 20 foizi yangilanib, health tekshirilgach keyingi guruhga o‘tiladi.

Maximum failure policy xato tarqalishini boshqaradi. Bitta host failure’da qolganlari davom etishi xizmat turiga bog‘liq. Quorum tizimda noto‘g‘ri parallelism cluster’ni ishdan chiqarishi mumkin.

Variable va precedence

Variable inventory, group, host, role default, play va command line qatlamlaridan kelishi mumkin. Yuqori precedence oldingi qiymatni almashtiradi. Juda ko‘p override yakuniy konfiguratsiyani noaniq qiladi; qiymat ownership va scope tor saqlanadi.

Undefined variable default bilan yashirilsa typo productionda noto‘g‘ri qiymatga aylanishi mumkin. Majburiy variable va type validation boshida bajariladi.

Handler

Config template o‘zgarsa task notification orqali restart yoki reload handlerini belgilaydi. Bir nechta task bir handlerni chaqirsa u odatda bir marta bajariladi. Play o‘rtasida service yangi config bilan kerak bo‘lsa handler explicit flush qilinadi.

Config validation handlerdan oldin bajariladi. Noto‘g‘ri fayl yozilib, service restart qilinsa availability yo‘qolishi mumkin. Atomic file replacement eski ishlaydigan faylni saqlashga yordam beradi.

Check mode va diff

Check mode imkon qadar qanday change bo‘lishini bajarishsiz taxmin qiladi. Barcha module check mode’ni to‘liq qo‘llamaydi; shell command future natijani bilmaydi. Diff template va file o‘zgarishini ko‘rsatadi, lekin secret redaction qilinadi.

Check mode test emas. Real permission, package script va external side effect apply vaqtida boshqa natija berishi mumkin. Staging va canary run uni to‘ldiradi.

Xavfsizlik

Playbook repository’da review qilinadi va collection/module versiyasi pin qilinadi. Privilege escalation faqat zarur taskda qo‘llanadi. Controller credential’i hostlarga keng root access berishi mumkin, shu sabab runner va secret store himoyalanadi.

Untrusted variable’ni shell stringga qo‘shish command injection keltiradi. Argumentli module va input validation ishlatiladi. Logda credential yoki private key chiqmasligi uchun maxfiy output tor doirada yashiriladi; bu barcha diagnostikani yo‘qotmasligi kerak.

Bog‘liq tushunchalar

Configuration management, Ansible, Inventory, Task, Handler, Role, Agentless automation