Groovenauts Public Hands-on 02 - Chef+serverspecで発表した内容です。
chef-soloΛͬͯ؆୯ϓϩϏδϣχϯάΫοΩϯά@Spring_MT
View Slide
Profiletwitter : @Spring_MTCompany : 10xLabEngineer
chefͱ?RubyͷγεςϜཧπʔϧγεςϜߏஙͷࣗಈԽӡ༻࡞ۀͷࣗಈԽ
᷿Ͱ͜͏͍ΘΕͯ·͕͢ɻɻɻ
ࣗಈԽ͢Δ΄Ͳαʔόʔ࣋ͬͯͶ͑Α
ͦΕͰchefΛ͏ͷʁ
chefͷ͍͍ͱ͜Ζઃܭॻ(cookbook)ΛͤΔ(ൿͷλϨԽΛࢭ)ઃܭॻ͕ϓϩάϥϚϒϧʹॻ͚Δ
puppetʁผʹͲͬͪͰྑ͍Ͱ͖͢ͳํΛ͓͍Լ͍͞
ͱɺ͍ͬͯΈͨͷͷ
chefͱpuppet෦DSL(chef) or ֎෦DSL(puppet)ͷҧ͍chefͷ߹෦DSLͳͷͰɺதʹrubyͷίʔυΛͦͷ··ॻ͚Δ
chefͷཁૉ
Chef-ServerAPIChef-SolrIndexerRabbitMQChef-ServerWebUIKnifeCouchDB SolrRubyCouchDB(chef 11ͩͱPostgreSQL?)RabbitMQSolrErlangϛυϧΣΞChef-Clientclient
chefͷߏཁૉchef-serverใΛूͯ͠ཧ͢Δαʔόϓϩηεɻ֤ Client ͱ JSON/REST ελΠϧͰ௨৴͢ΔɻWebUIchef-server ͷ Web ΠϯλʔϑΣʔεɻchef-clientઃఆΛద༻͢Δ֤ϚγϯʹΠϯετʔϧ͞ΕΔσʔϞϯɻఆظతʹ chef-serverΛϙʔϦϯάͯ͠ɺͦͷ༰ʹैͬͯϨγϐΛ࣮ߦ͢Δɻknifechef-server ʹొ͞Ε͍ͯΔใͷऔಘɾมߋΛߦ͏πʔϧɻchef-soloαʔόແ͠ͰϨγϐΛ࣮ߦ͢Δπʔϧɻ
େ͖͍ɻɻɻɻ
chefchefΛ”Full Stack”Ͱ͏ͷίετେ͖͍(ཧɺӡ༻ͱ͔Ͱ)chefͷڥ࡞Δ͚ͩͰɺ݁ߏαʔόʔ͏͠ɺਓࡐ͍Δ
chef-solochef-soloࣗಈԽͷ෦Λશ͘Θͳ͍ઃܭॻ(cookbook)ͷ෦ͷΈ͏
10xlabͰͷchef
ALL AWS!Ruby(1.9.3), Fluentdand Chef in all servers10xlab Infra
publicsubnetCo-WorksubnetutilityAPPredisworkersubnetstoragesubnetfluentddeliverworkerproxyvarnish+sinatraWatchsubnetnetworkGateway NATSSLͷมDB(MySQL on EC2)
10xlabͷํchefશ෦͏ʹΠϯϑϥͷنখ͍͞chefཧίετ >> chefͷϝϦοτࣗಈԽͦ͜·Ͱඞཁͳ͍ઃܭॻ͓͖͍ͯͨ͠
cookbookઃܭॻ͕ೖ͍ͬͯΔجຊతʹϛυϧΣΞ୯ҐͰ࡞Δ10xlabͰvpcͷαϒωοτຖʹcookbookͷdirΛ͚͍ͯΔ
cookbookͷॻ͖ํ10xlabͷ߹ίʔυΛࢄͤ͞ͳ͍OSͱ͔ͷ݅ذͱ͔ߟ͑ͣʹγϯϓϧʹ·ͱΊΔ
ઃܭॻ(cookbook)ޙ͔Βݟ͔ͯΔΑ͏ʹ͠·͠ΐ͏
cookbookhogehoge/README.mdattributes : cookbookͰ͏ڞ௨ͷมΛ֨ೲdefinitions :files : ୯ʹίϐʔͯ͠͏ͨΊͷϑΝΠϧΛஔ͘libraries :metadata.rb : Cookbook ͷઆ໌ͱ͔ͷϝλใproviders :recipes : ॲཧखॱΛهࡌresources :templates : confϑΝΠϧΛ֨ೲ
cookbookrecipesͱtemplatesʹूதͤ͞ΔҰ෦ɺڞ௨ͷมΛηοτ͢Δ࣌ʹattributesΛ͏
࣮ࡍͷrecipe
chef-solo୯Ұαʔόʔ͚ෳαʔόʔΛཧͰ͖ͳ͍
cap_chefchef-soloΛ֤αʔόʔͰಈ͔͢πʔϧcapistranoͱͷΈ߹Θͤ@fujiwaraͷπʔϧΛͪΐͬͱม͚͑ͨͩknife-solo͕͋Δ͚Ͳɻɻɻɻ
cap_chefͷׂroleʹΑͬͯαʔόʔຖͷidentiyΛൃݱͤ͞ΔϛυϧΣΞͷΠϯετʔϧͱઃఆ
cap_chefݩͰchef soleΛ͏ͨΊͷઃఆϑΝΠϧ(solo.rb)Λ࡞cookbooksΛಉظઌͰϊʔυͷଐੑΛॻ͍ͨself.json࡞ઌͰchef-soloΛୟ͘
cookbookͷಉظrsyncͰಉظ
αʔόʔͷsetup
खॱେ͖͘2ͭchefΛೖΕΔ·Ͱchef͕ೖͬͨ͋ͱ
chefΛೖΕΔ·Ͱ݁ߏ·͍͜͠Ε֤ʑͳΜͱ͔͢Δ(͠ͳ͍ͱͲ͏͠Α͏ͳ͍)
ͨͱ͑system rubyΛͬͯ߈ͰchefΛ͍ΕΔ(ଟ1.8.7͕ଟ͍)kickstartͱ͔Ͱ͍Ε͓ͯ͘
10xlabͰAWS EC2ͷuser_dataΛͬͯ৭ʑηοτΞοϓ͢ΔதͰchefΛ͍Ε͍ͯΔ
user_dataEC2Λ্ཱͪ͛ͨ࣌ʹ্ཱͪ͛ޙʹΒͤΔεΫϦϓτΛొͰ͖ΔΈ
user_dataͰηοτΞοϓྫ* ϢʔβʔՃ* sshઃఆ* rootύεϫʔυͷઃఆ* ৭ʑyum install. . . . . .* rbenvͰruby Πϯετʔϧ. . . . . .* gem install chef
chef͕ೖͬͨΒcap_chefΛͬͯඞཁͳϛυϧΣΞΛΠϯετʔϧ