Plan — Infrastructure as Code vositasi desired konfiguratsiya, saqlangan state va provider’dan o‘qilgan joriy holatni solishtirib, apply bajarilsa qanday o‘zgarishlar kutilishini ko‘rsatadigan natija. Unda resource yaratish, joyida yangilash, almashtirish yoki o‘chirish amallari ko‘rinadi. Plan review uchun muhim dalil, ammo real bajarilishning mutlaq kafolati emas.
Hisoblash manbalari
Tool konfiguratsiyani parse qiladi, module va variable’larni yechadi, dependency graph tuzadi va state’ni o‘qiydi. Refresh yoqilgan bo‘lsa provider real API’dan resource atributlarini oladi. So‘ng desired va current qiymatlar schema qoidalari bo‘yicha taqqoslanadi.
Plan vaqtida hali yaratilmagan resource outputi noma’lum bo‘lishi mumkin. Masalan, yangi load balancer IP’i apply’dan keyin API tomonidan beriladi. Tool uni known after apply kabi belgilaydi; unga bog‘liq ayrim diff ham to‘liq aniqlanmaydi.
Amal turlari
| Belgilanish | Mazmuni |
|---|---|
| Create | Yangi real resource yaratiladi |
| Update in place | Mavjud resource o‘zgartiriladi |
| Replace | Eski va yangi identity almashadi |
| Destroy | Resource o‘chiriladi |
| Read | Data source yoki refresh o‘qiladi |
| No-op | Desired va current mos |
Replace ayniqsa e’tiborli: immutable atribut o‘zgarishi database yoki instance’ni qayta yaratishi mumkin. Tool create-before-destroy ishlatadimi yoki avval o‘chiradimi lifecycle va providerga bog‘liq.
Review
Reviewer faqat “nechta add/change/destroy” summary’siga qaramaydi. Resource address, environment, account, region, public exposure, encryption, tag, backup va dependency ko‘riladi. Kutilmagan destroy yoki ko‘p replace sabab aniqlanmaguncha apply qilinmaydi.
Sensitive qiymat yashirilgan bo‘lishi mumkin. sensitive label diff mavjudligini ko‘rsatib, mazmunni yashiradi; reviewer policy va source orqali o‘zgarishning ruxsat etilganini tekshiradi. Plan artefaktining o‘zi ham sensitive state ma’lumotini saqlashi mumkin.
Saqlangan plan
CI plan’ni binary artefakt sifatida saqlab, approvaldan keyin aynan shu plan’ni apply qilishi mumkin. Bu review qilingan konfiguratsiya bilan bajariladigan konfiguratsiya orasidagi farqni kamaytiradi. Artefakt commit, provider lock va environment identity bilan bog‘lanadi.
Plan va apply orasida real infratuzilma o‘zgarsa provider xato berishi yoki natija kutilganidan farq qilishi mumkin. Uzoq approval oynasi drift ehtimolini oshiradi. Ayrim pipeline apply oldidan plan eskirmaganini tekshiradi yoki qayta plan talab qiladi.
Exit code va avtomatlashtirish
Detailed exit code no-change, change mavjud va error holatini ajratadi. Pipeline faqat output matnini parse qilmasdan shu statusdan foydalanadi. Change mavjudligi o‘zi failure emas; policy yoki approval bosqichini ishga tushiradi.
Plan JSON formati policy engine, cost estimation va custom checker uchun ishlatilishi mumkin. Human-readable outputga mo‘ljallangan format versionlar orasida o‘zgarishi mumkin, mashina integratsiyasi rasmiy structured formatga tayanadi.
Policy va xarajat
Policy as Code plan ichidagi public ingress, ruxsatsiz region, shifrlanmagan storage yoki majburiy tagsiz resource’ni aniqlaydi. Policy inputida unknown qiymatlar bo‘lsa fail-open yoki fail-closed xatti-harakati aniq belgilanadi.
Cost estimator instance turi, disk va xizmat parametridan taxmin qiladi. Usage-based request, egress va discount to‘liq ma’lum bo‘lmagani uchun bu forecast, invoice emas. Katta oshish review signalidir.
Cheklovlar
Provider API defaulti, eventual consistency va runtime side effect plan’da to‘liq ko‘rinmasligi mumkin. Provisioner script nimalar qilishini plan faqat command sifatida ko‘rishi ehtimol. External systemda operator qilgan parallel o‘zgarish ham race yaratadi.
Apply’dan keyin output, resource health va policy qayta tekshiriladi. Plan xavfni kamaytiradi, lekin test, backup, rollout va observability o‘rnini bosmaydi.
Bog‘liq tushunchalar
Infrastructure as Code, Apply, Provider, State, Resource graph, Policy as Code, Configuration drift