Bosh sahifa Wiki Task

Task

Task — configuration management playbook’ida bitta modul yoki amal orqali target host holatini tekshiradigan va zarur bo‘lsa o‘zgartiradigan eng kichik nomlangan bajarilish birligi. Paket o‘rnatish, fayl render qilish, xizmatni yoqish yoki API chaqirish task misollaridir. Task natijasi odatda ok, changed, failed yoki skipped holatlaridan birini beradi.

Tuzilishi

Task inson o‘qiydigan nom, module va argumentlardan iborat. Condition, loop, retry, privilege, tag va handler notification qo‘shimcha boshqaruv beradi.

- name: <a href="/wiki/nginx" target="_blank" rel="noopener" class="wiki-auto-link">Nginx</a> konfiguratsiyasini joylash
  <a href="/wiki/template" target="_blank" rel="noopener" class="wiki-auto-link">template</a>:
    src: nginx.conf.j2
    dest: /etc/<a href="/wiki/nginx" target="_blank" rel="noopener" class="wiki-auto-link">nginx</a>/nginx.conf
    mode: "0644"
  notify: Nginxni qayta yuklash

Template mazmuni o‘zgarmasa task changed=false qaytaradi va handler chaqirilmaydi.

Idempotency

Idempotent task bir necha marta bajarilganda bir xil desired holatni saqlaydi. Package moduli avval paket mavjudligini tekshiradi. Oddiy shell install command’i esa har run bajarilishi va platforma xatosini structured talqin qilmasligi mumkin.

Command uchun creates, removes, changed condition va failure condition kabi shartlar idempotency hamda statusni aniqlashtiradi. Biroq murakkab holat uchun maxsus module yozish ishonchliroq.

Natija modeli

Holat Mazmuni
ok Desired holat allaqachon mavjud
changed Task real o‘zgarish qildi
failed Amal bajarilmadi yoki shart buzildi
skipped Condition yoki target sabab ishlamadi
unreachable Host bilan ulanish yo‘q

Changed status handler va auditga ta’sir qiladi. Modul har safar noto‘g‘ri changed qaytarsa keraksiz restart yuz beradi.

Condition

Condition host fact, variable yoki oldingi task resultiga qarab bajarilishni cheklaydi. Condition type-aware bo‘lishi kerak; matndagi false ayrim templating kontekstida rost sifatida talqin qilinishi mumkin. Undefined variable uchun xato yoki aniq default siyosati belgilanadi.

Ko‘p ichma-ich condition bir taskni tushunarsiz qiladi. Platformaga xos tasklar block, include yoki role file’ga ajratilishi mumkin. Har branch test inventory’da qamraladi.

Loop

Loop bir xil modulni elementlar ro‘yxatiga qo‘llaydi. Har item alohida result beradi. Minglab item uchun API call juda sekin bo‘lishi mumkin; module bulk operation qo‘llasa ro‘yxatni bir chaqiruvda beradi.

Loop label reportda maxfiy yoki ulkan obyektni chiqarmasdan qaysi item ekanini ko‘rsatadi. Error bitta itemda bo‘lsa qolganlar davom etishi module va play error siyosatiga bog‘liq.

Retry va kutish

Condition-based retry asynchronous service readiness’ni kutadi. Faqat fixed pause har doim ortiqcha kutadi yoki sekin muhitda yetmaydi. Retry qayta bajarilishi xavfsiz bo‘lgan read yoki idempotent amal uchun mos.

Non-idempotent create command timeout bersa qayta urinish duplicate yaratishi mumkin. Avval current state tekshiriladi yoki request idempotency key ishlatiladi.

Error handling

Block, rescue va always task guruhida xato, recovery va cleanupni ifodalaydi. Ignore-errors’ni keng ishlatish konfiguratsiyaning qisman buzilgan holatda davom etishiga olib keladi. Kutiladigan exit code failure condition bilan aniq tasniflanadi.

Task failure xabari command, target va xavfsiz stderr kontekstini beradi. Secret output yashiriladi, lekin bu setting diagnostikani to‘liq yo‘qotmasligi uchun tor scope’da ishlatiladi.

Privilege va delegation

Privilege escalation faqat root huquqi zarur taskda yoqiladi. Barcha play’ni administrator sifatida ishlatish xato taskning blast radius’ini oshiradi. Delegation taskni target o‘rniga control node yoki boshqa hostda bajaradi; uning variable va credential konteksti aniq tushuniladi.

Local API task bir marta bajarilishi kerak bo‘lsa run-once va delegation kombinatsiyasi ishlatilishi mumkin. Parallel workerlar bitta global amalni takrorlamasligi lozim.

Bog‘liq tushunchalar

Playbook, Module, Handler, Idempotency, Condition, Loop, Configuration management