Slide 1

Slide 1 text

εϖοΫΛ্͛ͯ Ϋϥ΢υͰԥΔCI pixiv.inc sue445

Slide 2

Slide 2 text

• HN: sue445 • ށ੶ωʔϜ: Go Sueyoshi • 2018೥7݄ɹϐΫγϒೖࣾ ‣ ࠓճͷొஃऀͷதͰ͸ൺֱత৽ࢀऀ • Πϯϑϥ෦ • ϑϧελοΫΩϡΞΤϯδχΞ ‣ ϓϦΩϡΞͷΧόϨοδ100%ܧଓத go versionʢࣗݾ঺հʣ

Slide 3

Slide 3 text

• SUE ≒ SRE • SREʹࣅͯΔ࢓ࣄΛ΍ͬͯΔ go versionʢࣗݾ঺հʣ

Slide 4

Slide 4 text

https://rubykaigi.org/2019/speakers ʲએ఻ʳRubyKaigi 2019ొஃ༧ఆ

Slide 5

Slide 5 text

๻ͷϐΫγϒͰͷϛογϣϯ

Slide 6

Slide 6 text

ʮશͯͷख࡞ۀΛࣗಈԽ͢Δʯ ๻ͷϐΫγϒͰͷϛογϣϯ

Slide 7

Slide 7 text

• ػցʹ೚ͤΒΕΔ͜ͱ͸ػցʹશ෦೚ͤͯɺਓ͔ؒ͠Ͱ͖ͳ͍͜ͱΛਓ͕ؒ ΍Δ΂͖ • ݱঢ়͸·ͩ΄Ͳԕ͍ͷͰ·ͣ͸CIͰձࣾΛϋοΫ͍ͯ͠Δ • ʮಇ͔ͳ͍ͨΊʹશྗͰಇ͍͍ͯΔʯʢʁʣ ʮશͯͷख࡞ۀΛࣗಈԽ͢Δʯ

Slide 8

Slide 8 text

• ϐΫγϒͷCIࣄ৘ͱݱঢ়ͷCIͷ໰୊఺ • Ͳ͏΍ͬͯվળ͔ͨ͠ • ϐΫγϒͳΒͰ͸ͷ޻෉఺΍ۤ࿑఺ ࠓ೔࿩͢͜ͱ

Slide 9

Slide 9 text

• CI͸ϨϕϧʢεϖοΫʣΛ্͛ͯ෺ཧʢΫϥ΢υʣͰԥΔͷ͕େਖ਼ٛ • SaaS΋͍͍͚ͲࣗલͰ΍Δͷ΋ӡ༻ܦݧ஋͕ஷ·ΔͷͰ͓͢͢Ί ‣ ͨͩ͠ສਓʹ͓͢͢Ί͸͠ͳ͍ ࠷ॳʹ·ͱΊ

Slide 10

Slide 10 text

• େલఏ ‣ ྺ࢙తܦҢʹΑΓGitHub.comͱGitLabʢΦϯϓϨʣ͕྆ํ࢖ΘΕ͍ͯΔ ϐΫγϒͷCIࣄ৘

Slide 11

Slide 11 text

• GitHub.com ‣ Railsܥ͸GitHubΛ࢖͍ͬͯΔ܏޲ ‣ ྫʣBOOTH, pixivFACTORY, pixiv PAY, pixivίϛοΫ ‣ CI: ͍͍ͩͨશ෦CircleCIΛ࢖ͬͯΔ ϐΫγϒͷCIࣄ৘

Slide 12

Slide 12 text

• GitLabʢΦϯϓϨʣ ‣ pixivຊମʢ͍ΘΏΔΈΜͳ͕Α͘஌ͬͯΔpixivʣɺpixivຊମͱີ݁߹͍ͯ͠Δपลαʔ ϏεɺVRoid Studio ‣ CI: GitLab CI, Jenkins ‣ ࠓ೔͸GitLab CIͷ࿩͕ϝΠϯͰ͢ ϐΫγϒͷCIࣄ৘

Slide 13

Slide 13 text

