Provider — Infrastructure as Code vositasini ma’lum cloud, SaaS, network platforma yoki boshqa API bilan bog‘laydigan plugin. U konfiguratsiyadagi resource va data source’larni tashqi xizmat API chaqiruvlariga aylantiradi, schema, validatsiya, create/read/update/delete amallari hamda xato mappingini taqdim etadi.
Vazifasi
IaC core konfiguratsiya, graph, plan va state mexanizmini boshqaradi. Provider esa masalan virtual network qanday yaratilishi, database atributlari qanday o‘qilishi yoki DNS record qanday yangilanishini biladi. Shu ajratish bitta core’ga turli platformalarni ulash imkonini beradi.
| Provider qismi | Vazifa |
|---|---|
| Schema | Atribut turi, majburiyligi va sensitivity |
| Configure | Endpoint, region va credentialni tayyorlash |
| Resource CRUD | Tashqi obyekt lifecycle’i |
| Data source | Mavjud ma’lumotni o‘qish |
| Import | Real obyektni state bilan bog‘lash |
| Diagnostics | API xatosini foydalanuvchiga tushuntirish |
Provider API’ni to‘liq ko‘chirmasligi mumkin. Yangi xizmat funksiyasi providerning keyingi versiyasida paydo bo‘ladi.
Konfiguratsiya va autentifikatsiya
Provider region, project, subscription yoki endpoint kabi sozlamalarni oladi. Credential environment, workload identity, profile yoki secret manager orqali beriladi. Access key’ni IaC fayliga yozish repository va plan artefaktida oshkor qiladi.
Bir konfiguratsiyada bir providerning bir nechta alias instance’i bo‘lishi mumkin. Masalan, ikki region yoki ikki account uchun alohida alias ishlatiladi. Module qaysi provider instance’ini olishi aniq uzatilmasa resource noto‘g‘ri accountda yaratilishi mumkin.
Versiya
Provider release’i schema, default, diff hisoblash va API behaviorni o‘zgartirishi mumkin. Version constraint hamda lock file bir xil source va checksumni tanlaydi. “Eng yangi” versiyani har pipeline’da avtomatik olish reproducibility’ni buzadi.
Upgrade alohida branch’da bajarilib, changelog, migration note va plan ko‘riladi. Major version breaking change keltirishi mumkin, lekin minor versiya ham provider bug fix sabab ilgari yashirilgan diffni chiqarishi ehtimol.
State va refresh
Provider Read amali orqali real obyekt atributlarini state bilan yangilaydi. API field tartibi yoki computed default barqaror normalize qilinmasa har planda doimiy farq chiqishi mumkin. Bunday “perpetual diff” provider implementation muammosi bo‘lishi mumkin.
Resource tashqarida o‘chirilsa refresh uni yo‘q deb topadi va plan qayta yaratishni taklif qiladi. API vaqtincha 404 yoki permission error bersa provider buni haqiqiy deletion bilan adashtirmasligi kerak.
Timeout va retry
Cloud API rate limit, eventual consistency va uzoq operatsiyalarga ega. Provider retry faqat qayta bajarish xavfsiz bo‘lgan transient xatolarda qo‘llaydi. Create javobi yo‘qolsa ko‘r-ko‘rona yana create duplicate resource keltirishi mumkin; request token yoki keyingi lookup zarur.
Resource timeout operatsiya uchun real muddatga mos. Timeoutdan keyin API jarayoni fonda davom etishi mumkin. Keyingi plan oldin real holatni o‘qib, orphan resursni aniqlaydi.
Maxfiy atributlar
Schema atributni sensitive deb belgilasa CLI output uni yashirishi mumkin, ammo qiymat state’da mavjud bo‘lishi ehtimol. Sensitive flag shifrlash emas. Remote state encryption, access control va retention talab qilinadi.
API faqat create vaqtida parolni qaytarmasa provider state’da oldingi qiymatni saqlashi yoki write-only maydonni maxsus boshqarishi kerak. Har apply’da parolni yangilash istalmagan diff keltirishi mumkin.
Provider ishonchi
Provider kodi yuqori huquqli credential bilan ishlaydi va supply-chain xavfiga ega. Source registry, publisher, checksum va imzo tekshiriladi. Community provider funksional bo‘lishi mumkin, ammo maintenance, release va security response holati baholanadi.
Plugin lokal process sifatida ishlasa konfiguratsiya va state ma’lumotiga kira oladi. CI runner izolatsiyasi va egress policy zararli yoki buzilgan plugin ta’sirini kamaytiradi.
Bog‘liq tushunchalar
Infrastructure as Code, Resource, Data source, Plugin, State, API, Version pinning