Packer — bir xil source konfiguratsiyadan turli platformalar uchun machine image yaratishni avtomatlashtiradigan image-building vositasi. U virtual mashina image’i, cloud image, containerga yaqin artifact yoki boshqa immutable template tayyorlash uchun ishlatiladi.
Packer running infratuzilmani boshqarmaydi. Uning asosiy vazifasi keyinchalik boshqa vosita deploy qiladigan tayyor image yaratishdir.
Image pipeline
Oddiy jarayon:
base image
→ temporary instance
→ provisioning
→ cleanup
→ image capture
→ artifact
Natija virtual mashina yoki cloud instance’lar uchun standart boshlang‘ich image bo‘ladi.
Template
Packer template image build ta’rifini saqlaydi.
Unda:
belgilanadi.
Template version control’da saqlanadi va CI orqali ishlatiladi.
Source va builder
Source qaysi platformada vaqtinchalik machine yaratilishini va final artifact qanday bo‘lishini belgilaydi.
- instance yaratadi;
- ulanishni kutadi;
- provisionerlarni ishga tushiradi;
- image yaratadi;
- vaqtinchalik resurslarni tozalaydi.
Cloud, local hypervisor va boshqa platformalar uchun alohida pluginlar mavjud.
Base image
Build ko‘pincha mavjud minimal OS image’dan boshlanadi.
Base image tanlashda:
- publisher;
- checksum yoki image ID;
- OS versiyasi;
- architecture;
- patch holati;
- license
tekshiriladi.
“Eng yangi” nomga tayanish reproducibilityni kamaytiradi. Aniq version yoki immutable identifikator ishlatiladi.
Provisioner
Provisioner image ichidagi tizimni tayyorlaydi.
Usullar:
Golden image
Tashkilot tasdiqlangan standart image yaratishi mumkin.
Golden image tarkibida:
- security baseline;
- monitoring agent;
- logging;
- certificate;
- OS update;
- common dependency
bo‘ladi.
Application jamoalari shu image ustiga o‘z qatlamini qo‘shishi mumkin.
Immutable infrastructure
Server ishga tushgandan keyin qo‘lda o‘zgartirilmaydi.
Yangilanish uchun:
- yangi image build qilinadi;
- testdan o‘tadi;
- yangi instance’lar yaratiladi;
- traffic ko‘chiriladi;
- eski instance’lar olib tashlanadi.
Bu driftni kamaytiradi.
Artifact
Packer build natijasi:
bo‘lishi mumkin.
Artifact metadata source commit va build ID bilan bog‘lanadi.
Multi-platform build
Bir template umumiy provisioningdan foydalanib turli platformaga image yaratishi mumkin.
Biroq platformalar:
bo‘yicha farq qiladi.
Umumiy va platformaga xos qismlar alohida saqlanadi.
Variable
Variable region, base image, version va boshqa qiymatlarni parametr qiladi.
Sensitive variable log va build artifactga chiqmasligi kerak.
Image ichida cloud credential qoldirilmaydi.
Post-processor
Build tugagach artifact ustida qo‘shimcha amal bajaradi.
Misollar:
Post-processor final artifact lineage’ining bir qismi.
Manifest
Manifest build natijalarini qayd etadi.
Unda:
bo‘lishi mumkin.
Keyingi Terraform yoki deployment pipeline shu IDdan foydalanishi mumkin.
Image test
Image yaratilgani uning ishlashini kafolatlamaydi.
Test:
- boot;
- SSH yoki remote access;
- service;
- package;
- security baseline;
- disk;
- network;
- application health
ni tekshiradi.
Testdan o‘tgan artifactgina promotion qilinadi.
Cleanup
Image capture’dan oldin:
tozalanadi.
Aks holda barcha instance’lar bir xil host key yoki credential bilan yaratilishi mumkin.
Image hajmi
Keraksiz package va cache image hajmini oshiradi.
Katta image:
- sekin copy;
- sekin boot;
- ko‘p storage;
- katta attack surface
yaratadi.
Minimal image va kerakli diagnostika vositalari o‘rtasida muvozanat tanlanadi.
Versioning
- OS;
- application;
- build;
- architecture;
- sana yoki semantic version
ni ko‘rsatishi mumkin.
Image immutable identifikator bilan deploy qilinadi. Bir xil nom ostidagi mazmun almashtirilmaydi.
Packer va Terraform
Packer image yaratadi.
Terraform shu image’dan virtual mashina yoki boshqa infratuzilma yaratadi.
Jarayon:
Packer → image ID → Terraform → instance
Bu vazifalarni ajratish build va deploymentni aniq qiladi.
Security
Image pipeline yuqori huquqli cloud credential ishlatishi mumkin.
Himoya:
- minimal IAM;
- temporary credential;
- isolated build network;
- signed artifact;
- vulnerability scan;
- provenance;
- log redaction.
Build worker ham supply-chain boundary hisoblanadi.
Parallel build
Bir nechta platforma image’lari parallel yaratilishi mumkin. Provisioning tashqi package repository yoki umumiy temporary resource’ga tayanadigan bo‘lsa rate limit va nom collision hisobga olinadi.
Image promotion
Build qilingan image avval test account yoki regionda tekshiriladi. Xuddi shu immutable image ID yoki tasdiqlangan nusxa production accountlarga ko‘chiriladi. Production uchun boshqatdan provisioning qilish test qilingan artifactni o‘zgartiradi.
Deprecation
Eski image’dan yangi instance yaratish taqiqlanishi mumkin, ammo mavjud instance’lar darhol o‘chirilmaydi. Deprecation va deletion alohida lifecycle bosqichlaridir.
Image lineage
Application image qaysi golden image versiyasidan yaratilgani metadata’da saqlanadi. Base image’da zaiflik topilsa undan kelib chiqqan barcha child image va instance’lar aniqlanadi.
Build logi
Har provisioning bosqichi, image ID va cleanup natijasi saqlanadi. Maxfiy variable logda mask qilinadi.
Bog‘liq tushunchalar
Machine image, Golden image, Immutable infrastructure, Builder, Provisioner, Artifact, Terraform, Image pipeline, Base image, Infrastructure as Code