Bosh sahifa Wiki Resource

Resource

Resource — Infrastructure as Code konfiguratsiyasida boshqariladigan tashqi obyektning deklarativ ifodasi. Virtual mashina, subnet, DNS record, database, access policy yoki monitoring alert resource bo‘lishi mumkin. Resource block desired atributlarni bildiradi, provider esa real platformada uning lifecycle’ini boshqaradi.

Logical va physical identity

Konfiguratsiyadagi web_server kabi nom logical addressning bir qismi. Tashqi platformadagi real obyekt esa alohida ID, ARN yoki URLga ega. State shu ikki identity’ni bog‘laydi. Logical nom o‘zgarsa tool eski resource o‘chirilib yangisi yaratiladi deb o‘ylashi mumkin, agar state move alohida ko‘rsatilmasa.

Display name real identity bo‘lmasligi mumkin: bir xil nomli ikki obyekt mavjud yoki nom keyin o‘zgarishi ehtimol. Provider stable ID’ni state’da saqlaydi.

Argument va atribut

Argument foydalanuvchi konfiguratsiyada beradigan desired qiymat. Computed atribut provider yoki API tomonidan aniqlanadi, masalan yaratilgan IP manzil. Ayrim field optional va computed bo‘lib, foydalanuvchi bersa desired, bermasa API defaulti ishlaydi.

Atribut xususiyati Mazmuni
Required Konfiguratsiyada majburiy
Optional Berilishi mumkin
Computed Provider API’dan oladi
Sensitive Outputda yashiriladi
Force new O‘zgarishi replace talab qiladi

Sensitivity display siyosati; qiymat state’da saqlanishi mumkin.

CRUD lifecycle

Create real obyekt yaratadi va ID’ni state’ga yozadi. Read joriy holatni yangilaydi. Update in-place o‘zgarishni bajaradi. Delete obyektni yo‘q qiladi. Har API barcha fieldni update qilmaydi; immutable atribut o‘zgarsa resource replacement qilinadi.

Replacement odatda yangi yaratish va eskini o‘chirish yoki aksincha tartibda bo‘ladi. Unique name yoki quota ikki nusxani bir vaqtda yaratishga yo‘l bermasa create-before-destroy ishlamaydi. Downtime va dependency plan review’da ko‘riladi.

Dependency

Bir resource atributi boshqasining outputiga reference qilsa implicit dependency hosil bo‘ladi. Masalan, instance subnet ID’ni ishlatsa subnet avval yaratiladi. Faqat tashqi side effectga bog‘liq, lekin reference yo‘q holatda explicit dependency kerak bo‘lishi mumkin.

Keraksiz depends_on graphni seriallashtiradi va ko‘p unknown qiymat keltiradi. Dependency real data yoki lifecycle aloqasini ifodalashi kerak, “ishonch uchun hammasi hammasidan keyin” emas.

Count va kolleksiya

Bir xil turdagi ko‘p resource count yoki key-based collection bilan yaratiladi. Index asosidagi ro‘yxat o‘rtasidan element olib tashlansa keyingi identity’lar siljishi mumkin. Barqaror biznes kalitiga asoslangan map replacement xavfini kamaytiradi.

Generated resurslar individual owner va tagga ega bo‘lishi kerak. Minglab resource bitta state va planda control-plane limit hamda review murakkabligini oshiradi; boundarylarga bo‘linadi.

Import va tashqi boshqaruv

Oldindan mavjud obyekt import qilinib logical addressga bog‘lanadi. Importdan keyin konfiguratsiya real desired holatni aniq ifodalashi kerak; aks holda birinchi plan uni o‘zgartirish yoki o‘chirishni taklif qiladi.

Bitta resource’ni ikki IaC state boshqarmasligi kerak. Ikkala pipeline navbatma-navbat atributlarni qaytarib, doimiy conflict yaratadi. Ownership inventar va taglarda aniq belgilanadi.

Lifecycle himoyasi

Kritik database uchun prevent-destroy tasodifiy o‘chirishni to‘xtatishi mumkin. Bu absolute himoya emas: console, provider bug yoki state manipulationdan saqlamaydi. Platforma darajasidagi deletion protection va backup ham zarur.

Ignore-changes tashqi controller boshqaradigan fieldni diffdan chiqaradi. Uni keng ishlatish haqiqiy driftni yashiradi. Har ignored atributning owneri va sababi hujjatlashtiriladi.

Bog‘liq tushunchalar

Infrastructure as Code, Provider, State, Resource graph, Lifecycle, Import, Configuration drift