Slide 1

Slide 1 text

࠷ۙ΍ͬͨ࢓ࣄͷ࿩ @nekogeruge_987 @onirgra_ Shibuya.rb 2015.03.18

Slide 2

Slide 2 text

͜ͷ΁Μ࢖ͬͨ࿩Ͱ͢ - CircleCI - Docker - Serverspec - Ansible

Slide 3

Slide 3 text

Yudai Suzuki / ླ໦༤େ onigra @nekogeruge_987 ༗ݶձࣾexvisionz @onigra_

Slide 4

Slide 4 text

- ΠϯϑϥCIͷ࿩ - αϒγεςϜ։ൃͷ࿩ - طଘγεςϜͷe2eςετͷ࿩ ͓඼ॻ͖

Slide 5

Slide 5 text

ΠϯϑϥCIͷ࿩

Slide 6

Slide 6 text

ҰݴͰݴ͏ͱ CircleCI্ʹDockerίϯςφىಈͯ͠ Ansible࣮ߦͯ͠ Serverspec࣮ߦ͢ΔΑ͏ʹͨ͠

Slide 7

Slide 7 text

CIπʔϧษڧձ@෱ԬͰৄ͍͠આ໌ͷࢿྉ͕Ξοϓ͞Εͯ·ͨ͠ɻ ΍ͬͯΔ͜ͱ͸جຊతʹҰॹͰͨ͠ɻ ! Circle ci and docker+serverspec by @minimum2scp http://www.slideshare.net/minimum2scp/circle-ci-and-dockerserverspec

Slide 8

Slide 8 text

೰Έ # ԿΛςετ͢Δ΂͖͔͕͋·Γࢥ͍͔ͭͳ͍ - ͱΓ͋͑ͣϛυϧ΢ΣΞͷόʔδϣϯͱ͔… - ۭ͍ͯΔϙʔτͱ͔… - Ϣʔβʔͱ͔… - Πϯϑϥํ໘ͷਓͷ஌ݟ΄͍͠

Slide 9

Slide 9 text

αϒγεςϜ։ൃͷ࿩

Slide 10

Slide 10 text

طଘγεςϜʹ࡞ΒΕͨWebAPIͱ࿈ܞ͢Δ RailsΞϓϦ։ൃͰɺ طଘγεςϜͷAPIΛୟ͘ ςετΛͲ͏͢Δ͔ͱ͍͏໰୊

Slide 11

Slide 11 text

ղܾҊ A. طଘΞϓϦͷDockerΠϝʔδΛ࡞Γɺ CircleCI্Ͱίϯςφىಈ͢Δ 
 B. طଘΞϓϦΛAWSͰಈ͔ͯ͠
 CircleCI͔Βͦ͜Λୟ͘

Slide 12

Slide 12 text

AҊ࠾༻ - ޾͍ʹ΋طଘΞϓϦͷVagrant؀ڥߏங༻ Ansible Playbook͕͋ͬͨ ! - ݱঢ়ಈ͍ͯΔ؀ڥʹखΛೖΕͣʹͰ͖ͦ͏

Slide 13

Slide 13 text

΍ͬͯΈͯ # ͦ΋ͦ΋طଘΞϓϦͷ؀ڥ࡞Δͷʹ͕͔͔࣌ؒΔ - Playbookͷ׬ྃʹ2͙࣌ؒΒ͍͔͔Δ - 1൪͔͔࣌ؒͬͨͷ͸DBͷdumpͷload͚ͩͲ - 1ίϯςφʹϛυϧ΢ΣΞશ෦ೖΓ - ෼͚ͯͪΌΜͱಈ͘ॴ·Ͱ΍Δ༨༟͕ແ͔ͬͨ - Image࡞Δͷ΋ࣗಈԽ͔ͨͬͨ͠ # ImageͷऔಘͲ͏͠Α͏ - Private Docker RegistryཱͯΔͷμϧ͍… - Google Container Registry࢖ͬͯ΋Α͔͔ͬͨ΋ - ݁ہɺtar.gzʹͯ͠S3ʹஔ͘Α͏ʹͨ͠ - 2G͙Β͍͋ͬͯ௨৴ྉ͕…

