JenkinsとPuppet+ServerspecでインフラCI / Jenkins Puppet Serverspec Infra CI

JenkinsとPuppet+ServerspecでインフラCI / Jenkins Puppet Serverspec Infra CI

Jenkins ユーザ・カンファレンス 2015 東京 – セッション

D7df6557c6b98f29ac546911e2b1a4d4?s=128

Shinya Tsunematsu

January 11, 2015
Tweet

Transcript

  1. ! 546/&."5464IJOZB +FOLJOTϢʔβɾΧϯϑΝϨϯε౦ژ +FOLJOTͱ 1VQQFU 4FSWFSTQFDͰ Πϯϑϥ$*

  2. 546/&."5464IJOZB !UONU IUUQCMPHUONUJOGP

  3. None
  4. None
  5. IFUFNM  IUUQIFUFNMKQ  ̋ϔςϜϧ✕ϔϜςϧ  ϩϦϙοϓʂ IUUQMPMJQPQKQ ʹ͙࣍Ϩϯλϧαʔ όʔϥΠϯφοϓ

     େ༰ྔɾߴෛՙʹ଱͑͏Δ্ҐαʔϏεͱͯ͠ఏڙ  ೥ϦϦʔε  ೥݄ݱࡏ୆ऑ
  6. ܧଓత8FCαʔϏεվળΨΠυ  ୈষɹΠϯϑϥߏ੒؅ཧͷվળʙ࣮αʔ ϏεͰͷྺ࢙͔ΒֶͿɼஈ֊తͳෛ࠴ ฦࡁ  IUUQHJIZPKQEFWGFBUVSF XFCTFSWJDFHVJEF  ࣥච࣌͸೥

  7. ࠓ·Ͱߦ͖ͬͯͨࢪࡦͷ͏ͪͷҰͭ

  8. 1VQQFU  $POpHVSBUJPO.BOBHFNFOU 'SBNFXPSL  ߏ੒؅ཧπʔϧ  *OGSBTUSVDUVSFBT$PEF  ΠϯϑϥΛίʔυԽ͢Δ

     ΠϯϑϥΛίʔυͰهड़͢Δ
  9. 1VQQFU  ೖ໳1VQQFU  IUUQCMPHLFOUBSPLPSHFOUSZ 

  10. 1VQQFU  طʹ΄΅શϩʔϧ ໾ׂ ෼ͷߏஙʹؔ ͯ͠ϚχϑΣετԽ͕׬͍ྃͯ͠Δ  ࠷ॳ࡞Δ·Ͱ͸ׂͱେมͩͬͨ  ৽نߏஙɾػೳ௥Ճʹ͓͚Δख͕ؒ

    େ෯ʹܰݮ
  11. ೥౰࣌

  12. None
  13. None
  14. ʊਓਓਓਓਓਓʊ ʼɹ໨ࢹʂʂɹʻ ʉ:?:?:?:?:ʉ

  15. None
  16. 4FSWFSTQFD  IUUQTFSWFSTQFDPSH  NJ[[Z͞Μ IUUQTHJUIVCDPN NJ[[Z ࡞  αʔόͷঢ়ଶΛ؆ܿͳίʔυͰهड़ͯ͠

    ςετ͢ΔͨΊͷ࢓૊Έ  34QFDͰهड़
  17. ॕˑΦϥΠϦʔຊʢ௨শΞϗໟຊʣग़൛

  18. ܶతϏϑΥʔΞϑλʔ  CFGPSF 1VQQFUϚχϑΣετهड़ɾద༻ ໨ࢹ֬ೝ  BGUFS 4FSWFSTQFDͷςετهड़ʢ࢓༷ͷܾఆʣ ࢓༷Λຬͨ͢1VQQFUϚχϑΣετΛهड़ɾద༻ 4FSWFSTQFDͰঢ়ଶΛ֬ೝ

     ॳొ৔ɺTQFDσΟϨΫτϦҎԼ͚ͩͰ΋ίϛοτ௒ ͑ͯ΋͏ແͯ͘͸ͳΒͳ͍ɾҎલͲ͏͔ͯͨ͠ࢥ͍ग़ͤͳ͍Ϩϕϧ
  19. 4FSWFSTQFD׆༂γʔϯ  দɿσΟετϦϏϡʔγϣϯͷόʔδϣϯΞοϓ  1VQQFUͰઃఆ͕ऩଋʢߏங͕׬ྃͨ͠ʣαʔόͷ ঢ়ଶʢͭ·Γ࢓༷ʣΛ4FSWFSTQFDͰهड़  ͦΕΛຬͨ͢Α͏ʹ৽͍͠όʔδϣϯͷ04༻ͷ 1VQQFUϚχϑΣετΛ࡞੒ 

    چɾ৽྆ํͷόʔδϣϯͷαʔόͰςετ͕௨Ε͹ɺ ࢓༷Λຬ͍ͨͯ͠Δɾڍಈ͕Ұக͍ͯ͠Δͱݴ͑Δ
  20. 4FSWFSTQFD׆༂γʔϯ  ஛طଘϚχϑΣετͷϦϑΝΫλϦϯά  ίϐϖίʔυͷ൙ཞɺϚχϑΣετͷϕ ετϓϥΫςΟεͷྲྀߦΓഇΓ  มߋલޙͰ4FSWFSTQFDͷςετ݁Ռ ͕มΘΒͳ͍Α͏ڞ௨Խɾมߋɺෆཁ ෦෼ͷ࡟আͳͲΛਐΊΔ

  21. ػೳ௥ՃɾϦϑΝΫλϦϯά࣌ʹා͍͜ͱ  طʹ͋ΔఆٛͱόοςΟϯά͢Δ  ෳ਺ϩʔϧʹ·͕ͨΔઃఆͷڞ௨ ԽΛਐΊΔ৔߹  ·ͨ͸ڞ௨ͷઃఆʹԿ͔߲໨Λ௥ Ճ͢Δͱ͖

  22. ૯ϩʔϧ਺  ୆਺ͷଟগ͸͋Δ͕ɺ1VQQFUϚχ ϑΣετͰ؅ཧ͞Ε͍ͯΔαʔόϩʔ ϧʢ໾ׂʣ͸Λ௒͑Δ  ͜ΕΒͷαʔόʹ͍ͭͯɺϚχϑΣ ετͷมߋ͝ͱʹϩʔϧ෼ͷςε τΛ࣮ߦ͢Δͷ͸ۤߦ

  23. +FOLJOT  ֤ϩʔϧͷ4FSWFSTQFDςετΛ ΍ͬͯ΋Β͓͏

  24. $*ͷྲྀΕ  1VQQFUϚχϑΣετͷϦϙδτϦΛ ϙʔϦϯά  NBTUFSʹϚʔδ͞Εͨ࣌ʹશϩʔϧ෼ͷ ςετΛ࣮ߦ  1VQQFUϚχϑΣετͷద༻ 

    4FSWFSTQFDͰͷςετ
  25. ᶃ1VQQFUϚχϑΣετ
 4FSWFSTQFDςετ $PNNJU ᶄϙʔϦϯά ᶅ1VQQFUˍ 4FSWFSTQFD ࣮ߦ

  26. ᶃ1VQQFUϚχϑΣετ
 4FSWFSTQFDςετ $PNNJU

  27. ϦϙδτϦߏ੒ આ໌༻؆қ൛

  28. ػೳ௥ՃɾมߋͷྲྀΕ  TQFDϑΝΠϧมߋ  TQFDNBJMCBS@TQFDSC  ςετ࣮ߦ  GBJMΛ֬ೝ 

    QVQQFUϚχϑΣετमਖ਼ɺઌड़ͷίϚϯυͰద༻  SPMFTNBJMNBOJGFTUTCBSQQ  ςετ࣮ߦ  ݁Ռ͕0,Ͱ͋Ε͹ϚχϑΣετͱTQFDϑΝΠϧΛDPNNJU CVOEMFFYFDSBLFTQFDNBJM CVOEMFFYFDSBLFTQFDNBJM
  29. (FNpMF  ͱΓ͋͑ͣ4FSWFSTQFD͕هࡌ͞Ε ͍ͯΕ͹0,  Y·ͩ࢖͑ͯͳ͍ TPVSDFIUUQSVCZHFNTPSH ! HFNQVQQFU HFNTFSWFSTQFD

    
  30. 3BLFpMF  4FSWFSTQFD࣮ߦʹඞཁ  όʔδϣϯ͸ҧ͏͕Y༻ઃఆʹ͍ͭͯ͸ϖύϘͰ࢖͍ͬͯΔ΋ ͷ͕ެ։͞Ε͍ͯΔͷͰͦͪΒΛࢀর  l4FSWFSTQFDW༻3BLFpMFͱTQFD@IFMQFSSCͷ঺հc CMPHUBLBIJSPPLVNVSBz 

    IUUQCMPHIJGVNJJOGPTFSWFSTQFDW SBLFpMFBOETQFDIFMQFS  
 ͰNBJMϩʔϧͷςετ͕࣮ߦग़དྷΔ CVOEMFFYFDSBLFTQFDNBJM
  31. 7BHSBOUpMF  ֤ϩʔϧ͝ͱͷ7.ΛఆٛɺྫNBJM  ϩʔϧ7.Ҏ্Λఆٛ͢Δ  ͭҎ্ͷ7.͸ྫ͑͹σΟετϦͷόʔ δϣϯ͝ͱʹ Ͱ࡞ͬͨΓ͢Δ 

    WBHSBOUTUBUVTͯ͠ಘΒΕΔ7.ͷҰཡ ͕ϩʔϧͷҰཡɺͱࢥͬͯ΋Βͬͯ΋ྑ͍
  32. SPMFTσΟϨΫτϦ  ֤ϩʔϧͷ1VQQFUϚχϑΣετΛ ഑ஔ͢Δ  σΟϨΫτϦߏ੒ʹ͍ͭͯ͸ઌड़ͷ lೖ໳1VQQFUzΛࢀরͷ͜ͱ

  33. TQFDσΟϨΫτϦ  4FSWFSTQFDͷTQFDϑΝΠϧΛ഑ஔ͢Δ  ϩʔϧ͝ͱͷαϒσΟϨΫτϦ  ྫ͑͹NBJMϩʔϧͰGPPQQ CBSQQͱ͍ ͏ϚχϑΣετΛ࡞੒ͨ͠৔߹ɺͦΕʹ ରԠ͢ΔGPP@TQFDSC

    CBS@TQFDSC౳ ҙຯͷ͋Δཻ౓୯ҐͰ࡞੒͍ͯ͠Δ
  34. WBHSBOUσΟϨΫτϦ  WBHSBOUؔ࿈Ͱ࢖͏ϑΝΠϧΛ·ͱ Ί͍ͯΔ  QVQQFUBQQMZTI CJOTI ! QVQQFUBQQMZa NPEVMFQBUIWBHSBOUSPMFTWBHSBOUNPEVMFTa

    TIPX@EJ⒎WFSCPTFa WBHSBOUNBOJGFTUTTJUFQQ!
  35. NBJM΁ͷ1VQQFUϚχϑΣετద༻ WBHSBOUTTINBJMDa TVEPWBHSBOUWBHSBOUQVQQFUBQQMZTI

  36. ػೳ௥ՃɾมߋͷྲྀΕʢ࠶ܝʣ  TQFDϑΝΠϧมߋ  TQFDNBJMCBS@TQFDSC  ςετ࣮ߦ  GBJMΛ֬ೝ 

    QVQQFUϚχϑΣετमਖ਼ɺઌड़ͷίϚϯυͰద༻  SPMFTNBJMNBOJGFTUTCBSQQ  ςετ࣮ߦ  ݁Ռ͕0,Ͱ͋Ε͹ϚχϑΣετͱTQFDϑΝΠϧΛDPNNJU CVOEMFFYFDSBLFTQFDNBJM CVOEMFFYFDSBLFTQFDNBJM
  37. ᶄϙʔϦϯά ᶅ1VQQFUˍ 4FSWFSTQFD ࣮ߦ

  38. $*αʔό࢓༷  -JOVY  σΟετϦ͸ͳΜͰ΋ྑ͍  ؾ͍ͮͨΒ6CVOUVͷαʔό͕͍ͨ  +FOLJOT 

    ཁ(JU1MVHJO  7JSUVBM#PY WBHSBOU
  39. +FOLJOTδϣϒ  ֤ϩʔϧ͝ͱʹδϣϒΛ࡞੒

  40. None
  41. +FOLJOTδϣϒ  ׂͱૉ๿  Ϗϧυͷ෦෼ʹࢦఆ͍ͯ͠ΔzγΣϧ ͷ࣮ߦz͕؊ CJOTI WBHSBOUSVOQVQQFUBOETFSWFSTQFDTINBJM

  42. Ϗϧυ಺༰ CJOTI WBHSBOUSVOQVQQFUBOETFSWFSTQFDTINBJM  ϦϙδτϦʹίϛοτͯ͋͠ΔγΣ ϧεΫϦϓτ  1VQQFU࣮ߦɺ4FSWFSTQFDςετ Λ࣮ߦ͢Δ

  43. Ϗϧυ಺༰ৄࡉ WNىಈ

  44. Ϗϧυ಺༰ৄࡉ 1VQQFUద༻  QVQQFUBQQMZͷΦϓγϣϯ  δϣϒͷίϯιʔϧදࣔ༻ʹΧϥʔΛP⒎  εΫϦϓτ಺Ͱ࢖༻͢ΔͨΊɺFYJUίʔυΛৄࡉ ʹ͢Δ

  45. Ϗϧυ಺༰ৄࡉ 1VQQFUద༻  ߏ੒؅ཧπʔϧ͸ద༻ͷॱংΛอূ ͠ͳ͍ҝ

  46. Ϗϧυ಺༰ৄࡉ 4FSWFSTQFD࣮ߦ  ͜͜͸ͪΐͬͱΠέͯͳ͍ͷͰमਖ਼ ͷඞཁ༗Γʜ

  47. Ϗϧυ಺༰ৄࡉ ޙย෇͚ɺϏϧυऴྃ

  48. ޙ͸δϣϒΛϩʔϧ෼४උ͢Δ͚ͩ  NBTUFSʹNFSHF͞Εͨͱ͖ʹ֤ ϩʔϧͰϦάϨογϣϯ͕ى͖ͳ͍ ͔Ͳ͏͔ʹ͍ͭͯ͸͜Ε͚ͩͰ֬ೝ ͕Մೳ  ڞ௨Ͱࢀর͍ͯ͠Δ߲໨΁ͷมߋ͕ ͠΍͘͢ͳΔ

  49. ίϥϜ%PDLFS͸࢖͍ͬͯͳ͍ʁ  %PDLFSͷํ͕ܰྔͰ$*޲͖Ͱ͸͋Δ  ϔςϜϧ͸ΦϯϓϨˍԾ૝Խແ͠ͰαʔόΛӡ ༻͍ͯ͠Δ  ΑΓ࣮ػͷ؀ڥʹ͍ۙ7JSUVBM#PYͰͷ׬શԾ૝ Խͳ7.ͷํ͕౎߹͕ྑ͍ 

    ϖύϘࣾ಺Ͱ͸!VE[VSB͕EPDLFSΛ࢖ͬͨ Πϯϑϥ$*ΛਐΊ͍ͯͨΓ͢Δ
  50. ϋϚͬͨʢϋϚ͍ͬͯΔʣ͜ͱ  ޙย෇͚࣌ͷ
 WBHSBOUEFTUSPZGPSDF
 Ͱฒߦ࣮ͯ͠ߦ͞Ε͍ͯΔδϣϒͷ7.͕ಓ࿈Εʹ ͳΔ  -JOVYͷΈͰى͖͍ͯΔ໰୊ɺૉৼΓ༻ͷࣗ෼ͷ .BD্Ͱ͸࠶ݱ͠ͳ͍ 

    ผͷษڧձͰ૬ஊͨ͠ͱ͜Ζɺ,7.Ͱ΋ࣅͨΑ͏ ͳ͜ͱ͕͋Δͱͷ͜ͱ
  51. ϋϚͬͨʢϋϚ͍ͬͯΔʣ͜ͱ  +FOLJOTͷ1SPDFTT5SFF,JMMFSลΓ͔ͳͱࢥͬͯ ͍Δ  IUUQTXJLJKFOLJOTDJPSHEJTQMBZ +&/,*/41SPDFTT5SFF,JMMFS  lBTLUIFTQFBLFSzͰɹ!LPITVLFLBXB͞Μ ʹ࣭໰ग़དྷͨͷͰ΋͏গ͠ݟͯΈΑ͏

     ࣅͨ͜ͱ΍ͬͯΔΑͱ͍͏ਓ͸৘ใڞ༗͠·͠ΐ͏
  52. ͜Ε͔Β΍Γ͍ͨ͜ͱɾग़དྷ͍ͯͳ͍͜ͱ  1VMM3FRVFTU࣌ʹ΋֘౰ϩʔϧͰΠϯϑϥ$*  ࠓ͸NBTUFSͷΈͳͷͰ  1VMM3FRVFTUͷϒϥϯνͰಉ༷ͷ͜ͱΛ΍Γͨ ͍  +FOLJOTʹͲ͏͍͏෩ʹϩʔϧΛ౉ͯ͠΍Δ͔͕

    ϙΠϯτͦ͏  +FOLJOTͷ1VMM3FRVFTU#VJMEFS1MVHJO
  53. ͜Ε͔Β΍Γ͍ͨ͜ͱɾग़དྷ͍ͯͳ͍͜ͱ  ςετ͕௨ͬͨΒ*OUFHSBUJPO؀ڥ ʹ1VQQFUద༻  ֤εςʔδͰͷ4FSWFSTQFDఆظ࣮ ߦ

  54. ͜Ε͔Β΍Γ͍ͨ͜ͱɾग़དྷ͍ͯͳ͍͜ͱ  ΋͏͢͜͠+FOLJOTXBZͰ$*  ݱঢ়ϏϧυεΫϦϓτຕ  ΋ͬͱϓϥάΠϯ࢖ͬͨΓ  ࡉ͔͍δϣϒΛͭͳ͛ͨΓ

  55. +FOLJOTҎ֎ͰͷςετۦಈΠϯϑϥˍ$*ྫ  lαʔόΠϯϑϥపఈ߈ུz  ಛूlςετۦಈΠϯϑϥ ˍ$*࠷લઢ*OGSBTUSVDUVSF BT$PEF͕΋ͨΒ͢ϫʔΫϑ ϩʔͷ࡮৽z  8FSLFS

    %JHJUBM0DFBO
  56. ·ͱΊ  *OGSBTUSVDUVSFBT$PEF  ίʔυԽग़དྷָͯʹͳͬͨ  Πϯϑϥ$*  ͋Δͱ҆৺ͯ͠࡞ۀग़དྷΔ 

    ΋ͬͱָ͍ͨ͠ɺ҆৺͍ͨ͠  ʢ͋ͱग़དྷΕ͹ʣ΋ͬͱڧ͍$*αʔό͕ཉ͍͠
  57. None
  58. ΤϯδχΞੵۃ࠾༻த IUUQQFQBCPDPNSFDSVJUQFQBMVODIFPO