Bosh sahifa Wiki Puppet

Puppet

Puppetserver va tizim konfiguratsiyasini deklarativ kod orqali boshqaradigan configuration management platformasi. U hostlarning joriy holatini katalogdagi kerakli holat bilan solishtirib, farqlarni tuzatadi.

Puppet ayniqsa ko‘p sonli uzoq yashaydigan serverlarda package, service, file, user va boshqa resurslarni izchil boshqarish uchun ishlatiladi.

Deklarativ konfiguratsiya

Puppet konfiguratsiyasi “qaysi buyruqlar ketma-ket bajarilsin”dan ko‘ra “resurs qaysi holatda bo‘lsin”ni ifodalaydi.

Masalan:

package o‘rnatilgan
config fayl ma’lum mazmunda
service yoqilgan va ishlayapti

Puppet dependency asosida amallar tartibini aniqlaydi.

Resource

Puppet boshqaruvining asosiy birligi resource.

Keng tarqalgan resurslar:

Har resource type, title va attributlarga ega.

Catalog

Node uchun kerakli barcha resurslar va dependencylar catalogga birlashtiriladi.

Catalog:

  • qaysi resource;
  • qaysi holat;
  • qaysi tartib;
  • qaysi relationship

kerakligini ko‘rsatadi.

Agent catalogni qo‘llab, report qaytaradi.

Agent va server modeli

Klassik Puppet arxitekturasida:

Agent belgilangan intervalda tizimni kerakli holatga qaytaradi.

Agentless yoki apply rejimi

Puppet konfiguratsiyasi local apply rejimida ham ishlatilishi mumkin.

Bu:

uchun qulay.

Biroq central reporting va policy boshqaruvi alohida tashkil qilinadi.

Manifest

Puppet tilida yozilgan konfiguratsiya manifest deb ataladi.

Manifest:

ni belgilaydi.

Manifestlar version control’da saqlanadi va code review’dan o‘tadi.

Class

Class bog‘liq resurslarni bir mantiqiy komponentga birlashtiradi.

Masalan, web server classi:

ni boshqarishi mumkin.

Parameterlar orqali port, worker soni va environment moslashtiriladi.

Module

Module manifest, template, file va boshqa metadata’ni standart tuzilishda jamlaydi.

Module:

uchun package vazifasini bajaradi.

Tashqi module ishlatilganda source va versiya nazorat qilinadi.

Fact

Puppet target node haqida factlar yig‘adi.

Misollar:

Catalog factlar asosida node’ga moslashtiriladi.

Custom fact ham yozilishi mumkin.

Hiera

Hiera configuration data’ni Puppet code’dan ajratishga yordam beradi.

Ma’lumot hierarchy bo‘yicha qidiriladi:

Bu bir xil module’ni turli environmentda boshqa qiymatlar bilan ishlatishga imkon beradi.

Idempotency

Resource allaqachon kerakli holatda bo‘lsa Puppet uni o‘zgartirmaydi.

Masalan:

Agent qayta-qayta ishlasa ham keraksiz side effect kamayadi.

exec resource noto‘g‘ri yozilsa har safar command bajarilishi mumkin. Guard shartlari kerak.

Relationship

Resource’lar orasida tartib va notification belgilanadi.

Masalan:

config fayl o‘zgarsa service restart
package service’dan oldin o‘rnatilsin

Dependency graph cycle hosil qilsa catalog compile qilinmasligi mumkin.

Environment

Puppet environment alohida code va module versiyalarini ajratishi mumkin.

Masalan:

  • development;
  • staging;
  • production.

Agent qaysi environment catalogini olishiga configuration orqali qaror qilinadi.

Report

Har agent run natijasi reportda saqlanadi.

Unda:

bo‘lishi mumkin.

Report compliance va driftni kuzatishga yordam beradi.

Drift

Administrator hostni qo‘lda o‘zgartirsa, keyingi agent run deklarativ holatni qayta tiklashi mumkin.

Bu driftni kamaytiradi.

Qo‘lda emergency o‘zgarish keyin Puppet code’ga kiritilmasa yo‘qolishi mumkin.

Certificate

Agent va server o‘zaro TLS certificate orqali autentifikatsiya qilishi mumkin.

Yangi node certificate request yuboradi va tasdiqlanadi.

Noto‘g‘ri certificate approval begona node’ga catalog yoki ma’lumot olish imkonini berishi mumkin.

Testing

Puppet code uchun:

ishlatiladi.

Faqat manifest parse bo‘lishi resource’lar real OSda to‘g‘ri ishlashini kafolatlamaydi.

Custom resource type

Standart resource yetarli bo‘lmasa custom type va provider yozilishi mumkin. Type kerakli state modelini, provider esa ma’lum platformadagi amallarni bajaradi. Bu oddiy exec buyruqlaridan ko‘ra idempotency va reportingni yaxshilaydi.

Noop rejimi

Noop agent qaysi resurslar o‘zgarishini ko‘rsatadi, ammo ularni amalda o‘zgartirmaydi. Yangi policy productionga chiqishidan oldin drift va kutilmagan restartlar baholanadi.

Code deployment

Puppet serverdagi environment code’i nazoratli pipeline orqali yangilanadi. Module dependencylari lock qilinadi, catalog compile testlari bajariladi va keyin agentlar yangi code versionini oladi.

Node classification

Qaysi class va parameter node’ga tegishli ekanini classifier belgilaydi. Classification hostnamega qattiq bog‘lanmasdan role, environment va trusted metadata asosida tuzilishi mumkin.

Compliance

Puppet reportlari kerakli package, file permission va service holatini ko‘rsatadi. Compliance nazorati faqat “agent ishladi”ga emas, muhim resource’larning desired state’ga mosligiga tayanadi.

Maintenance rejimi

Katta o‘zgarishda agent vaqtincha no-op holatga o‘tkazilishi mumkin. Bu davr aniq muddat, owner va keyingi convergence rejasi bilan boshqariladi.

Run interval

Agent intervali drift qanchalik tez tuzatilishini belgilaydi. Juda qisqa interval server va control plane yukini oshiradi, juda uzun interval esa qo‘lda o‘zgarishlarni uzoq vaqt qoldiradi.

Bog‘liq tushunchalar

Configuration management, Puppet agent, Catalog, Manifest, Resource, Module, Fact, Hiera, Idempotency, Drift