Slide 14

Slide 14 text

Docker Imageͷऔಘ # CircleCI্ͰS3͔Βऔಘ͢ΔΑ͏ʹ͢Δ - Image͕ஔ͍ͯ͋ΔύεʹΞΫηεͰ͖Δ͚ͩͷ IAM࡞੒ͯ͠࢖͏ - CIrcleCIͷཱͯΔΠϯελϯεͷPublicIPRange͕
 ެ։͞ΕͯΔͷͰɺ͔ͦ͜ΒͷΞΫηεΛڐՄ͢Δ - https://circleci.com/docs/ec2ip-and-security-group - CircleCIͷΩϟογϡΛར༻͢Δ - https://gist.github.com/onigra/17b06a26356e7cc75c82

Slide 15

Slide 15 text

ϋϚͬͨॴ # Imageͷ࡞੒ͱϩʔυͰϋϚͬͨ - docker commit -> save -> import = ಈ͔ͳ͍ - docker export -> import = ಈ͘ - docker commit -> save -> load = ಈ͘ - http://d.hatena.ne.jp/enakai00/20140802/1406958412

Slide 16

Slide 16 text

طଘγεςϜe2eςετͷ࿩

Slide 17

Slide 17 text

طଘγεςϜͷςετ͕ແ͍ - ͱΓ͋͑ͣCapybara + PhantomJSͰςετॻ͍ͨ - ࡞͚ͬͨͩ͡Ό୭΋࢖Θͳ͍ͩΖ͏͔Βɺࣗಈ࣮ߦ͞ΕΔΑ͏ʹ͍ͨ͠ - CircleCIͰಈ͔͢ - Staging(AWS)͸IP੍ݶ͔͔ͬͯΔ - Staging͕ಈ͍ͯΔEC2ΠϯελϯεͷSecurityGroupʹର͠ɺ ಈతʹIP੍ݶͷ௥Ճ&࡟আΛߦ͏ (BҊ͸͜ΕͰ΍Δͭ΋Γͩͬͨ) - ্هͷΈ͕Ͱ͖ΔIAMϢʔβʔΛ࡞੒͠ɺςετͷલͱޙʹ্هΛߦ͏ - https://gist.github.com/onigra/060877faa60e29f2c07f

Slide 18

Slide 18 text

ײ૝ # ͍ΘΏΔmicroserviceతͳαϒγεςϜͷ૊Έ߹ΘͤΛऔΔΑ͏ͳΞʔΩςΫνϟͷ৔߹ɺ
 Dockerͷ࢖͍ॴ͕͚ͬ͜͏͋Γͦ͏ - ։ൃ؀ڥΛαΫοͱىಈͰ͖Δͷ͸ศར - αϒγεςϜͷ؀ڥΛDockerͰ؆୯ʹ؅ཧͰ͖ΔΑ͏ʹ͍ͨ͠ - ͱ͸ݴ͑ɺ࢖ͬͯΈͯ໘౗ͳॴ͕ଟ͍ͱײ͡Δ - Docker͓͡͞Μͷඞཁੑ # ࠓͷϓϩδΣΫτͰ͸ɺࣗ෼͕࡞ͬͨαϒγεςϜΛAtlas(چVagrantCloud)Ͱ ؀ڥߏஙࡁΈͷVagrantBoxΛ഑෍͍ͯ͠Δ - Atlasศརͦ͏ͳͷͰɺ΋͏ͪΐͬͱௐ΂ͯ࢖ͬͯΈΑ͏ͱࢥͬͯΔ # ProductionͰDockerΛੵۃతʹ࢖͍͍ͨͱ͸·ͩࢥΘͳ͍ - ଞʹ৮ΕΔਓ͕͍ͳ͍͠ - Ͱ΋ɺ͙͢Ͱ͖ΔΑ͏ʹ͸͓͖͍ͯͨ͠ # Docker࢖ͬͯΈͯࢥͬͨ͜ͱͱ͔͕࠷ۙͷRebuild PodcastͰ݁ߏ࿩͞Εͯͨ - http://rebuild.fm/79/ - http://rebuild.fm/83/