• ͦͷଞʢϦϙδτϦඇґଘʣ ‣ iOS/AndroidΞϓϦͷCIʹBitriseΛར༻ ‣ ৄ͍͜͠ͱɿϞόΠϧΞϓϦͷCIΛBitriseʹͯ͠1೥͕ܦͪ·ͨ͠ - pixiv inside - https://inside.pixiv.blog/kwzr/6190ɹ ϐΫγϒͷCIࣄ৘

Slide 14

Slide 14 text

• VRoid StudioʢUnityʣͰϏϧυͷ͕͔͔͍࣌ؒͬͯͨ ‣ Ϗϧυ1ճ100෼ʢʂʣ ‣ ϋΠεϖοΫͳGitLab Runner͕΄͍͠ͱ͍͏ཁ๬ ‣ ͔ͤͬ͘ͳͷͰVRoid Studioઐ༻Ͱͳ͘ɺࣾ಺GitLabͷશମͰ࢖͑ΔRunnerʹͨ͠ ‣ CIͷվળ݁ՌɺΈΜͳͷੜ࢈ੑ͸όΫ্͕Γʹͳͬͯ޾ͤʹͳͬͯ·͢ CIͷ໰୊఺

Slide 15

Slide 15 text

• Before ‣ MacMini ‣ ௚ྻͰ100෼ ܶతϏϑΥʔΞϑλʔ

Slide 16

Slide 16 text

• Before ‣ MacMini ‣ ௚ྻͰ100෼ • After ‣ EC2 c5.2xlargeΠϯελϯεʢvCPU 8, ϝϞϦ16GiBʣ ‣ 3ฒྻͰ25෼ ܶతϏϑΥʔΞϑλʔ

Slide 17

Slide 17 text

• લ൒Ͱ5෼ɺޙ൒Ͱ֤20෼લޙ • 100෼ -> 25෼ͳͷͰ4ഒͷੜ࢈ੑ ܶతϏϑΥʔΞϑλʔ

Slide 18

Slide 18 text

Ͱ΋͓ߴ͍ΜͰ͠ΐ͏ʁ

Slide 19

Slide 19 text

AWSඅ༻͸݄300υϧ͘Β͍ Ͱ΋͓ߴ͍ΜͰ͠ΐ͏ʁ

Slide 20

Slide 20 text

ࢀߟɿ1݄෼ͷඅ༻

Slide 21

Slide 21 text

ࢀߟɿ1݄෼ͷඅ༻

Slide 22

Slide 22 text

• https://docs.gitlab.com/runner/configuration/runner_autoscale_aws/ ‣ AWSͷεϙοτΠϯελϯεͱdocker machineΛར༻ͨ͠ΦʔτεέʔϧRunnerΛߏங͢ ΔͨΊͷެࣜυΩϡϝϯτ • https://www.m3tech.blog/entry/advent-calendar-2018-2 ‣ M3͞ΜͷςοΫϒϩάɻ೔ຊޠͷઆ໌͕ΉͬͪΌৄ͍͠ ‣ ʮGitLab Runner AWS spot instanceʯͰάάΕ͹͍͘ΒͰ΋ࢿྉ͸ग़ͯ͘Δ ৄ͍͜͠ͱ

Slide 23

Slide 23 text

• άάΕ͹෼͔Δ͜ͱʹ͍ͭͯ࿩ͯ͠΋͠ΐ͏͕ͳ͍ͷͰɺϐΫγϒͳΒͰ͸ ͷ޻෉఺ɺۤ࿑఺ɺӡ༻஌ݟͳͲΛόόʔϯͱ঺հ͠·͢ʂ ϐΫγϒGitLabͱAWS Runner

Slide 24

Slide 24 text

• ͜Εݟͯ΋෼͔Βͳ͍ͱࢥ͏ͷͰ͔͍ͭ·ΜͰઆ໌ AWSͷGitLab Runnerͷશମ૾

Slide 25

Slide 25 text

• εϙοτΠϯελϯε • Docker Machine • Ansible • Terraform • Packer • Serverless Framework ओͳొ৔ਓ෺

Slide 26

Slide 26 text

