AMI, OS Πϝʔδͷ࡞ʹ͍ͭ ͯ • (ൃදͰ͕࣌ؒΓͣɺলུ͠·ͨ͠) • Έ: AMI ͷϝϯςφϯε • ݩʑ AMI طଘͷύϒϦοΫͳ AMI Λϕʔε ʹɺख࡞ۀͰΧελϚΠζͯ͠࡞ΒΕ͍ͯͨ (ͣ) • OS ͷΞοϓσʔτʹਵ͠ͳ͍ͱԽͯ͠ ͠·͏ • Xen ༻ͷ OS Πϝʔδʹ͍ͭͯಉ༷ͷ
ެࣜͱ΄΅ಉ͡ AMI Λ࡞Δ • bootstrap-vz (https://github.com/andsens/bootstrap-vz) • Debian ͷެࣜ AMI ࡞ʹΘΕ͍ͯΔπʔϧ • ࡞͢Δ AMI ͷߏΛ yaml ઃఆϑΝΠϧ (manifest) Ͱهड़ • manifest ΛΧελϚΠζ͢Δ͜ͱͰɺެࣜ AMI ͷߏΛϕʔεʹΧελ ϚΠζͨ͠ AMI Λखܰʹ࡞ΕΔ • AMI Ҏ֎ͷΫϥυ raw σΟεΫΠϝʔδʹରԠ • Debian ͷϝϯςφʹΑͬͯܧଓతʹϝϯςφϯε͞Ε͍ͯΔ • ॳظ AMI (initial AMI ͱݺͿ) bootstrap-vz Ͱ࡞Δ͜ͱʹͨ͠ • DC ͷ domU OS Πϝʔδͷ࡞ʹ bootstrap-vz Λ༻͠ɺ DC ͱ EC2 Ͱಉ͡ߏͷΠϝʔδΛ༻ • ͦΕͧΕࣗಈͰ࡞͢ΔεΫϦϓτΛॻ͍ͨɻCI πʔϧͰఆظతʹߋ৽… ͱ͍͏ͷ·ͩ͜Ε͔Β
Chef ద༻ࡁΈ AMI • packer Λ༻͍ɺಛఆͷ AMI Λϕʔεʹ Chef ద༻ࡁΈͷ AMI Λ࡞ • packer ઃఆΛੜͯ͠ packer Λ࣮ߦ͢ΔϥούʔεΫϦ ϓτ • ͯͳͷҰൠϗετʹڞ௨ͷઃఆΛ·ͱΊͨ “base ϩʔϧ” ద ༻ࡁΈͷ AMI Λ࡞ΓɺҰൠͷΠϯελϯε͔ͦ͜Βىಈ͢ Δ͜ͱͰηοτΞοϓ࣌ؒΛॖ • Πϯελϯε࡞࣌ʹ Chef Λద༻͢Δ͜ͱͰɺႈੑΛར ༻ͯ͠ΠϯελϯεͷઃఆΛ࠷৽Խ • chef-repo ͷߋ৽ͷͨͼʹຖճ AMI Λ࡞Γͳ͓͢ͷඇޮ
ݸผϩʔϧͷ AMI ࡞ • લทͷ AMI ࡞εΫϦϓτͰɺಛఆϩʔϧ༻ʹηοτΞοϓ͞Εͨ AMI (role AMI) ࡞Ͱ͖Δ • ΰʔϧσϯΠϝʔδతͳ • Πϯελϯε࡞࣌ʹϩʔϧΛࢦఆ͢ΔͱɺϚον͢Δ AMI Λ୳ ͠ɺଘࡏ͢Εͦͷ AMI Λͬͯىಈ͢ΔΈʹͳ͍ͬͯΔ • ର AMI ͕ແ͚Ε base ʹϑΥʔϧόοΫ • Ͱɺ·ͩ͋·ΓΘΕ͍ͯͳ͍ initial AMI bootstrap-vz base AMI packer role AMI (app-1) role AMI (app-2) packer