Apply — Infrastructure as Code vositasida tasdiqlangan konfiguratsiyani real infratuzilmaga tatbiq etish jarayoni. U provider API’lariga murojaat qilib resource yaratadi, yangilaydi, almashtiradi yoki o‘chiradi va muvaffaqiyatli amallardan keyin state’ni yangilaydi. Apply deklarativ faylni shunchaki “ishga tushirish” emas; dependency grafigi bo‘yicha ko‘p tashqi operatsiyalarni muvofiqlashtiradi.
Plan bilan aloqasi
Apply oldidan plan desired konfiguratsiya va joriy holat orasidagi farqni ko‘rsatadi. Interaktiv rejimda tool shu plan uchun tasdiq so‘rashi mumkin. CI’da plan alohida artefakt sifatida yaratiladi, review qilinadi va aynan o‘sha saqlangan plan apply qilinadi.
Apply vaqtida yangi plan avtomatik hisoblansa reviewdan keyin konfiguratsiya yoki provider holati o‘zgargan bo‘lishi mumkin. Saqlangan plan bu farqni kamaytiradi, ammo tashqi API’dagi parallel o‘zgarishlarni mutlaq to‘xtatmaydi.
Amal tartibi
Resource graph dependency’larni belgilaydi. Network yaratilgach subnet, subnetdan keyin instance yaratiladi; mustaqil resurslar parallel bajarilishi mumkin. Parallelism tezlikni oshiradi, biroq provider rate limit yoki platforma quota’siga mos cheklanadi.
| Amal | State’dagi natija |
|---|---|
| Create | Yangi real ID yoziladi |
| Update | Atributlar yangilanadi |
| Replace | Eski identity yangi bilan almashadi |
| Destroy | Resource state’dan chiqariladi |
| Read/refresh | Joriy atributlar qayd etiladi |
Har operation tugagan sari state oraliq natijani saqlashi mumkin. Apply o‘rtada to‘xtasa avval bajarilgan ishlar avtomatik rollback qilinmasligi ehtimol.
Qisman muvaffaqiyatsizlik
Cloud API’da besh resursdan uchtasi yaralib, to‘rtinchisi xato berishi mumkin. Tool bajarilgan resurslarni state’ga yozadi va xatoni qaytaradi. Keyingi plan real va desired holatni qayta solishtirib qolgan ishni ko‘rsatadi.
Apply’ni boshidan ko‘r-ko‘rona qayta ishlatishdan oldin xato sababi, orphan obyekt va state tekshiriladi. Provider create javobini olmasdan timeout bo‘lsa real resource yaratilgan, state esa bilmasligi mumkin; import yoki manual reconciliation talab qilinadi.
Lock va concurrency
Remote state lock bir xil state’ga ikki apply parallel yozishini to‘xtatadi. Lock mavjudligi boshqa account yoki boshqa state orqali shu real resource boshqarilmayotganini kafolatlamaydi. Resource ownership tashkilot darajasida ham yagona bo‘lishi kerak.
Stale lockni majburan ochish faqat oldingi process tugagani tasdiqlanganda bajariladi. Faol apply vaqtida force unlock state corruption va zid API amallariga olib keladi.
Ruxsat va approval
Pipeline identity’si faqat shu stack boshqaradigan resurslarga minimal huquq oladi. Plan yaratuvchi bilan production apply tasdiqlovchisi ajratilishi mumkin. Approval commit hash, environment, plan digest va kutilgan destroy soniga bog‘lanadi.
Static administrator key o‘rniga qisqa muddatli workload identity ishlatiladi. Apply logi credential yoki sensitive value’ni chiqarmaydi; plan va state artefakti ham maxfiy hisoblanadi.
Replace va uzilish
Immutable atribut o‘zgarsa resource almashtiriladi. create_before_destroy yangi nusxani avval yaratib uzilishni kamaytiradi, lekin unique name, IP yoki quota bunga yo‘l bermasligi mumkin. destroy_before_create esa service downtime keltiradi.
Database yoki stateful resource replacement katta data migrationni anglatishi mumkin. IaC resource lifecycle’ini boshqaradi, lekin application-level replication va cutover alohida reja talab qiladi.
Apply’dan keyingi tekshiruv
Command success qaytishi foydalanuvchi xizmati sog‘lomligini isbotlamaydi. Health check, smoke test, policy check va monitoring deploymentdan keyin bajariladi. Yangi firewall qoidasi API tomonidan qabul qilinib, noto‘g‘ri route sabab trafik baribir ishlamasligi mumkin.
Output va state version audit uchun saqlanadi. Deployment event monitoring timeline’iga yoziladi. Kutilmagan drift yoki SLO buzilishi aniqlansa rollback konfiguratsiya reverti, oldingi artefakt yoki maxsus recovery amali orqali bajariladi.
Bog‘liq tushunchalar
Infrastructure as Code, Plan, Provider, Resource, Remote state, State locking, Deployment