• ҆͘࢖͑ΔEC2ͷ༨৒Πϯελϯε ‣ ੑೳ͸ΦϯσϚϯυΠϯελϯεʢεϙοτΠϯελϯε͡Όͳ͍ී௨ͷ΍ͭʣͱશ͘ ಉ͡ͰɺՁ֨͸࠷େ9ׂҾ ‣ ྫʣc5.2xlargeͩͱΦϯσϚϯυ͕0.428USD/࣌ؒɺεϙοτ͕0.0779USD/࣌ؒલޙ • εϙοτΠϯελϯεͷՁ֨͸มಈ͢ΔͷͰɺࣄલʹઃఆͨ͠ೖࡳՁ֨Λ௒ ͑Δͱ࡞Εͳ͍ ‣ ଟগՁ্͕͕֨ͬͯ΋ೖࡳΤϥʔʹͳΒͳ͍Α͏ͳֹۚͰೖࡳ͢Δͷ͕͓͢͢Ί εϙοτΠϯελϯε

Slide 27

Slide 27 text

• ΞΧ΢ϯτ͝ͱʹ࡞੒Ͱ͖ΔεϙοτΠϯελϯεͷ্ݶ͕ܾ·ͬͯΔʢσϑΥϧ τ20ʣ • εϙοτΠϯελϯεΛ࡟আͨ͠Β·ͨ࡞੒Ͱ͖Δ͸ͣͳͷ͕ͩɺͨ·ʹ࡟আࡁͷ Πϯελϯε͕࡞੒্ݶΛѹഭ͢Δ͜ͱ͕͋Δ ‣ ๻͸Α͘ʮεϙοτΠϯελϯεͷΰϛʯͱݴͬͯΔ • ϝΠϯͰ࢖͏ΠϯελϯελΠϓ͸Ұ౓ʹཱͯΔΠϯελϯε਺ΑΓ΋ଟΊʹ্ݶ ؇࿨ਃ੥Λͨ͠ํ͕͍͍ɻʢϐΫγϒͩͱ10ฒྻʹରͯ͠100ݸͰ্ݶ؇࿨ʣ εϙοτΠϯελϯεʢ஫ҙ఺ʣ

Slide 28

Slide 28 text

• ϦϞʔταʔό্ʹdockerίϯςφΛߏங͢Δ࢓૊Έ • DockerίϚϯυͷ࣮ߦݩͱίϯςφͷ࡞੒ઌ͕ผ • http://docs.docker.jp/machine/overview.html Docker Machine

Slide 29

Slide 29 text

• ௨ৗDockerͱ͍͏ͱͬͪ͜Λࢦ͢৔߹͕ଟ͍ʢDockerίϚϯυͷ࣮ߦݩͱί ϯςφͷ࡞੒ઌ͕ಉ͡ʣ ‣ http://docs.docker.jp/machine/overview.html ൺֱ༻ɿDocker Engine

Slide 30

Slide 30 text

GitLab Runner + Docker Machine GitLab Runner Docker Machine ΦϯϓϨ؀ڥ ec2 ec2 ec2

Slide 31

Slide 31 text

• ͜ͷߏ੒ͷϝϦοτ ‣ Docker EngineʢαʔόͷϩʔΧϧʹίϯςφΛཱͯΔʣͱҧͬͯɺॏ͍δϣϒ͕1ͭ͋ͬ ͨ࣌ʹଞͷδϣϒʹӨڹ͕ແ͍ ‣ ϋΠεϖοΫͳϚγϯΛδϣϒ1ͭͰઐ༗Ͱ͖Δ ‣ Runner͕Α͠ͳʹΦʔτεέʔϧͯ͘͠ΕΔͷͰɺδϣϒ͕ੵ·Εͳ͚Ε͹EC2͸উखʹ ফ͍͑ͯ͘ GitLab Runner + Docker Machine

Slide 32

Slide 32 text

• αʔόͷϓϩϏδϣχϯάπʔϧ • طଘͷRunnerʢDocker Engineར༻ʣͷplaybook͕͋ͬͨͷͰɺ৽͘͠Φʔτ εέʔϧRunner༻ͷઃఆΛ࡞ͬͨ Ansible

Slide 33

Slide 33 text

• AWSͳͲͷΫϥ΢υͷߏ੒؅ཧπʔϧ • VPC, S3, IAMͳͲͷϓϩϏδϣχϯάͰར༻ • GitLabͷMergeRequestͰterraform planʢdry runʣΛ͠ɺmasterʹϚʔδ͞Ε ͨΒapplyʢຊ࣮ߦʣ͢Δͱ͍͏ΠϯϑϥCIͰར༻͍ͯ͠Δ Terraform

