chef-soloの簡単な使い方

 chef-soloの簡単な使い方

Groovenauts Public Hands-on 02 - Chef+serverspecで発表した内容です。

Aa777465acd82d13333678f3fc082c59?s=128

Spring_MT

June 07, 2013
Tweet

Transcript

  1. chef-soloΛ࢖ͬͯ ؆୯ϓϩϏδϣχϯά ΫοΩϯά @Spring_MT

  2. Profile twitter : @Spring_MT Company : 10xLab Engineer

  3. chefͱ͸? Ruby੡ͷγεςϜ؅ཧπʔϧ γεςϜߏஙͷࣗಈԽ ӡ༻࡞ۀͷࣗಈԽ

  4. ᷿Ͱ͸ ͜͏͍ΘΕͯ ·͕͢ɻɻɻ

  5. None
  6. ࣗಈԽ͢Δ΄Ͳ αʔόʔ ࣋ͬͯͶ͑Α

  7. ͦΕͰ΋ chefΛ ࢖͏ͷʁ

  8. chefͷ͍͍ͱ͜Ζ ઃܭॻ(cookbook)Λ࢒ͤΔ(ൿ఻ͷλ ϨԽΛ๷ࢭ) ઃܭॻ͕ϓϩάϥϚϒϧʹॻ͚Δ

  9. puppet͸ʁ ผʹͲͬͪͰ΋ྑ͍Ͱ͢ ޷͖ͳํΛ͓࢖͍Լ͍͞

  10. ͱɺ ͍ͬͯΈͨ΋ͷͷ

  11. chefͱpuppet ಺෦DSL(chef) or ֎෦DSL(puppet) ͷҧ͍ chefͷ৔߹಺෦DSLͳͷͰɺதʹ rubyͷίʔυΛͦͷ··ॻ͚Δ

  12. chefͷཁૉ

  13. Chef-Server API Chef-Solr Indexer RabbitMQ Chef-Server WebUI Knife CouchDB Solr

    Ruby CouchDB (chef 11ͩͱ PostgreSQL?) RabbitMQ Solr Erlang ϛυϧ΢ΣΞ Chef-Client client
  14. chefͷߏ੒ཁૉ chef-server ৘ใΛू໿ͯ͠؅ཧ͢Δαʔόϓϩηεɻ֤ Client ͱ͸ JSON/REST ελΠϧͰ ௨৴͢Δɻ WebUI chef-server

    ͷ Web ΠϯλʔϑΣʔεɻ chef-client ઃఆΛద༻͢Δ֤ϚγϯʹΠϯετʔϧ͞ΕΔσʔϞϯɻఆظతʹ chef-server ΛϙʔϦϯάͯ͠ɺͦͷ಺༰ʹैͬͯϨγϐΛ࣮ߦ͢Δɻ knife chef-server ʹొ࿥͞Ε͍ͯΔ৘ใͷऔಘɾมߋΛߦ͏πʔϧɻ chef-solo αʔόແ͠ͰϨγϐΛ࣮ߦ͢Δπʔϧɻ
  15. None
  16. େ͖͍ɻɻɻɻ

  17. chef chefΛ”Full Stack”Ͱ࢖͏ͷ͸ίε τେ͖͍(؅ཧɺӡ༻ͱ͔Ͱ) chefͷ؀ڥ࡞Δ͚ͩͰɺ݁ߏαʔ όʔ΋࢖͏͠ɺਓࡐ΋͍Δ

  18. None
  19. chef-solo chef-solo͸ࣗಈԽͷ෦෼Λશ͘࢖ Θͳ͍ ઃܭॻ(cookbook)ͷ෦෼ͷΈ࢖͏

  20. 10xlabͰͷ chef

  21. ALL AWS! Ruby(1.9.3), Fluentd and Chef in all servers 10xlab

    Infra
  22. public subnet Co-Work subnet utility APP redis worker subnet storage

    subnet fluentd deliver worker proxy varnish + sinatra Watch subnet network Gateway NAT SSLͷม׵ DB(MySQL on EC2)
  23. 10xlabͷํ਑ chefશ෦࢖͏ʹ͸Πϯϑϥͷن໛ ͸খ͍͞ chef؅ཧίετ >> chefͷϝϦοτ ࣗಈԽ͸ͦ͜·Ͱඞཁͳ͍ ઃܭॻ͸࢒͓͖͍ͯͨ͠

  24. cookbook ઃܭॻ͕ೖ͍ͬͯΔ جຊతʹϛυϧ΢ΣΞ୯ҐͰ࡞Δ 10xlabͰ͸vpcͷαϒωοτຖʹ cookbookͷdirΛ෼͚͍ͯΔ

  25. cookbookͷॻ͖ํ 10xlabͷ৔߹ ίʔυΛ෼ࢄͤ͞ͳ͍ OSͱ͔ͷ৚݅෼ذͱ͔͸ߟ͑ͣʹ γϯϓϧʹ·ͱΊΔ

  26. ઃܭॻ(cookbook)͸ ޙ͔Βݟͯ΋ ෼͔ΔΑ͏ʹ ࢒͠·͠ΐ͏

  27. cookbook hogehoge/ README.md attributes : cookbookͰ࢖͏ڞ௨ͷม਺Λ֨ೲ definitions : files :

    ୯ʹίϐʔͯ͠࢖͏ͨΊͷϑΝΠϧΛஔ͘ libraries : metadata.rb : Cookbook ͷઆ໌ͱ͔ͷϝλ৘ใ providers : recipes : ॲཧखॱΛهࡌ resources : templates : confϑΝΠϧΛ֨ೲ
  28. cookbook recipesͱtemplatesʹूதͤ͞Δ Ұ෦ɺڞ௨ͷม਺Ληοτ͢Δ࣌ ʹattributesΛ࢖͏

  29. ࣮ࡍͷrecipe

  30. chef-solo ୯Ұαʔόʔ޲͚ ෳ਺αʔόʔΛ؅ཧͰ͖ͳ͍

  31. cap_chef chef-soloΛ֤αʔόʔͰಈ͔͢ πʔϧ capistranoͱͷ૊Έ߹Θͤ @fujiwaraͷπʔϧΛͪΐͬͱม͑ ͚ͨͩ knife-solo͕͋Δ͚Ͳɻɻɻɻ

  32. cap_chefͷ໾ׂ roleʹΑͬͯαʔόʔຖͷidentiy Λൃݱͤ͞Δ ϛυϧ΢ΣΞͷΠϯετʔϧͱ ઃఆ

  33. cap_chef ഑෍ݩͰchef soleΛ࢖͏ͨΊͷઃఆ ϑΝΠϧ(solo.rb)Λ࡞੒ cookbooksΛಉظ ഑෍ઌͰϊʔυͷଐੑΛॻ͍ͨself.json ࡞੒ ഑෍ઌͰchef-soloΛୟ͘

  34. cookbookͷಉظ rsyncͰಉظ

  35. None
  36. αʔόʔͷsetup

  37. खॱ େ͖͘2ͭ chefΛೖΕΔ·Ͱ chef͕ೖͬͨ͋ͱ

  38. chefΛೖΕΔ·Ͱ ݁ߏ೰·͍͠ ͜Ε͸֤ʑͳΜͱ͔͢Δ(͠ͳ͍ͱ Ͳ͏͠Α͏΋ͳ͍)

  39. ͨͱ͑͹ system rubyΛ࢖ͬͯ଎߈ͰchefΛ ͍ΕΔ(ଟ෼1.8.7͕ଟ͍) kickstartͱ͔Ͱ͍Ε͓ͯ͘

  40. 10xlabͰ͸ AWS EC2ͷuser_dataΛ࢖ͬͯ ৭ʑηοτΞοϓ͢ΔதͰchefΛ ͍Ε͍ͯΔ

  41. user_data EC2Λ্ཱͪ͛ͨ࣌ʹ্ཱͪ͛௚ ޙʹ૸ΒͤΔεΫϦϓτΛొ࿥Ͱ ͖Δ࢓૊Έ

  42. user_dataͰ ηοτΞοϓྫ * Ϣʔβʔ௥Ճ * sshઃఆ * rootύεϫʔυͷઃఆ * ৭ʑyum

    install . . . . . . * rbenvͰruby Πϯετʔϧ . . . . . . * gem install chef
  43. chef͕ೖͬͨΒ cap_chefΛ࢖ͬͯඞཁͳϛυϧ ΢ΣΞΛΠϯετʔϧ