Provisioning — hisoblash resursini foydalanishga tayyor holatga keltirish jarayonidir. U server yoki virtual mashina yaratish, operatsion tizimni sozlash, paketlar o‘rnatish, foydalanuvchi va tarmoq parametrlarini belgilash kabi amallarni qamrab olishi mumkin. Aniq ma’no kontekstga qarab infrastructure provisioning va configuration provisioningga ajraladi.
Resurs yaratish va konfiguratsiya
Infrastructure provisioning cloud API orqali virtual machine, disk, subnet yoki load balancer yaratadi. Terraform kabi vosita bu resurslarni deklarativ model bilan boshqaradi. Configuration management esa mavjud host ichida paket, fayl va xizmat holatini sozlaydi. Ansible, Puppet va Chef shu qatlamda ishlatiladi.
Chegara qat’iy emas: cloud-init VMning birinchi yuklanishida paket o‘rnatishi, image builder esa oldindan konfiguratsiyalangan disk yaratishi mumkin. Muhim jihat qaysi vosita qaysi resursga egalik qilishi va o‘zgarish qayerda bajarilishini aniq belgilashdir. Bir faylni ikki tizim boshqarsa drift va almashib yozish yuz beradi.
Deklarativ va imperativ usul
Imperativ script bajariladigan qadamlar ketma-ketligini beradi. Deklarativ ta’rif esa kerakli yakuniy holatni ko‘rsatadi, vosita farqni hisoblaydi. Deklarativ provisioning idempotent bo‘lishi mumkin: bir xil konfiguratsiya qayta qo‘llanganda keraksiz resurs yaratmaydi.
Har shell script avtomatik ravishda idempotent emas. User yaratish buyrug‘i ikkinchi run da xato qilishi, faylga append esa qatorni takrorlashi mumkin. Shartli tekshiruv, atomic write va vositaning native resource moduli takroriy bajarishni xavfsiz qiladi.
Image va bootstrapping
Golden image asosiy OS, agent va keng tarqalgan dependencylarni oldindan saqlaydi. Yangi instance tez ishga tushadi va kamroq tarmoq yuklaydi. Biroq image muntazam patchlanishi, versiyalanishi va eskilari almashtirilishi kerak. Juda ko‘p rolga xos image soni maintenance xarajatini oshiradi.
Bootstrapping minimal imagega startup vaqtida konfiguratsiya qo‘llaydi. Bu moslashuvchan, ammo package repository yoki control server mavjudligiga bog‘liq. Amaliy tizim ko‘pincha ikkalasini birlashtiradi: bazaviy xavfsiz image va ishga tushishda rolga xos kichik sozlama.
Lifecycle va drift
Provisioning faqat birinchi yaratish amali emas. Resursni yangilash, kengaytirish, almashtirish va deprovision qilish ham lifecyclega kiradi. Immutable infrastructure yondashuvida ishlayotgan server joyida katta o‘zgartirilmaydi; yangi image bilan yangi instance yaratiladi va trafik ko‘chiriladi.
Mutable muhitda configuration management davriy converge orqali driftni tuzatadi. Drift operatorning qo‘lda o‘zgartirishi, tashqi tizim yoki muvaffaqiyatsiz run sabab paydo bo‘ladi. Plan, audit va desired-state taqqoslash kutilmagan farqni aniqlaydi.
Sirlar va identitet
Provisioning yangi resursga credential yetkazishi kerak bo‘lishi mumkin. Sirni image, source code yoki user-data ichida uzoq yashaydigan oddiy matn sifatida saqlash xavfli. Instance identity yoki workload identity orqali secret managerdan qisqa muddatli qiymat olinadi. Loglarda token va private key yashiriladi.
SSH host key, TLS sertifikat va machine identity har instance uchun noyob yaratiladi. Bazaviy image ichidagi identifikatorni klonlash bir nechta hostni bir xil deb ko‘rsatadi. Deprovision paytida credential bekor qilinadi, DNS va monitoring yozuvlari tozalanadi hamda disk retention siyosati bajariladi.
Tekshirish
Provisioning pipeline lint, static validation, plan va vaqtinchalik muhitdagi integration testdan o‘tadi. Health check faqat VM running holatini emas, kerakli xizmatning real endpointini tekshiradi. Jarayon qisman muvaffaqiyatsiz tugasa, mavjud resurslar inventari va state bilan solishtirilib, xavfsiz retry yoki rollback qilinadi.
Bog‘liq tushunchalar
Infrastructure as Code, Configuration management, Bootstrapping, Golden image, Idempotence, Immutable infrastructure, Deprovisioning