Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

l0CBNBGPS"NFSJDBz

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

%FW0QT

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

7BHSBOU

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

7BHSBOU $IFG TFSWFSTQFDͰ5%%

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Πϯϑϥ΋1VMM3FRVFTUͰߏ੒

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

͜Ε͔Βͷ%FW0QT

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

"OTJCMF

Slide 32

Slide 32 text

γϯϓϧ -­‐  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 ΋ͪΖΜႈ౳

Slide 33

Slide 33 text

"OTJCMF •  γϯϓϧ –  σΟϨΫτϦߏ੒ͱ͔ͳ͍ –  υΩϡϝϯτগͳ͍ •  ݴޠඇґଘ –  Ϟδϡʔϧ͸ඪ४ೖग़ྗ +40/ •  DIFGTPMP LOJGFTPMPͬΆ͍࣮ߦΞʔΩςΫνϟΛ಺ แ –  ׌ͭύϥϨϧ࣮ߦ •  $IBUOPUJpDBUJPO౳ͷϞδϡʔϧ΋಺แ

Slide 34

Slide 34 text

"OTJCMF%FTJHO1SJODJQMFT TPVSDFIUUQTHJUIVCDPNBOTJCMFBOTJCMF

Slide 35

Slide 35 text

  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     / !?

Slide 36

Slide 36 text

5SBWJT$*ศརͰ͢ΑͶ

Slide 37

Slide 37 text

%FW0QT΢ΣΞͷࠓޙ •  ݱࡏͷ%FW0QT΢ΣΞ –  7BHSBOUͰ$IFGͰTFSWFSTQFDͰ+FOLJOTͰŋŋŋ –  چདྷͷಓ۩ΛࣗಈԽͯ͠૊Έ߹Θͤͯ௚઀͍͍ͬͯ͡Δײ͡ –  Πϯϑϥࣗ਎͕ޮ཰Խ͚ͨͩ͠Ͱɺ্Ͱಈ͘ΞϓϦʹ৽͍͠෇ՃՁ஋͸ఏڙ Ͱ͖͍ͯͳ͍ •  ࣗಈԽ͢Δ͚͕ͩ%FW0QTͷΰʔϧͰ͸ͳ͍  •  ͜Ε͔Βͷ%FW0QT΢ΣΞ –  )FSPLV΍5SBWJT$*ͷΑ͏ʹʹύοέʔδ͞ΕͨΞϓϦέʔγϣϯΛ QVTI͢Δͱউखʹ˓˓ͯ͘͠ΕΔ –  ্Ͱಈ͘ΞϓϦʹ৽͍͠෇ՃՁ஋Λఏڙ͢Δ –  ൺᄻࠓ͕*BB4ͱ͢Δͱɺ1BB4Έ͍ͨͳ

Slide 38

Slide 38 text

%PDLFS

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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'])

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

ͦΕ4USJEFS$%ͰͰ͖ΔΑ

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

ࠓޙͷ%FW0QTŋŋŋͨͿΜ •  ΠϯϑϥετϥΫνϟ͸ΑΓʮαʔϏεʯతੑ֨Λ૿͍ͯ͘͠ –  %FW΁ͷ෇ՃՁ஋޲্Λ௥ٻ͍ͯ͘͠ͱࣗવͱͦ͏ͳΔɺ͸ͣ –  ΑΓ1BB4తΤοηϯε͕ڧ͘ͳΔ%FWΤϯδχΞ͸HJUQVTI͢Δ͚ͩ  •  αʔϏεؒͰͷΞϓϦέʔγϣϯͷަ׵͕༰қʹ –  8FCΞϓϦ͸ࣗવͱͦͷΠϯϑϥαʔϏεΛड͚ΔͨΊͷߏ଄ʹ·ͱΊΒΕΔ •  ύοέʔδϯάɺ#VOEMF •  ີ݁߹͍ͯͨ͠ΞϓϦέʔγϣϯͱΠϯϑϥ͸ૄͰϙʔλϒϧͳ΋ͷʹ –  ྫ4USJEFS$%తͳ΋ͷͰςετͰ͖ͯɺ)FSPLVͰಈ͔͢ɺΈ͍ͨͳܗ •  ςετɺ֎෦ґଘίʔυͷCVOEMFɺΞϓϦέʔγϣϯίʔυͰҰͭͷύοέʔδ –  ݁Ռ4USJEFS$%΍5SBWJT$*ͷΑ͏ͳɺΞϓϦέʔγϣϯ޲͚4BB4ͰͷΞϓϦέʔγϣ ϯަ׵͕༰қʹͳ͍ͬͯ͘ –  ΞϓϦέʔγϣϯ͕·ΔͰϏϧυύΠϓϥΠϯͷΑ͏ʹ֤छ4BB4Λ௨ͬͯ࠷ऴతʹαʔϏ ε؀ڥʹσϓϩΠ͞ΕΔΑ͏ʹ

Slide 46

Slide 46 text

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