$30 off During Our Annual Pro Sale. View Details »

DevOpsの今とこれから #init_devops

DevOpsの今とこれから #init_devops

Naoya Ito

July 19, 2013
Tweet

More Decks by Naoya Ito

Other Decks in Technology

Transcript

  1. %FW0QTͷࠓͱ͜Ε͔Β
    /BPZB*UPJOBPZB!HNBJMDPN

    View Slide

  2. l0CBNBGPS"NFSJDBz

    View Slide

  3. View Slide

  4. 0CBNBਞӦͷγεςϜ
    •  Ҏ্ͷlϞμϯͳzΞϓϦέʔγϣϯ
    –  KFLZMM MFTT HJUIVC QZUIPOSVCZ K2VFSZ NPEFSOJ[S
    NVTUBDIF DPEFLJU 1VQQFU
    –  "84਺ઍΠϯελϯε4
    –  ϞόΠϧϑΝʔετɺϨεϙϯγϒσβΠϯ

    View Slide

  5. 0CBNBਞӦͱ%FW0QT
    •  l1VMM3FRVFTUzϕʔε։ൃ
    –  (JUIVC
    •  %FW0QT
    –  l*OGSBTUSBDUVSFBT$PEFz

    View Slide

  6. %FW0QT

    View Slide

  7. %FW0QTͷॳग़
    •  +"MMTQBX1)BNNPOE 'MJDLS 7FMPDJUZ

    View Slide

  8. ͳͥ%FWͱ0QT͕ڠྗग़དྷ͍ͯͳ͔͔ͬͨ
    •  ଐਓੑ͕ൃੜͤ͞Δಛݖ
    –  ࠷ऴ֬ೝऀŋŋŋϨϏϡʔͰϦϦʔεΛࢭΊΔಛݖ
    –  σϓϩΠ୲౰ŋŋŋσϓϩΠ࡞ۀͰϦϦʔεΛࢭΊΔಛݖ
    –  Πϯϑϥ୲౰ŋŋŋෛՙࢼݧͰϦϦʔεΛࢭΊΔಛݖ
    •  ։ൃΛअຐ͢Δଟ͘͸ʮಛݖʯ
    –  ˓˓͞ΜͷνΣοΫ͕௨Βͳ͔ͬͨɺ୲౰ऀ͕͍ͳ͔ͬͨɺม
    ߋͰ͖Δਓ͕͍ͳ͔ͬͨŋŋŋ
    –  ͢΂ͯͷಛݖ͸ࣗͣͱ෗ഊ͢Δ
    •  ୲౰ͷʮؾ෼ʯ΍ɺରਓؔ܎ͷঢ়ଶʹۀ຿ͷਐΊқ͕͞ґଘ

    View Slide

  9. ଐਓੑͷഉআ
    •  ଐਓੑ͕अຐͳΒࣗಈԽͪ͠Ό͑͹͍͍͡Όͳ͍
    (ࠓ೔͸͓΋ʹ͜
    ͜ͷ࿩)

    View Slide

  10. %FW0QTͷ໨ࢦ͢ͱ͜Ζ
    •  ʮϏδωεʹ͓͍ͯࢼߦࡨޡΛଟ਺܁Γฦ͍ͨ͠ʯ
    –  ೔ʹසൟʹϦϦʔε͍ͨ͠
    –  සൟͳϦϦʔεͷ๦͛ʹͳΔ΋ͷΛഉআ͍ͨ͠
    –  ଐਓੑͷഉআˠࣗಈԽ
    –  ܧଓతͳϦϦʔεŋŋŋ$POUJOVT%FMJWFSZ
    ͜ͷͨΊʹDevͱOps͕
    ಉ͡ํ޲Λ޲͖·͠ΐ
    ͏ = DevOps

    View Slide

  11. ΞδϟΠϧ։ൃͱܧଓతσϦόϦʔ
    http://www.ryuzee.com/contents/blog/4241

    View Slide

  12. ܧଓతσϦόϦʔͱ
    *OGSBTUSVDUVSFBT$PEF

    View Slide

  13. $%ͱࣗಈԽ
    •  ܧଓత˓˓
    –  㱺։ൃɾӡ༻ϓϩηεͷՄೳͳݶΓͷࣗಈԽ
    –  ʮσϓϩΠʯͷۤ௧ΛऔΓআ͘
    •  ΠϯϑϥετϥΫνϟΛࣗಈԽ
    –  *BB4ŋŋŋϋʔυ΢ΣΞΛԾ૝Խ͢Δ͜ͱͰzιϑτ΢ΣΞ෦
    ඼zʹ

    View Slide

  14. l*OGSBTUSVDUVSFBT$PEFz
    •  ϓϩάϥϚϒϧͳΠϯϑϥ
    –  7BHSBOU 1VQQFU $IFG
    –  "NB[PO$MPVE'PSNBUJPO "840QTXPSLT

    View Slide

  15. Ծ૝Խͨ͠ͳΒίʔυͰࣗಈԽ

    View Slide

  16. 7BHSBOU
    $  vagrant  init  
    $  vagrant  up  -­‐-­‐provider=aws  

    View Slide

  17. 7BHSBOU

    View Slide

  18. $IFG
    ʮΫϥ΢υͰΠϯϑϥ͕ιϑτ΢ΣΞʹͳͬͨͳΒɺϓϩϏδϣχϯά΋ίʔ
    υͰॻ͚͹͍͍͡Όͳ͍ʯ

    View Slide

  19. $IFGʹΑΔΦʔτϝʔγϣϯ

    View Slide

  20. $IFGJTOPUPOMZࣗಈԽπʔϧ
    •  $IFGγεςϜΛʮ͋Δ΂͖ঢ়ଶʯʹऩଋͤ͞Δϑ
    ϨʔϜϫʔΫ
    –  αʔόʔߏஙΛࣗಈԽ͢Δ໨తͷঢ়ଶʹ͢Δ
    •  ˢ͜Ε͹͔Γʹண໨͕ͪ͠
    –  த్൒୺ͳঢ়ଶͷαʔόʔΛ͋Δ΂͖ঢ়ଶʹ͢Δ
    –  աڈͷ".*εφοϓγϣοτ͔Β࡞ͬͨΠϯελϯεΛɺࠓݱ
    ࡏͷঢ়ଶʹ௥͍͔ͭͤΔ
    –  ো֐ରԠͰҰ࣌తʹઃఆΛม֤͑ͨछঢ়ଶΛ΋ͱʹ໭͢
    –  ڞ༗͍ͯ͠Δݸਓ։ൃ༻7.ʹɺଞͷ։ൃऀ͕มߋͨ͠ঢ়ଶΛద
    ༻͢Δ

    View Slide

  21. $IFGͷϫʔΫϑϩʔ
    •  ʮϨγϐʯΛ3VCZͰॻ͘
    •  LOJGFTPMPͳͲͰ࣮ߦ
    –  SZTODͰϨγϐΛసૹ
    –  DIFGTPMP͕ͦͷϨγϐΛ࣮ߦ
    –  αʔόʔߏ੒͕ఆٛͨ͠ঢ়ଶʹऩଋ
    •  HJUDPNNJU

    View Slide

  22. $IFG(JUIVC
    ʮϓϩϏδϣχϯάΛίʔυͰॻ͍ͨͳΒόʔδϣϯ؅ཧͯ͠4PDJBM$PEJOH
    ͢Ε͹͍͍͡Όͳ͍ʯ

    View Slide

  23. ʮΠϯϑϥΛόʔδϣϯ؅ཧʯ

    View Slide

  24. TFSWFSTQFD
    ʮίʔυͰॻ͍ͨΜͩͬͨΒςετ΋ॻ͚͹͍͍͡Όͳ͍ʯ

    View Slide

  25. 7BHSBOU$IFGTFSWFSTQFDͰ5%%

    View Slide

  26. Πϯϑϥͷ$*
    via  http://mizzy.org/blog/2013/03/27/1/
    6LJHVNPTFSWFSTQFD1VQQFUʹΑΔܧଓతΠϯςάϨʔγϣϯ
    ʮςετॻ͍ͨΜͩͬͨΒܧଓతΠϯςάϨʔγϣϯ͢Ε͹͍͍͡Όͳ͍ʯ

    View Slide

  27. Πϯϑϥ΋1VMM3FRVFTUͰߏ੒

    View Slide

  28. %FW0QTͷ͍·
    •  ʮΠϯϑϥ΋4PDJBM$PEJOHʯ
    –  *OGSBTUSVDUVSFBT$PEF
    –  (JUIVC
    –  5%%ͱܧଓతΠϯςάϨʔγϣϯ
    Πϯϑϥͷߏங΋1VMM3FRVFTUͰɺ4PDJBM$PEJOHͰɻ
    ʮ֤ݸਓͷखॱॻʯͱ͍͏҉໧஌͔Β
    ʮڞ༗͞Εͨιʔείʔυʯͱ͍͏ܗࣜ஌΁

    View Slide

  29. ͜Ε͔Βͷ%FW0QT

    View Slide

  30. ϓϩϏδϣχϯά'8ͷݱࡏ
    •  $IFG͕σϑΝΫτʹͳΓͭͭ͋Δ
    –  GBDFCPPL "84ͦͷଞͰͷར༻࣮੷
    –  1VQQFU΋ݦࡏ
    •  Ұํɺ$IFGʹ΋༷ʑͳ όου
    ϊ΢ϋ΢
    –  Ϩγϐͷґଘؔ܎ɺLOJGFɺػೳཁΔཁΒͳ͍ɺ֦ுํ๏
    –  :FU"OPUIFSͳ࣮૷͕͋ͬͯ΋͍͍㱺"OTJCMFFUD

    View Slide

  31. "OTJCMF

    View Slide

  32. γϯϓϧ
    -­‐  hosts:  webserver  
       user:  vagrant  
       sudo:  yes  
       tasks:  
           -­‐  name:  install  apache  
               action:  yum  pkg=httpd  state=installed  
           -­‐  name:  install  php  
               action:  yum  pkg=php  state=installed
    $  ansible-­‐playbook  webapp.yml
    TPVSDFIUUQBQBUIFJBJOGPCMPHBCPVUBOTJCMF
    ΋ͪΖΜႈ౳

    View Slide

  33. "OTJCMF
    •  γϯϓϧ
    –  σΟϨΫτϦߏ੒ͱ͔ͳ͍
    –  υΩϡϝϯτগͳ͍
    •  ݴޠඇґଘ
    –  Ϟδϡʔϧ͸ඪ४ೖग़ྗ+40/
    •  DIFGTPMPLOJGFTPMPͬΆ͍࣮ߦΞʔΩςΫνϟΛ಺

    –  ׌ͭύϥϨϧ࣮ߦ
    •  $IBUOPUJpDBUJPO౳ͷϞδϡʔϧ΋಺แ

    View Slide

  34. "OTJCMF%FTJHO1SJODJQMFT
    TPVSDFIUUQTHJUIVCDPNBOTJCMFBOTJCMF

    View Slide

  35.   l::::::::::::::::::|_!::lヽ::::::::: ハ::::::::::::::::::::::::::::::::i、::! ノ
      !:::::::::::::::::l-‐ェ!;ト ヽ:::::l ´!:::::::::::::::::::::::::::::l ` ヽ   幺ク 亡 月 |  ┼‐ .|] |]
      l:::::::::::::::::「(;;;)ヽ、__、::レ'´l:::::::::/l、:::::::::::::l   /   小巴 三l三. ヽ_ノ / こ o o
      !:::::::::/l:::l__,,,rタ"゙、;!)、__!::::/ノ 〉、::::::::l   \
       l::::/ lヽ!    _ _   l;/´  ! >、::l   /  Che○に絶望した!!
      ノノlヽ、_!    r――‐┐   /_ノ:::|  /
        l::::::>、   レ,二二ェ!  /i:::::::::::l   ̄ ̄|_     /ヽ、  /\   /\    /
        l:::/ /::ヽ、 `ー-―-' ,ィ'::::!\:::::l    (ヽ、//\/   \/   \/   \/
        レ' ム-''´lヽ、  _,,./! ゙ヾ!__ヽ!    ヽ´ヽ、ヽ
                !   ̄     レ;'´  |  (,ゝ、 \ ヽ l、
            /| _,,.-/´  ;; .,,,-!  ヽ、 ヽ、 | | ! l
           / 斤'"〇 /´    ,;;:''" _,l_   ヽ ヽ/  l | l
          /; l、」_,,/     '' ゙;;/  ヽ、   〉  `ヽ  l/
          /!,r''´!/  /     ';,/"゙''':;,,,,;;'' \ /     ,!
        / l ,;;  |l  /`'';, ,,   /   ,;;''"゙''   l     /
    !?

    View Slide

  36. 5SBWJT$*ศརͰ͢ΑͶ

    View Slide

  37. %FW0QT΢ΣΞͷࠓޙ
    •  ݱࡏͷ%FW0QT΢ΣΞ
    –  7BHSBOUͰ$IFGͰTFSWFSTQFDͰ+FOLJOTͰŋŋŋ
    –  چདྷͷಓ۩ΛࣗಈԽͯ͠૊Έ߹Θͤͯ௚઀͍͍ͬͯ͡Δײ͡
    –  Πϯϑϥࣗ਎͕ޮ཰Խ͚ͨͩ͠Ͱɺ্Ͱಈ͘ΞϓϦʹ৽͍͠෇ՃՁ஋͸ఏڙ
    Ͱ͖͍ͯͳ͍
    •  ࣗಈԽ͢Δ͚͕ͩ%FW0QTͷΰʔϧͰ͸ͳ͍

    •  ͜Ε͔Βͷ%FW0QT΢ΣΞ
    –  )FSPLV΍5SBWJT$*ͷΑ͏ʹʹύοέʔδ͞ΕͨΞϓϦέʔγϣϯΛ
    QVTI͢Δͱউखʹ˓˓ͯ͘͠ΕΔ
    –  ্Ͱಈ͘ΞϓϦʹ৽͍͠෇ՃՁ஋Λఏڙ͢Δ
    –  ൺᄻࠓ͕*BB4ͱ͢Δͱɺ1BB4Έ͍ͨͳ

    View Slide

  38. %PDLFS

    View Slide

  39. %PDLFS
    •  5IF-JOVYDPOUBJOFSFOHJOF
    –  -9$"6'4
    –  ΑΓϓϩάϥϚϒϧͳԾ૝؀ڥΤϯδϯ
    •  7.Λ೚ҙͷঢ়ଶͰ͔ͭॠ࣌ʹɺϓϩάϥϚϒϧʹ
    ࡞Γग़͢͜ͱ͕Ͱ͖Δ
    –  ೚ҙͷঢ়ଶʮ04͸$FOU04Ͱɺ3VCZɺ$IFGɺ3BJMT͕ೖͬͯ
    ΔʯFUD
    –  ॠ࣌7.ͷىಈ࣌ؒ͑͞ͳ͍
    –  ϓϩάϥϚϒϧίʔυ͔Β

    View Slide

  40. EPDLFSSVO
    #  Dockerfile  ʹඞཁࣄ߲ॻ͍ͯŋŋŋ  
    $  docker  build  –t  naoya/chef_and_rails  
    $  docker  run  –d  naoya/chef_and_rails
    #  ΑΓϓϩάϥϚϒϧʹ  
    require  'docker'  
     
    docker  =  Docker::API.new(base_url:'http://...:4243')  
    containers  =  docker.containers  
    result  =  containers.create(nil,  'naoya/chef_and_rails')  
    containers.start(result['Id'])

    View Slide

  41. %PDLFSͳΒŋŋŋ
    •  ͻͳܗ͔Βॠ࣌ʹ7.Λ࡞ΕΔɺͱ͍͏͜ͱ͸ŋŋŋ
    –  1BB4Έ͍ͨͳ෺͕؆୯ʹͭ͘ΕΔʂ
    –  ࣮ࡍ࡞ͬͨਓ㱺%PLLV
    –  5SBWJT$*ͷΑ͏ͳ΋ͷ΋࡞ΕΔͷͰ͸

    View Slide

  42. %PDLFSతͳ΋ͷͷະདྷ
    •  %PDLFSతͳ΋ͷ͕ΧδϡΞϧʹ࢖͑ΔΑ͏ʹͳΔͱŋŋŋ
    –  ྫܧଓతσϓϩΠͷߴ౓Խ
    •  ΞϓϦέʔγϣϯ͸#VOEMFతʹ·ͱΊͯ
    •  (JUQVTI͢Δͱ7.͕ίϐʔ͞ΕͯσϓϩΠ։࢝
    •  ΞϓϦέʔγϣϯ͕σϓϩΠ͞ΕͨΒεϞʔΫςετΛ࣮ߦ
    •  ςετ͕௨ͬͨΒຊ൪؀ڥ΁σϓϩΠ

    View Slide

  43. ͦΕ4USJEFS$%ͰͰ͖ΔΑ

    View Slide

  44. #SJMMJBOU$POUJOVT%FQMPZNFOU
    github ʹ
    push ͕͖ͨ
    ͷͰ...
    σϓϩΠͯ͠
    ςετ௨ͬͨ
    ͠
    Herokuʹ
    deploy ͢Δͥ!

    View Slide

  45. ࠓޙͷ%FW0QTŋŋŋͨͿΜ
    •  ΠϯϑϥετϥΫνϟ͸ΑΓʮαʔϏεʯతੑ֨Λ૿͍ͯ͘͠
    –  %FW΁ͷ෇ՃՁ஋޲্Λ௥ٻ͍ͯ͘͠ͱࣗવͱͦ͏ͳΔɺ͸ͣ
    –  ΑΓ1BB4తΤοηϯε͕ڧ͘ͳΔ%FWΤϯδχΞ͸HJUQVTI͢Δ͚ͩ

    •  αʔϏεؒͰͷΞϓϦέʔγϣϯͷަ׵͕༰қʹ
    –  8FCΞϓϦ͸ࣗવͱͦͷΠϯϑϥαʔϏεΛड͚ΔͨΊͷߏ଄ʹ·ͱΊΒΕΔ
    •  ύοέʔδϯάɺ#VOEMF
    •  ີ݁߹͍ͯͨ͠ΞϓϦέʔγϣϯͱΠϯϑϥ͸ૄͰϙʔλϒϧͳ΋ͷʹ
    –  ྫ4USJEFS$%తͳ΋ͷͰςετͰ͖ͯɺ)FSPLVͰಈ͔͢ɺΈ͍ͨͳܗ
    •  ςετɺ֎෦ґଘίʔυͷCVOEMFɺΞϓϦέʔγϣϯίʔυͰҰͭͷύοέʔδ
    –  ݁Ռ4USJEFS$%΍5SBWJT$*ͷΑ͏ͳɺΞϓϦέʔγϣϯ޲͚4BB4ͰͷΞϓϦέʔγϣ
    ϯަ׵͕༰қʹͳ͍ͬͯ͘
    –  ΞϓϦέʔγϣϯ͕·ΔͰϏϧυύΠϓϥΠϯͷΑ͏ʹ֤छ4BB4Λ௨ͬͯ࠷ऴతʹαʔϏ
    ε؀ڥʹσϓϩΠ͞ΕΔΑ͏ʹ

    View Slide

  46. ·ͱΊ
    •  %FW0QTͷ͍·
    –  Ϋϥ΢υԾ૝Խ͸౰ͨΓલʹͳͬͯࣗಈԽ͸ඞવʹ
    –  7BHSBOUɺ$IFG1VQQFUɺTFSWFSTQFDͳͲͰ*OGSBTUSVDUVSF
    BT$PEFͷجૅ͸ଗͬͨ
    –  Πϯϑϥ΋4PDJBM$PEJOH͢Δ࣌୅
    •  %FW0QTͷະདྷ
    –  %FW΁ͷΑΓ৽͍͠෇ՃՁ஋ͷ޲্
    –  ΠϯϑϥΛΑΓʮαʔϏεʯతͳ΋ͷʹ࢓্͛Δํ޲ʹ
    –  %PDLFS 4USJEFS$%͔ΒͦΕ͕֞ؒݟ͑Δ

    View Slide