Run list — Chef Infra tizimida tugunga qaysi role va recipe lar qanday tartibda qo‘llanishini ko‘rsatadigan tartiblangan ro‘yxatdir. Chef Infra Client serverdan tugun obyektini oladi, run listni kengaytiradi va undagi recipe lar asosida resurslar to‘plamini kompilyatsiya hamda bajaradi.
Tarkibi
Run list elementlari odatda recipe yoki role ko‘rinishida bo‘ladi. Recipe cookbook ichidagi deklarativ resurslar kodidir. Role esa bir nechta recipe, atribut va muhitga oid bo‘lmagan umumiy vazifani guruhlaydi. Masalan, web server roli baza operatsion tizim recipe si, veb paketlari va monitoring recipe sini birlashtirishi mumkin.
Recipe aniq cookbook nomi va kerak bo‘lsa recipe nomi bilan ko‘rsatiladi. Cookbookning default recipe si qisqa shaklda chaqirilishi mumkin. Run list tartibi ahamiyatli, chunki recipe kodlari compile bosqichida ketma-ket yuklanadi va resurs collectionga qo‘shiladi.
Compile va converge bosqichlari
Chef ishga tushganda avval tugun ma’lumoti, policy va cookbooklarni oladi. Compile bosqichida run list kengaytiriladi, recipe kodlari baholanadi va resurslar collectioni tuziladi. Converge bosqichida resurslar kerakli holatga keltiriladi. Odatda resurslar collectiondagi tartibda bajariladi, notification esa kechiktirilgan yoki darhol amalni ishga tushirishi mumkin.
Recipe faylidagi Ruby kodi compile vaqtida bajarilishi, resource action esa converge vaqtida ishlashi mumkin. Bu farqni bilmaslik hali yaratilmagan faylni compile vaqtida o‘qish kabi xatolarga sabab bo‘ladi. Lazy evaluation va custom resource kerakli qiymatni to‘g‘ri bosqichda hisoblashga yordam beradi.
Tartib va bog‘liqlik
Run list tartibini yashirin bog‘liqlikni boshqarish vositasi sifatida haddan tashqari ishlatish mo‘rt konfiguratsiya yaratadi. Bir recipe boshqa recipe avval chaqirilganini taxmin qilsa, u mustaqil qayta ishlatilmaydi. Bog‘liq cookbook metadata faylida e’lon qilinadi, kerakli recipe include_recipe orqali aniq kiritilishi yoki umumiy custom resourcega ajratilishi mumkin.
Bir recipe run list va include orqali qayta chaqirilsa, Chef odatda takror yuklashni boshqaradi, lekin resurs nomlari to‘qnashuvi yoki atributlar tartibi baribir e’tibor talab qiladi. Har recipe aniq vazifa va idempotent resurslardan tashkil topishi kerak.
Role va Policyfile
Klassik Chef Serverda run list node obyektida saqlanishi va knife orqali o‘zgartirilishi mumkin. Role qayta foydalanishni soddalashtiradi, ammo role ichidagi cookbook versiyalarini qotirib qo‘ymaydi. Environment cookbook constraintlari turli tugunlarda yechim farq qilishiga olib kelishi mumkin.
Policyfile run list, cookbook manbalari va yechilgan versiyalarni bitta versiyalanadigan siyosatga birlashtiradi. Policy lock aynan qaysi cookbook versiyasi ishlatilishini qayd etadi. Bu production tugunlari bir xil run list nomi ostida tasodifan turli kod olishining oldini olishga yordam beradi.
Atributlar ta’siri
Run listdagi role va recipe lar node atributlaridan foydalanadi. Chef atributlarida default, normal, override kabi ustuvorlik darajalari mavjud. Bir xil kalit turli cookbook va rolelarda belgilansa, yakuniy qiymat precedence qoidalari bilan hisoblanadi. Tartibga tayangan holda qiymatni taxmin qilish o‘rniga atribut manbasi va ustuvorligi hujjatlashtiriladi.
Normal atributlar node obyektida saqlanib qolishi mumkin, shu bois vaqtinchalik qiymat keyingi runlarga kutilmaganda ta’sir etadi. Policy va cookbook defaultlari boshqariladigan, takrorlanuvchi konfiguratsiya uchun ko‘proq mos keladi.
O‘zgartirish va tekshirish
Run list o‘zgarishi ko‘plab resurslarni qo‘shishi yoki olib tashlashi mumkin. Avval test tuguni yoki audit muhitida converge bajariladi. Chef Client reporti qaysi resurs yangilangani va xato qayerda yuz berganini ko‘rsatadi. Recipe ni run listdan olib tashlash u ilgari yaratgan paket yoki faylni avtomatik o‘chirmaydi; kerak bo‘lsa alohida cleanup siyosati yoziladi.
Bog‘liq tushunchalar
Chef Infra, Recipe, Cookbook, Role, Policyfile, Converge, Idempotence