Slide 34

Slide 34 text

• αʔόͷΠϝʔδʢAWSͳΒAMIʣΛ࡞ΔͨΊͷπʔϧ • ༧ΊϐΫγϒGitLab༻ͷઃఆΛೖΕͯAMIΛ࡞੒͠ʢޙड़ʣɺͦΕΛRunner Ͱ࢖͍ͬͯΔ Packer

Slide 35

Slide 35 text

• ϩʔΧϧ։ൃ༻ʹVagrantಋೖ • Vagrant΍Packer಺ͰͷϓϩϏδϣχϯάʹ͸ mitamaeΛ࢖͍ɺϓϩϏδϣχϯάͨ͠಺༰Λ ServerspecͰςετΛ͍ͯ͠Δ • ΋ͪΖΜGitLab CIͰCI/CD͍ͯ͠Δ • ৄ͍͜͠ͱ͸શ෦ https://sue445.booth.pm/items/ 1033989 ʹॻ͍ͯΔʢεςϚʣ ‣ CircleCIΛGitLab CIʹม͑ͨҎ֎͸αϯϓϧϦϙδτϦ Λ΄΅ؙύΫϦͰ͖ͯΉͬͪΌศརͩͬͨ Packer + Vagrant + mitamae + Serverspec

Slide 36

Slide 36 text

• ʢAWS͚ͩʹݶͬͯݴ͑͹ʣLambdaͱͦͷपลϦιʔεΛ͍͍ײ͡ʹ؅ཧ ͯ͠σϓϩΠ͢ΔͨΊͷπʔϧ • TerraformͰLambdaΛ؅ཧ͢Δͷ͸৭ʑͱେมͳͷͰɺͦ͜Λϥοϓͯ͘͠ Ε͍ͯΔͷ͕خ͍͠ • ࠓճɺAWSͷϞχλϦϯάΛLambda + RubyͰ࡞ͬͯɺServerless Framework Ͱ؅ཧͯ͠Δ Serverless Framework

Slide 37

Slide 37 text

• ىಈͯ͠ΔΠϯελϯε਺ͱGitLab CIͷδϣϒ਺ΛLambdaͰूܭͯ͠ CloudWatchͰ͍͍ײ͡ʹՄࢹԽͯ͠ ͍Δ • ͦͷ͏ͪιʔεΛެ։͍͕ͨ͠ RubyKaigiͷ४උ͕͕͕͕͕ Lambda + Ruby + Serverless FrameworkͰ࡞ͬͨ؂ࢹπʔϧ

Slide 38

Slide 38 text

• AWS͔ΒGitLabʹ௚઀ΞΫηεͰ͖ΔΑ͏ʹͨ͠ • CIͷδϣϒؒͰେ༰ྔϑΝΠϧΛड͚౉ͤΔΑ͏ʹͨ͠ • Runnerͷىಈ࣌ؒνϡʔχϯά • εϙοτΠϯελϯεރׇରࡦ ϐΫγϒͳΒͰ͸ͷ޻෉఺ͳͲ

Slide 39

Slide 39 text

• લఏ ‣ ϐΫγϒGitLab͸ssh༻ͷURL͸ࣾ಺DNSͰ͔͠ղܾͰ͖ͳ͍ͷͰɺAWS͔ΒͩͱΞΫηε Ͱ͖ͳ͍ - Ծʹ໊લղܾͰ͖ͯ΋ࣾ֎͔ΒͷΞΫηεΛड͚ΔGatewayαʔόʹผͷೝূ͕ڬ·ͬͯΔͷͰ ΞΫηεͰ͖ͳ͍ ‣ httpͷURL΋ࣾ֎͔ΒͩͱGoogleͷOAuthೝূ͕ڬ·ΔͷͰAWS͔ΒGitLabͷAPI͕ୟ͚ͳ ͍ AWS͔ΒGitLabʹ௚઀઀ଓͰ͖ΔΑ͏ʹͨ͠

Slide 40

Slide 40 text

