Upgrade to Pro — share decks privately, control downloads, hide ads and more …

chef-soloの簡単な使い方

 chef-soloの簡単な使い方

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

Spring_MT

June 07, 2013
Tweet

More Decks by Spring_MT

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. chefͷཁૉ

    View Slide

  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

    View Slide

  14. chefͷߏ੒ཁૉ
    chef-server
    ৘ใΛू໿ͯ͠؅ཧ͢Δαʔόϓϩηεɻ֤ Client ͱ͸ JSON/REST ελΠϧͰ
    ௨৴͢Δɻ
    WebUI
    chef-server ͷ Web ΠϯλʔϑΣʔεɻ
    chef-client
    ઃఆΛద༻͢Δ֤ϚγϯʹΠϯετʔϧ͞ΕΔσʔϞϯɻఆظతʹ chef-server
    ΛϙʔϦϯάͯ͠ɺͦͷ಺༰ʹैͬͯϨγϐΛ࣮ߦ͢Δɻ
    knife
    chef-server ʹొ࿥͞Ε͍ͯΔ৘ใͷऔಘɾมߋΛߦ͏πʔϧɻ
    chef-solo
    αʔόແ͠ͰϨγϐΛ࣮ߦ͢Δπʔϧɻ

    View Slide

  15. View Slide

  16. େ͖͍ɻɻɻɻ

    View Slide

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

    View Slide

  18. View Slide

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

    View Slide

  20. 10xlabͰͷ
    chef

    View Slide

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

    View Slide

  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)

    View Slide

  23. 10xlabͷํ਑
    chefશ෦࢖͏ʹ͸Πϯϑϥͷن໛
    ͸খ͍͞
    chef؅ཧίετ >> chefͷϝϦοτ
    ࣗಈԽ͸ͦ͜·Ͱඞཁͳ͍
    ઃܭॻ͸࢒͓͖͍ͯͨ͠

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. cookbook
    hogehoge/
    README.md
    attributes : cookbookͰ࢖͏ڞ௨ͷม਺Λ֨ೲ
    definitions :
    files : ୯ʹίϐʔͯ͠࢖͏ͨΊͷϑΝΠϧΛஔ͘
    libraries :
    metadata.rb : Cookbook ͷઆ໌ͱ͔ͷϝλ৘ใ
    providers :
    recipes : ॲཧखॱΛهࡌ
    resources :
    templates : confϑΝΠϧΛ֨ೲ

    View Slide

  28. cookbook
    recipesͱtemplatesʹूதͤ͞Δ
    Ұ෦ɺڞ௨ͷม਺Ληοτ͢Δ࣌
    ʹattributesΛ࢖͏

    View Slide

  29. ࣮ࡍͷrecipe

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  34. cookbookͷಉظ
    rsyncͰಉظ

    View Slide

  35. View Slide

  36. αʔόʔͷsetup

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  42. user_dataͰ
    ηοτΞοϓྫ
    * Ϣʔβʔ௥Ճ
    * sshઃఆ
    * rootύεϫʔυͷઃఆ
    * ৭ʑyum install
    . . . . . .
    * rbenvͰruby Πϯετʔϧ
    . . . . . .
    * gem install chef

    View Slide

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

    View Slide