DevOpsの今とこれから #init_devops

DevOpsの今とこれから #init_devops

B4afc7d853d7f1cb6a253d3c7183c05a?s=128

Naoya Ito

July 19, 2013
Tweet

Transcript

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

  2. l0CBNBGPS"NFSJDBz

  3. None
  4. 0CBNBਞӦͷγεςϜ •  Ҏ্ͷlϞμϯͳzΞϓϦέʔγϣϯ –  KFLZMM MFTT HJUIVC QZUIPOSVCZ K2VFSZ NPEFSOJ[S

     NVTUBDIF DPEFLJU 1VQQFU –  "84਺ઍΠϯελϯε 4 –  ϞόΠϧϑΝʔετɺϨεϙϯγϒσβΠϯ
  5. 0CBNBਞӦͱ%FW0QT •  l1VMM3FRVFTUzϕʔε։ൃ –  (JUIVC •  %FW0QT –  l*OGSBTUSBDUVSFBT$PEFz

  6. %FW0QT

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

  8. ͳͥ%FWͱ0QT͕ڠྗग़དྷ͍ͯͳ͔͔ͬͨ •  ଐਓੑ͕ൃੜͤ͞Δಛݖ –  ࠷ऴ֬ೝऀŋŋŋϨϏϡʔͰϦϦʔεΛࢭΊΔಛݖ –  σϓϩΠ୲౰ŋŋŋσϓϩΠ࡞ۀͰϦϦʔεΛࢭΊΔಛݖ –  Πϯϑϥ୲౰ŋŋŋෛՙࢼݧͰϦϦʔεΛࢭΊΔಛݖ • 

    ։ൃΛअຐ͢Δଟ͘͸ʮಛݖʯ –  ˓˓͞ΜͷνΣοΫ͕௨Βͳ͔ͬͨɺ୲౰ऀ͕͍ͳ͔ͬͨɺม ߋͰ͖Δਓ͕͍ͳ͔ͬͨŋŋŋ –  ͢΂ͯͷಛݖ͸ࣗͣͱ෗ഊ͢Δ •  ୲౰ͷʮؾ෼ʯ΍ɺରਓؔ܎ͷঢ়ଶʹۀ຿ͷਐΊқ͕͞ґଘ
  9. ଐਓੑͷഉআ •  ଐਓੑ͕अຐͳΒࣗಈԽͪ͠Ό͑͹͍͍͡Όͳ͍ (ࠓ೔͸͓΋ʹ͜ ͜ͷ࿩)

  10. %FW0QTͷ໨ࢦ͢ͱ͜Ζ •  ʮϏδωεʹ͓͍ͯࢼߦࡨޡΛଟ਺܁Γฦ͍ͨ͠ʯ –  ೔ʹසൟʹϦϦʔε͍ͨ͠ –  සൟͳϦϦʔεͷ๦͛ʹͳΔ΋ͷΛഉআ͍ͨ͠ –  ଐਓੑͷഉআˠࣗಈԽ – 

    ܧଓతͳϦϦʔεŋŋŋ$POUJOVT%FMJWFSZ ͜ͷͨΊʹDevͱOps͕ ಉ͡ํ޲Λ޲͖·͠ΐ ͏ = DevOps
  11. ΞδϟΠϧ։ൃͱܧଓతσϦόϦʔ http://www.ryuzee.com/contents/blog/4241

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

  13. $%ͱࣗಈԽ •  ܧଓత˓˓ –  㱺։ൃɾӡ༻ϓϩηεͷՄೳͳݶΓͷࣗಈԽ –  ʮσϓϩΠʯͷۤ௧ΛऔΓআ͘ •  ΠϯϑϥετϥΫνϟΛࣗಈԽ – 

    *BB4ŋŋŋϋʔυ΢ΣΞΛԾ૝Խ͢Δ͜ͱͰzιϑτ΢ΣΞ෦ ඼zʹ
  14. l*OGSBTUSVDUVSFBT$PEFz •  ϓϩάϥϚϒϧͳΠϯϑϥ –  7BHSBOU 1VQQFU $IFG –  "NB[PO$MPVE'PSNBUJPO "840QTXPSLT

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

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

  17. 7BHSBOU

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

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

  20. $IFGJTOPUPOMZࣗಈԽπʔϧ •  $IFGγεςϜΛʮ͋Δ΂͖ঢ়ଶʯʹऩଋͤ͞Δϑ ϨʔϜϫʔΫ –  αʔόʔߏஙΛࣗಈԽ͢Δ໨తͷঢ়ଶʹ͢Δ •  ˢ͜Ε͹͔Γʹண໨͕ͪ͠ –  த్൒୺ͳঢ়ଶͷαʔόʔΛ͋Δ΂͖ঢ়ଶʹ͢Δ

    –  աڈͷ".*εφοϓγϣοτ͔Β࡞ͬͨΠϯελϯεΛɺࠓݱ ࡏͷঢ়ଶʹ௥͍͔ͭͤΔ –  ো֐ରԠͰҰ࣌తʹઃఆΛม֤͑ͨछঢ়ଶΛ΋ͱʹ໭͢ –  ڞ༗͍ͯ͠Δݸਓ։ൃ༻7.ʹɺଞͷ։ൃऀ͕มߋͨ͠ঢ়ଶΛద ༻͢Δ
  21. $IFGͷϫʔΫϑϩʔ •  ʮϨγϐʯΛ3VCZͰॻ͘ •  LOJGFTPMPͳͲͰ࣮ߦ –  SZTODͰϨγϐΛసૹ –  DIFGTPMP͕ͦͷϨγϐΛ࣮ߦ – 

    αʔόʔߏ੒͕ఆٛͨ͠ঢ়ଶʹऩଋ •  HJUDPNNJU
  22. $IFG (JUIVC ʮϓϩϏδϣχϯάΛίʔυͰॻ͍ͨͳΒόʔδϣϯ؅ཧͯ͠4PDJBM$PEJOH ͢Ε͹͍͍͡Όͳ͍ʯ

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

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

  25. 7BHSBOU $IFG TFSWFSTQFDͰ5%%

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

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

  28. %FW0QTͷ͍· •  ʮΠϯϑϥ΋4PDJBM$PEJOHʯ –  *OGSBTUSVDUVSFBT$PEF –  (JUIVC –  5%%ͱܧଓతΠϯςάϨʔγϣϯ Πϯϑϥͷߏங΋1VMM3FRVFTUͰɺ4PDJBM$PEJOHͰɻ

    ʮ֤ݸਓͷखॱॻʯͱ͍͏҉໧஌͔Β ʮڞ༗͞Εͨιʔείʔυʯͱ͍͏ܗࣜ஌΁
  29. ͜Ε͔Βͷ%FW0QT

  30. ϓϩϏδϣχϯά'8ͷݱࡏ •  $IFG͕σϑΝΫτʹͳΓͭͭ͋Δ –  GBDFCPPL "84ͦͷଞͰͷར༻࣮੷ –  1VQQFU΋ݦࡏ •  Ұํɺ$IFGʹ΋༷ʑͳ

    όου ϊ΢ϋ΢ –  Ϩγϐͷґଘؔ܎ɺLOJGF ɺػೳཁΔཁΒͳ͍ɺ֦ுํ๏ –  :FU"OPUIFSͳ࣮૷͕͋ͬͯ΋͍͍㱺"OTJCMFFUD
  31. "OTJCMF

  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 ΋ͪΖΜႈ౳
  33. "OTJCMF •  γϯϓϧ –  σΟϨΫτϦߏ੒ͱ͔ͳ͍ –  υΩϡϝϯτগͳ͍ •  ݴޠඇґଘ – 

    Ϟδϡʔϧ͸ඪ४ೖग़ྗ +40/ •  DIFGTPMP LOJGFTPMPͬΆ͍࣮ߦΞʔΩςΫνϟΛ಺ แ –  ׌ͭύϥϨϧ࣮ߦ •  $IBUOPUJpDBUJPO౳ͷϞδϡʔϧ΋಺แ
  34. "OTJCMF%FTJHO1SJODJQMFT TPVSDFIUUQTHJUIVCDPNBOTJCMFBOTJCMF

  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     / !?
  36. 5SBWJT$*ศརͰ͢ΑͶ

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

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

  39. %PDLFS •  5IF-JOVYDPOUBJOFSFOHJOF –  -9$ "6'4 –  ΑΓϓϩάϥϚϒϧͳԾ૝؀ڥΤϯδϯ •  7.Λ೚ҙͷঢ়ଶͰ͔ͭॠ࣌ʹɺϓϩάϥϚϒϧʹ

    ࡞Γग़͢͜ͱ͕Ͱ͖Δ –  ೚ҙͷঢ়ଶʮ04͸$FOU04Ͱɺ3VCZɺ$IFGɺ3BJMT͕ೖͬͯ ΔʯFUD –  ॠ࣌7.ͷىಈ࣌ؒ͑͞ͳ͍ –  ϓϩάϥϚϒϧίʔυ͔Β
  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'])
  41. %PDLFSͳΒŋŋŋ •  ͻͳܗ͔Βॠ࣌ʹ7.Λ࡞ΕΔɺͱ͍͏͜ͱ͸ŋŋŋ –  1BB4Έ͍ͨͳ෺͕؆୯ʹͭ͘ΕΔʂ –  ࣮ࡍ࡞ͬͨਓ㱺%PLLV –  5SBWJT$*ͷΑ͏ͳ΋ͷ΋࡞ΕΔͷͰ͸

  42. %PDLFSతͳ΋ͷͷະདྷ •  %PDLFSతͳ΋ͷ͕ΧδϡΞϧʹ࢖͑ΔΑ͏ʹͳΔͱŋŋŋ –  ྫܧଓతσϓϩΠͷߴ౓Խ •  ΞϓϦέʔγϣϯ͸#VOEMFతʹ·ͱΊͯ •  (JUQVTI͢Δͱ7.͕ίϐʔ͞ΕͯσϓϩΠ։࢝ • 

    ΞϓϦέʔγϣϯ͕σϓϩΠ͞ΕͨΒεϞʔΫςετΛ࣮ߦ •  ςετ͕௨ͬͨΒຊ൪؀ڥ΁σϓϩΠ
  43. ͦΕ4USJEFS$%ͰͰ͖ΔΑ

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

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

    –  8FCΞϓϦ͸ࣗવͱͦͷΠϯϑϥαʔϏεΛड͚ΔͨΊͷߏ଄ʹ·ͱΊΒΕΔ •  ύοέʔδϯάɺ#VOEMF •  ີ݁߹͍ͯͨ͠ΞϓϦέʔγϣϯͱΠϯϑϥ͸ૄͰϙʔλϒϧͳ΋ͷʹ –  ྫ4USJEFS$%తͳ΋ͷͰςετͰ͖ͯɺ)FSPLVͰಈ͔͢ɺΈ͍ͨͳܗ •  ςετɺ֎෦ґଘίʔυͷCVOEMFɺΞϓϦέʔγϣϯίʔυͰҰͭͷύοέʔδ –  ݁Ռ4USJEFS$%΍5SBWJT$*ͷΑ͏ͳɺΞϓϦέʔγϣϯ޲͚4BB4ͰͷΞϓϦέʔγϣ ϯަ׵͕༰қʹͳ͍ͬͯ͘ –  ΞϓϦέʔγϣϯ͕·ΔͰϏϧυύΠϓϥΠϯͷΑ͏ʹ֤छ4BB4Λ௨ͬͯ࠷ऴతʹαʔϏ ε؀ڥʹσϓϩΠ͞ΕΔΑ͏ʹ
  46. ·ͱΊ •  %FW0QTͷ͍· –  Ϋϥ΢υԾ૝Խ͸౰ͨΓલʹͳͬͯࣗಈԽ͸ඞવʹ –  7BHSBOUɺ$IFG1VQQFUɺTFSWFSTQFDͳͲͰ*OGSBTUSVDUVSF BT$PEFͷجૅ͸ଗͬͨ –  Πϯϑϥ΋4PDJBM$PEJOH͢Δ࣌୅

    •  %FW0QTͷະདྷ –  %FW΁ͷΑΓ৽͍͠෇ՃՁ஋ͷ޲্ –  ΠϯϑϥΛΑΓʮαʔϏεʯతͳ΋ͷʹ࢓্͛Δํ޲ʹ –  %PDLFS 4USJEFS$%͔ΒͦΕ͕֞ؒݟ͑Δ