• RunnerͰ࢖͏AMIʹ༧Ί /etc/hosts Λম͍͓͖ͯɺࣾ಺DNSͷ໊લղܾ͕Ͱ ͖ΔΑ͏ʹͨ͠ • ͜͜ͰPackerΛར༻ ղܾࡦ1: ໊લղܾࡁͷ /etc/hostsΛম͘

Slide 41

Slide 41 text

• GatewayαʔόͷiptablesͰAWS͔Βͷ௨৴ΛڐՄ͢ΔΑ͏ʹͨ͠ • ͦͷ··΍ΔͱEC2Πϯελϯεͷ࡞Γ௚͠ͷ౓ʹૹ৴ݩͷIPΞυϨε͕ม ΘͬͯGatewayαʔόͰڐՄ͠Α͏͕ͳ͍ͷͰɺNAT GatewayΛ࢖ͬͯAWSͷ VPC͔ΒGatewayαʔό΁ग़Δ࣌ʹૹ৴ݩͷIPΞυϨεΛݻఆԽͨ͠ • NAT Gatewayʹ෇༩ͨ͠Elastic IPΛGatewayαʔόͰڐՄ͍ͯ͠Δ ղܾࡦ2: ΦϯϓϨͷຯํNAT Gateway

Slide 42

Slide 42 text

• ಛఆͷIPΞυϨε(ࠓճͷ৔߹Gateway)΁ͷ௨৴Λશ෦NAT GatewayΛ௨͢͜ ͱʹΑΓɺૹ৴ݩͷIPΞυϨεΛݻఆԽ͍ͯ͠Δ "[ NAT GatewayͷΠϝʔδ Subnet GitLab ΦϯϓϨ؀ڥ AmazonVPC ec2

Slide 43

Slide 43 text

• ಛఆͷIPΞυϨε(ࠓճͷ৔߹Gateway)΁ͷ௨৴Λશ෦NAT GatewayΛ௨͢͜ ͱʹΑΓɺૹ৴ݩͷIPΞυϨεΛݻఆԽ͍ͯ͠Δ "[ NAT GatewayͷΠϝʔδ Subnet Subnet NAT Gateway GitLab ΦϯϓϨ؀ڥ Gateway ec2 *1ΞυϨεΛݻఆ AmazonVPC

Slide 44

Slide 44 text

• NAT GatewayͷElastic IPΛGatewayͷnginxͰڐՄͯ͠΍Δ͜ͱʹΑΓɺ GoogleͷOAuthೝূΛճආ͢ΔΑ͏ʹͨ͠ ղܾࡦ3: httpܦ༝ͷΞΫηε΋NAT GatewayΛ௨͢

Slide 45

Slide 45 text

CIͷδϣϒؒͰେ༰ྔϑΝΠϧΛड͚౉ͤΔΑ͏ʹͨ͠ • ܦҢ ‣ VRoid StudioνʔϜͷਓʮδϣϒ͕ऴΘͬͯGitLabʹArtifactsΛΞοϓϩʔυ͠Α͏ͱ͢ΔͱΤ ϥʔʹͳΔʯ ‣ sue445ʮGitLabͷϩάݟͨΒ413Τϥʔ(Request Entity Too Large)ग़ͯ·͢ͶɻnginxͷΞοϓ ϩʔυ੍ݶʹҾ͔͔ͬͬͯΔΑ͏ͳͷͰGitLabଆͷΞοϓϩʔυαΠζ؇Ί·͕͢zipʹݻΊ ͨ࣌ͷϑΝΠϧαΠζͲΕ͘Β͍͋Γ·͢ʁʯ

Slide 46

Slide 46 text

CIͷδϣϒؒͰେ༰ྔϑΝΠϧΛड͚౉ͤΔΑ͏ʹͨ͠ VRoid StudioνʔϜͷਓ ʮ4GB΄͍͠Ͱ͢ʯʢݪจϚϚʣ sue445ʮʯ

Slide 47

Slide 47 text

