Manifest — konfiguratsiyani boshqarish tizimida infratuzilmaning kerakli holatini deklarativ tarzda tavsiflaydigan manba faylidir. Puppetda manifestlar odatda .pp kengaytmali bo‘lib, resurslar, sinflar, parametrlar, shartlar va ular orasidagi bog‘lanishlarni ifodalaydi. Manifest bajariladigan yakuniy katalog emas; u katalog kompilyatsiyasi uchun kirish manbasidir.
Resurs deklaratsiyasi
Manifestning asosiy birligi resource declaration hisoblanadi. Resurs turi tizimdagi boshqariladigan obyektni, title esa uning identifikatorini bildiradi. Atributlar kerakli holatni belgilaydi. Masalan, file resursi yo‘l, egasi, ruxsatlari va mazmunini; package resursi esa paket mavjud yoki yo‘qligini ifodalaydi.
Deklarativ matn “avval shu buyruqni, keyin boshqasini bajar” degan skriptga teng emas. Puppet provider orqali joriy holatni o‘qiydi va farqni bartaraf etadi. Zarur tartib require, before, notify va subscribe kabi munosabatlar bilan ochiq ko‘rsatiladi.
Sinf va modullar
Takroriy resurslar class ichiga guruhlanadi. Parametrli class turli tugunlar uchun bir xil mantiqni mos qiymatlar bilan ishlatishga imkon beradi. Modullar manifestlar, shablonlar, statik fayllar va yordamchi kodni mavzu bo‘yicha paketlaydi. Odatdagi modulda asosiy class init.pp faylida joylashadi, lekin nomlangan qo‘shimcha classlar alohida manifestlarda bo‘lishi mumkin.
Include classni katalogga kiritadi va uni bir necha joydan chaqirish xavfsiz bo‘lishi ko‘zda tutiladi. Resource-like class declaration parametrlarni bevosita beradi, ammo bir classni turli parametr bilan qayta e’lon qilish mojaro keltiradi. Rol va profil usuli texnologik sozlamani biznes tugun rolidan ajratishga yordam beradi.
Ma’lumot va mantiq chegarasi
Server porti, paket versiyasi yoki muhitga xos manzil kabi qiymatlarni manifest ichida ko‘paytirish boshqarishni qiyinlashtiradi. Hiera ma’lumot qatlamidan parametr izlash kodni environment va tugun qiymatlaridan ajratadi. Manifest resurslar munosabatini, ma’lumot fayli esa o‘zgaruvchi qiymatlarni saqlashi mumkin.
Shartli ifoda facts asosida operatsion tizim oilasi yoki arxitekturaga mos resurs tanlaydi. Biroq har farqni katta shartlar zanjiriga aylantirish o‘qishni qiyinlashtiradi. Data mapping va alohida provider mavjud bo‘lsa, umumiy deklaratsiya soddaroq qoladi.
Shablon va fayl mazmuni
Konfiguratsiya fayli inline matn, moduldagi statik fayl yoki template orqali yaratilishi mumkin. Shablon parametrlar asosida matn hosil qiladi. Yakuniy mazmun katalogga kirishi mumkinligi sabab sirlarni oddiy shablonga qo‘shishdan oldin saqlash va report siyosati baholanadi.
Fayl yangilanishi xizmatni qayta yuklashni talab etsa, file resursi service resursiga notify bog‘lanishi bilan ulanadi. Shunda refresh faqat mazmun haqiqatan o‘zgarganda yuboriladi. Har agent ishga tushganda xizmatni shartsiz qayta boshlash uzilish va idempotentlik muammosini keltiradi.
Tekshirish va yetkazish
Manifest avval sintaksis parseri va linter bilan tekshiriladi. Unit darajadagi katalog testi berilgan facts va parametrlar uchun kerakli resurslar hosil bo‘lishini tekshiradi. Integratsiya sinovi esa vaqtinchalik tugunda katalogni qo‘llab, real provider xatti-harakatini kuzatadi.
Versiya nazorati manifest o‘zgarishining muallifi va tarixini saqlaydi. Environmentlar yangi kodni test va production tugunlariga bosqichma-bosqich tarqatadi. Manifest sintaktik to‘g‘ri bo‘lsa ham noto‘g‘ri ruxsat yoki xizmat restarti xavfli bo‘lishi mumkin; kod ko‘rigi deklaratsiyaning amaliy ta’sirini ham baholaydi.
Manifest nomlash va formatlash qoidalari linter orqali bir xil saqlanadi. Aniq type va parametr tekshiruvi noto‘g‘ri qiymatni katalog kompilyatsiyasi paytida erta aniqlaydi. Deprecation ogohlantirishlari modul yoki til versiyasini yangilashdan oldin tuzatiladi.
Bog‘liq tushunchalar
Puppet, Catalog, Resource, Module, Hiera, Template, Configuration management