Bosh sahifa Wiki Packer

Packer

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.

Builder:

  • 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:

tekshiriladi.

“Eng yangi” nomga tayanish reproducibilityni kamaytiradi. Aniq version yoki immutable identifikator ishlatiladi.

Provisioner

Provisioner image ichidagi tizimni tayyorlaydi.

Usullar:

Provisioning:

Golden image

Tashkilot tasdiqlangan standart image yaratishi mumkin.

Golden image tarkibida:

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:

  1. yangi image build qilinadi;
  2. testdan o‘tadi;
  3. yangi instance’lar yaratiladi;
  4. traffic ko‘chiriladi;
  5. 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:

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

Image nomi va metadata:

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:

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