• ͖ͬ͞ͷGatewayαʔό͸ࣾ಺։ൃશൠͰ࢖͍ͬͯΔͷͰɺGatewayͷଳҬ ͕٧·Δͱࣾ಺ͷ։ൃ͕શ෦ࢮ͵ • RailsΞϓϦͰ4GBͷϑΝΠϧͷΞοϓϩʔυͱ͔͢Δͱunicorn͕ṫࢮʹͳΔ ະདྷ͔͠ݟ͑ͳ͍ ‣ ஫ʣGitLab͸RailsΞϓϦ • AWS͔Β֎ʢΦϯϓϨͷGitLabʣʹग़͍ͯ࣌͘ͷ௨৴අ͕͔͔Δ ཁ໿͢Δͱී௨ͷWebΞϓϦʹڊେϑΝΠϧΛup͢Δͷ͸ਏ͍

Slide 48

Slide 48 text

• ΞϓϦ͔ΒಛผͳઃఆΛͤͣʹS3ʹΞΫηεͰ͖ΔΑ͏ʹͨ͠ • ΍Γํ ‣ ಛఆͷS3όέοτͷΈʹΞΫηεͰ͖ΔIAMϩʔϧΛ࡞੒ ‣ Docker Machine͕EC2ΠϯελϯεΛىಈ͢Δ࣌ͷΠϯελϯεϓϩϑΝΠϧʹ͜ͷIAM ϩʔϧΛઃఆ ‣ ͜͏͢Δ͜ͱͰRunnerଆ͸awscli͚ͩ༻ҙ͍ͯ͠Ε͹όέοτʹಡΈॻ͖Ͱ͖ΔɻʢΞϓ ϦଆͰΞΫηεΩʔͳͲͷઃఆෆཁʣ • ಉҰϦʔδϣϯ಺ͩͱEC2ͱS3ͰϑΝΠϧ΍ΓऔΓ͢Δ࣌ͷ௨৴අ͕͔͔Βͳ͍ͷ ΋خ͍͠ ղܾࡦ: S3ʹΞοϓϩʔυ͢ΔʢԦಓʣ

Slide 49

Slide 49 text

• લఏ ‣ GitLab Runnerʹ͸OffPeakͱ͍͏ઃఆ͕͋ͬͯɺʮۀ຿࣌ؒ಺͸ৗʹEC2ΠϯελϯεΛ1 ୆଴ػ͢Δ͕ɺۀ຿࣌ؒ֎΍౔೔͸଴ػͤ͞ͳ͍͜ͱͰίετΛԼ͛Δʯͱ͍͏͜ͱ͕ Մೳ ‣ https://docs.gitlab.com/runner/configuration/autoscale.html ‣ https://docs.gitlab.com/runner/configuration/advanced-configuration.html Runnerͷىಈ࣌ؒνϡʔχϯά

Slide 50

Slide 50 text

• લఏ ‣ ϐΫγϒGitLabͷ৔߹ԼهͷΑ͏ͳઃఆ ‣ ฏ೔10:00ʙ18:59͸εϙοτΠϯελϯεΛ࠷௿1୆଴ػͯ͠ɺδϣϒ͕ੵ·ΕͨΒଈϏ ϧυ։࢝Ͱ͖ΔΑ͏ʹͯ͠Δ ‣ ۀ຿࣌ؒ֎΍౔೔ɾਖ਼݄ɾGW͸εϙοτΠϯελϯεΛ଴ػͤͣ͞ɺδϣϒ͕ੵ·Εͨ ࣌఺ͰΠϯελϯεΛىಈ Runnerͷىಈ࣌ؒνϡʔχϯά

Slide 51

Slide 51 text

• ໰୊఺ ‣ δϣϒ͕ੵ·Ε͔ͯΒ࣮ࡍʹϏϧυ͕࢝·Δ·Ͱ࠷େ4෼൒͘Β͍͔͔ͬͯͨͷͰؤுͬ ͯνϡʔχϯά͔ͨͬͨ͠ ‣ ۀ຿࣌ؒ಺ͩͱEC2͕1୆Ҏ্଴ػͯ͠ΔͷͰؾʹͳΒͳ͍͚Ͳఆ࣌ա͗ͯpushͨ࣌͠ʹ Runnerͷ࣮ߦ·Ͱ͕͔͔࣌ؒΔ ‣ ىಈ͕஗͍ΑΓ଎͍ํ͕͍͍ ‣ ଎͞͸ਖ਼ٛɺ࣌͸ۚͳΓ Runnerͷىಈ࣌ؒνϡʔχϯά

Slide 52

Slide 52 text

• Docker Machine͸ϦϞʔτʹdocker͕Πϯετʔϧ͞Ε͍ͯͳ͍࣌ͷΈ dockerΠϯετʔϧͯͨ͠ͷͰɺdocker͕ΠϯετʔϧࡁͳΒ͜ͷॲཧΛε ΩοϓͰ͖Δͱ౿Μͩ ‣ https://github.com/docker/machine/blob/v0.16.0/libmachine/provision/utils.go#L30 ‣ Docker MachineͰىಈ͢ΔAMIʹdockerΛΠϯετʔϧ͓͚ͯͩ͘͠Ͱ4෼൒͔Β4෼ʹ୹ ॖͰ͖ͨ ղܾࡦ: AMIʹ༧ΊdockerΛೖΕ͓ͯ͘

Slide 53

Slide 53 text

• ݸਓతʹ͸΋͏ͪΐͬͱ୹ॖ͔͕ͨͬͨ͠ɺ͜ΕҎ্΍Ζ͏ͱ͢Δͱ Docker MachineຊମΛ͍͡Δඞཁ͕͋ͬͨͷͰஅ೦ • Machine࡞੒࣌ͷϩάΛશ෦ಡΜ͚ͩͲͲΕ͔1ͭͷॲཧ͕஗͍ͱ͍͏ΑΓ ΋ɺࡉ͔͍ॲཧ͕ͨ͘͞Μ͋ͬͯνϦπϞͰ4෼͔͔ͬͯΔͱ͍͏ҹ৅ͩͬ ͨ ղܾࡦ: AMIʹ༧ΊdockerΛೖΕ͓ͯ͘

Slide 54

Slide 54 text

• લఏ ‣ εϙοτΠϯελϯε͸AWS্ͷ༨৒ΠϯελϯεΛ҆͘࢖͑Δ࢓૊ΈͳͷͰɺAWSશମ ͷεϙοτΠϯελϯεͷࡏݿ͕ͳ͚Ε͹ىಈͰ͖ͳ͍ ‣ ͔͠͠εϙοτΠϯελϯε͕ރׇͨ࣌͠ʹࣾ಺ͷ։ൃ͕׬શʹࢭ·Δͷ͸͖͍ͭ εϙοτΠϯελϯεރׇରࡦ

Slide 55

Slide 55 text

• εϙοτΠϯελϯε͕ރׇͨ࣌͠ʹผͷΠϯελϯελΠϓ΍AZͰࢼ͢ ͳͲͷεϙοτΠϯελϯεΨνϟΛ΍ΔΑΓ͸ɺͬ͞͞ͱΦϯσϚϯυʹ શৼΓͨ͠ํ͕ૣ͘෮چͰ͖Δͱ͍͏൑அ • ࠓ·Ͱͷܦݧ্ɺͲ͔ͬ1ϲॴͰεϙοτΠϯελϯε͕ރׇͯ͠Δͱͦͷ पล΋͍͍ͩͨރׇͯ͠Δҹ৅ ղܾࡦ: ΦϯσϚϯυΠϯελϯεΛ࢖͏RunnerΛ࡞ͬͨ

Slide 56

Slide 56 text

• ΦϯσϚϯυΠϯελϯεΛ࢖͏Runner͸ϗοτελϯόΠʢRunnerͱͯ͠ ͸ಈ͍ͯΔ͕؅ཧը໘্Ͱ͸ແޮͳͷͰδϣϒׂ͕ΓৼΒΕͳ͍ʣͰ༻ҙ͠ ͓͍ͯͯɺGitLabͷ؅ཧը໘্Ͱ༗ޮԽͨ࣌͠ͷΈ࢖ΘΕΔΑ͏ʹͯ͠Δ ղܾࡦ: ΦϯσϚϯυΠϯελϯεΛ࢖͏RunnerΛ࡞ͬͨ

Slide 57

Slide 57 text

• εϙοτΠϯελϯεΛ׆༻͢Δ͜ͱͰϋΠεϖοΫͳCI؀ڥΛ௿Ձ֨Ͱӡ ༻Մೳ • CIʹݶΒͣ͜Ε͔Β΋શྗͰࣗಈԽ΍͍͖ͬͯ·͢ ·ͱΊ