Slide 1

Slide 1 text

© 2017 VASILY,Inc. CloudFormationͱOpsWorksʹΑΔ ܧଓతͳΠϯϑϥߋ৽ʹ͍ͭͯ Minami Aoyama Night#3
 2017/06/16 Fri. ޫ໺ୡ࿕

Slide 2

Slide 2 text

© 2017 VASILY,Inc. ࣗݾ঺հ ▸ 5BUTVSP.JUTVOPޫ໺ୡ࿕ ▸ Ϡϑʔגࣜձࣾ ▸ גࣜձࣾ7"4*-: ▸ ΠϯϑϥΤϯδχΞ ▸ 5XJUUFS(JU)VC2JJUB!LPUBUTV *DPOJMMVTUSBUFECZ:04)*
 IUUQTKBKQGBDFCPPLDPNZPTIJZPOF ฐٕࣾज़ސ໰·ͭ΋ͱΏ͖ͻΖࢯ

Slide 3

Slide 3 text

© 2017 VASILY,Inc. ຊ೔ͷओ໾ $MPVE'PSNBUJPO 0QT8PSLT

Slide 4

Slide 4 text

© 2017 VASILY,Inc. ໨࣍ ▸ ࣗݾ঺հ ▸ ੜ࢈ੑ޲্΁ͷϞνϕʔγϣϯ ▸ *20/ͱͦΕΛࢧ͑Δٕज़ ▸ ࣾ֎΁ͷల։ ▸ ՝୊ ▸ Πϯϑϥߏஙͷੜ࢈ੑ޲্ ▸ $MPVE'PSNBUJPO0QT8PSLT ▸ ز͔ͭͷ޻෉

Slide 5

Slide 5 text

© 2017 VASILY,Inc. ੜ࢈ੑ޲্΁ͷϞνϕʔγϣϯ

Slide 6

Slide 6 text

© 2017 VASILY,Inc. Ҏ্ͷϑΝογϣϯ&$αΠτ͔Βͷ΂ສ఺Λ௒͑Δ঎඼Λܝࡌ ݄ؒສਓҎ্͕ར༻͢Δ೔ຊ࠷େڃͷϑΝογϣϯαΠτ

Slide 7

Slide 7 text

© 2017 VASILY,Inc. Google Play ϕετΞϓϦ J04ΞϓϦ ɾ"QQ4UPSF#&45 ɾ&TTFOUJBMೝఆ "OESPJEΞϓϦ ɾ೥(PPHMF1MBZϕετΞϓϦ ɾ೥(PPHMF1MBZϕετΞϓϦ ɾ೥(PPHMF1MBZϕετΞϓϦ
 ɹɹϕετΠϊϕʔςΟϒΞϓϦେ৆ ɾ(PPHMF͔Βτοϓσϕϩούʔೝఆ ೥࿈ଓϕετΞϓϦड৆͸ ੈքͰ7"4*-:͚ͩ

Slide 8

Slide 8 text

© 2017 VASILY,Inc. IQONΛࢧ͑Δٕज़ ▸ ߴ౓ͳΞϓϦ։ൃٕज़ ▸ ֦ுੑͷߴ͍Ϋϩʔϥʔٕज़ ▸ ๲େͳϑΝογϣϯσʔλΛݩʹͨ͠ػցֶशɾը૾ղੳ ΫΤϦը૾ ݕग़ ݕࡧ

Slide 9

Slide 9 text

© 2017 VASILY,Inc. ଞࣾͱͷ࿈ܞࣄྫɿWowma! ▸ ,%%*ίϚʔεϑΥϫʔυגࣜձࣾ ▸ &$Ϟʔϧʮ8PXNBʯ΁
 ը૾ղੳٕज़Λఏڙ ▸ εφοϓࣸਅ͔Βண༻ΞΠςϜͱ
 ͦͷྨࣅΞΠςϜΛਪન ▸ ΞϓϦ։ൃͰ΋ڠྗ

Slide 10

Slide 10 text

© 2017 VASILY,Inc. ՝୊ɿ؅ཧωοτϫʔΫͷ૿Ճ αʔϏε"
 ʢӡ༻தʣ αʔϏε# ʢӡ༻தʣ αʔϏε$ ʢӡ༻தʣ *DPOTNBEFCZ'SFFQJLGSPNXXXqBUJDPODPNJTMJDFOTFECZ$$#: αʔϏε% ʢ৽ن։ൃʣ αʔϏε&
 ʢ৽ن։ൃʣ ɾɾɾ ॳظߏங ηΩϡϦςΟϧʔϧߋ৽ɺΦϓγϣϯมߋ ؅ཧऀʢޫ໺ʣ ӡ༻ෛՙ

Slide 11

Slide 11 text

© 2017 VASILY,Inc. ՝୊ɿ؅ཧωοτϫʔΫͷ૿Ճ αʔϏε"
 ʢӡ༻தʣ αʔϏε# ʢӡ༻தʣ αʔϏε$ ʢӡ༻தʣ αʔϏε% ʢ৽ن։ൃʣ αʔϏε&
 ʢ৽ن։ൃʣ ɾɾɾ ؅ཧऀʢޫ໺ʣ ॳظߏங
 ܾ·ͬͨखॱ͕ଘࡏ ηΩϡϦςΟϧʔϧߋ৽ɺΦϓγϣϯมߋ
 มߋཧ༝͸ʁมߋཤྺ͸ʁ ܦݧ஋ͷ஝ੵɾڞ༗ʹ΋՝୊ *DPOTNBEFCZ'SFFQJLGSPNXXXqBUJDPODPNJTMJDFOTFECZ$$#:

Slide 12

Slide 12 text

© 2017 VASILY,Inc. ՝୊ɿ؅ཧωοτϫʔΫͷ૿Ճ αʔϏε਺ ӡ༻ෛՙ ໨ࢦ͢΂͖ੈք ਏ͍ੈք

Slide 13

Slide 13 text

© 2017 VASILY,Inc. ՝୊ɿ؅ཧωοτϫʔΫͷ૿Ճ লྗԽɾޮ཰ԽɾจॻԽʹΑΔ
 ୯Ґ࣌ؒ͋ͨΓͷੜ࢈ੑ޲্͕ඞཁ αʔϏε"
 ʢӡ༻தʣ αʔϏε# ʢӡ༻தʣ αʔϏε$ ʢӡ༻தʣ αʔϏε% ʢ৽ن։ൃʣ αʔϏε&
 ʢ৽ن։ൃʣ ɾɾɾ ؅ཧऀʢޫ໺ʣ ॳظߏங
 ςϯϓϨʔτԽ ηΩϡϦςΟϧʔϧߋ৽ɺΦϓγϣϯมߋ
 มߋҙਤɺཤྺͷه࿥ *DPOTNBEFCZ'SFFQJLGSPNXXXqBUJDPODPNJTMJDFOTFECZ$$#:

Slide 14

Slide 14 text

© 2017 VASILY,Inc. ໨࣍ ▸ ࣗݾ঺հ ▸ ੜ࢈ੑ޲্΁ͷϞνϕʔγϣϯ ▸ *20/ͱͦΕΛࢧ͑Δٕज़ ▸ ࣾ֎΁ͷల։ ▸ ՝୊ ▸ Πϯϑϥߏஙͷੜ࢈ੑ޲্ ▸ $MPVE'PSNBUJPO0QT8PSLT ▸ ز͔ͭͷ޻෉

Slide 15

Slide 15 text

© 2017 VASILY,Inc. Πϯϑϥߏஙͷੜ࢈ੑ޲্

Slide 16

Slide 16 text

© 2017 VASILY,Inc. ໨ࢦ࢟͢ ▸ ࡞ۀ͕ه࿥ɾ࠶ݱՄೳͰ͋Δ͜ͱ ▸ ઃఆͷมߋ͕௥੻ՄೳͰ͋Δ͜ͱ ▸ ઃఆͷมߋΛ൓ө͢Δखॱཱ͕֬͞Ε͍ͯΔ͜ͱ

Slide 17

Slide 17 text

© 2017 VASILY,Inc. ຊ೔ͷओ໾ $MPVE'PSNBUJPO 0QT8PSLT

Slide 18

Slide 18 text

© 2017 VASILY,Inc. CloudFormationͱOpsWorksʹΑΔߏ੒؅ཧ &-# &$ 3%4 4 $MPVE'SPOU *". FUD 4VCOFU ωοτϫʔΫ ߏ੒؅ཧ Πϯελϯε ߏ੒؅ཧ

Slide 19

Slide 19 text

© 2017 VASILY,Inc. CloudFormationͱOpsWorksʹΑΔߏ੒؅ཧ &-# &$ 3%4 4 $MPVE'SPOU *". FUD 4VCOFU

Slide 20

Slide 20 text

© 2017 VASILY,Inc. CloudFormationͱOpsWorksʹΑΔߏ੒؅ཧ &-# &$ 3%4 4 $MPVE'SPOU *". FUD 4VCOFU

Slide 21

Slide 21 text

© 2017 VASILY,Inc. CloudFormation ▸ "84ͷϦιʔεʢ71$ɺ4VCOFUɺ&-#ɺ&$ɺ3%4ɺʣΛʮςϯϓϨʔτʯͰ؅ཧ ▸ ςϯϓϨʔτ͸+40/:".-Ͱهड़͞ΕΔςΩετ ▸ ςϯϓϨʔτΛݩʹ࡞ΒΕΔϦιʔεͷ·ͱ·ΓΛʮελοΫʯͱݺͿ ▸ ʮύϥϝʔλʯΛ࢖ͬͯɺςϯϓϨʔτ͔ΒҟͳΔ஋Λ࣋ͬͨελοΫΛ࡞੒Մೳ ▸ ྫ͑͹ɺ71$΍4VCOFUͷ$JES#MPDLΛม͑Δɺ&$ΠϯελϯελΠϓΛม͑Δ ▸ &$ͷ44)ݤొ࿥ͳͲɺͰ͖ͳ͍͜ͱ΋एׯ͋Δ

Slide 22

Slide 22 text

© 2017 VASILY,Inc. AWSTemplateFormatVersion: 2010-09-09 Parameters: VPCCidrBlock: Type: 'String' Default: '10.0.0.0/16' PublicFirstCidrBlock: Type: 'String' Default: '10.0.0.0/24' Resources: # ------------------------------ EC2VPC: Type: 'AWS::EC2::VPC' Properties: CidrBlock: !Ref VPCCidrBlock EnableDnsSupport: true EnableDnsHostnames: true InstanceTenancy: 'default' # ------------------------------ EC2SubnetPublicFirst: Type: 'AWS::EC2::Subnet' Properties:
 VpcId: !Ref EC2VPC AvailabilityZone: Fn::Select: - 1 - Fn::GetAZs: !Ref 'AWS::Region' CidrBlock: !Ref PublicFirstCidrBlock MapPublicIpOnLaunch: true ྫ 71$ͱ4VCOFUΛ ࡞੒͢ΔςϯϓϨʔτ ύϥϝʔλ 71$ఆٛ 4VCOFUఆٛ

Slide 23

Slide 23 text

© 2017 VASILY,Inc. AWSTemplateFormatVersion: 2010-09-09 Parameters: VPCCidrBlock: Type: 'String' Default: '10.0.0.0/16' PublicFirstCidrBlock: Type: 'String' Default: '10.0.0.0/24' Resources: # ------------------------------ EC2VPC: Type: 'AWS::EC2::VPC' Properties: CidrBlock: !Ref VPCCidrBlock EnableDnsSupport: true EnableDnsHostnames: true InstanceTenancy: 'default' # ------------------------------ EC2SubnetPublicFirst: Type: 'AWS::EC2::Subnet' Properties:
 VpcId: !Ref EC2VPC AvailabilityZone: Fn::Select: - 1 - Fn::GetAZs: !Ref 'AWS::Region' CidrBlock: !Ref PublicFirstCidrBlock MapPublicIpOnLaunch: true ྫ 71$ͱ4VCOFUΛ ࡞੒͢ΔςϯϓϨʔτ ύϥϝʔλࢀর Ϧιʔεࢀর ૊ΈࠐΈؔ਺ͰΑΓॊೈͳॲཧ΋Մೳ ʮ͋ΔϦʔδϣϯͷͭ໨ͷ";Λऔಘʯ

Slide 24

Slide 24 text

© 2017 VASILY,Inc. CloudFormation ▸ ৽نߏங࣌ͷʮS3όέοτ࡞ͬͯɺVPC࡞ͬͯɺDHCPΦϓγϣϯ࡞ͬͯɺNATήʔτ΢ΣΠ ࡞ͬͯɺϧʔτςʔϒϧ࡞ͬͯɺαϒωοτ࡞ͬͯɺϧʔτ࡞ͬͯɺΠϯλʔωοτήʔτ΢Σ Π࡞ͬͯɺ؂ࠪϩάΛ༗ޮʹͯ͠ɺ౿Έ୆࡞ͬͯɺΞϓϦέʔγϣϯαʔό࡞ͬͯɺηΩϡϦςΟ άϧʔϓ࡞ͬͯɺ...ʯΛຕͷςΩετͰදݱ͢Δ ▸ :".-͕ར༻Ͱ͖ΔΑ͏ʹͳͬͨͨΊɺઃܭҙਤΛίϝϯτͰ࢒͢͜ͱ΋Մೳ ▸ ӡ༻தͷมߋ΋ςϯϓϨʔτ͕ৗʹϚελʔͱͯ͠ػೳ͢Δ

Slide 25

Slide 25 text

© 2017 VASILY,Inc. CloudFormationͱOpsWorksʹΑΔߏ੒؅ཧ &-# &$ 3%4 4 $MPVE'SPOU *". FUD 4VCOFU

Slide 26

Slide 26 text

© 2017 VASILY,Inc. OpsWorks ▸ 0QT8PSLTελοΫͱ0QT8PSLTGPS$IFG"VUPNBUFͷछྨ͕͋Δ ▸ લऀ͸$IFGϕʔεͷΞϓϦέʔγϣϯ؅ཧαʔϏεʢฐࣾͰར༻͍ͯ͠Δͷ͸ͪ͜Βʣ ▸ ޙऀ͸Ϛωʔδυ$IFG"VUPNBUF ▸ ʮελοΫʯͷதʹɺෳ਺ͷʮϨΠϠʔʯΛ࡞੒ʢ$MPVE'PSNBUJPOͷελοΫͱ͸ผʣ ▸ ΠϯελϯεΛʮϨΠϠʔʯʹొ࿥ ▸ ϨΠϠʔʹର࣮ͯ͠ߦ͢ΔDPPLCPPLΛઃఆ ▸ ελοΫʷ*".Ϣʔβ୯ҐͰɺ44)ݤɾTVEPݖݶͷ؅ཧ͕Մೳ ▸ ྫ͑͹ɺ*".ϢʔβʮBMJDFʯΛελοΫʢ"1*ϨΠϠʔΛ࣋ͭʣʹ௥Ճ͠TVEPݖݶΛ෇༩
 "1*ϨΠϠʔͷΠϯελϯεʹϢʔβ͕௥Ճ͞Εɺ44)TVEP͕ར༻ՄೳʹͳΔ

Slide 27

Slide 27 text

© 2017 VASILY,Inc.

Slide 28

Slide 28 text

© 2017 VASILY,Inc.

Slide 29

Slide 29 text

© 2017 VASILY,Inc. OpsWorks ▸ 0QT8PSLTࣗମ΋$MPVE'PSNBUJPOͰ؅ཧՄೳ ▸ 0QT8PSLTʹొ࿥͞ΕͨΠϯελϯε͸ىಈ࣌ʹ·ͣ$IFG͕࣮ߦ͞ΕΔ ▸ ೚ҙͷλΠϛϯάͰɺ8FC6*͔Β$IFGͷ࠶࣮ߦ΋Մೳ ▸ 44)ݤΛ࣋ͨͳ͍σϑΥϧτϢʔβʢ"NB[PO-JOVYͳΒFDVTFSʣ΋࡞੒Մೳ

Slide 30

Slide 30 text

© 2017 VASILY,Inc. CloudFormationͱOpsWorksʹΑΔߏ੒؅ཧ &-# &$ 3%4 4 $MPVE'SPOU *". FUD 4VCOFU

Slide 31

Slide 31 text

© 2017 VASILY,Inc. ςετͱσϓϩΠ ▸ ςϯϓϨʔτͷݕূͱ൓өΛ෼͔Γ΍͍͢Ϩʔϧʹ৐ͤΔ ▸ ςετϑΣʔζͰ$MPVE'PSNBUJPOςϯϓϨʔτΛݕূ ▸ BXTDMPVEGPSNBUJPOWBMJEBUFUFNQMBUFUFNQMBUF ▸ NBTUFSϒϥϯν΁ͷϚʔδͱಉ࣌ʹ$MPVE'PSNBUJPOͷʮมߋηοτʯΛ࡞੒ ▸ Ϧιʔεͷมߋ಺༰ʢߋ৽ɾஔ׵ɾ࡟আʣ͕8FCίϯιʔϧʹͯ֬ೝՄೳͳঢ়ଶʹͳΔ ▸ ໰୊ͳ͚Ε͹ʮ൓өʯΛ࣮ߦ ▸ $PEF1JQFMJOF͸ະ࢖༻ ▸ ѻ͑ΔςϯϓϨʔτʹαΠζ্ݶ͕͋ΔʢCZUFT

Slide 32

Slide 32 text

© 2017 VASILY,Inc. ςϯϓϨʔτͷݕূ มߋηοτͷ࡞੒ มߋ಺༰ͷ֬ೝɾঝೝ ςετͱσϓϩΠ

Slide 33

Slide 33 text

© 2017 VASILY,Inc. &-# &$ 3%4 4 $MPVE'SPOU *". FUD 4VCOFU ωοτϫʔΫ ߏ੒؅ཧ Πϯελϯε ߏ੒؅ཧ ςετͱσϓϩΠ

Slide 34

Slide 34 text

© 2017 VASILY,Inc. ໨ࢦ࢟͢ͱୡ੒ঢ়گ ▸ ✅࡞ۀ͕ه࿥ɾ࠶ݱՄೳͰ͋Δ͜ͱ ▸ $MPVE'PSNBUJPOͷςϯϓϨʔτʹߏ੒ͷҰ੾Λهड़ɾิ଍ίϝϯτ௥Ճ ▸ 0QT8PSLTʹΑΔߏ੒؅ཧ ▸ ✅ઃఆͷมߋ͕௥੻ՄೳͰ͋Δ͜ͱ ▸ (JU)VCʹΑΔςϯϓϨʔτͷมߋཤྺͱ$MPVE'PSNBUJPOଆͷมߋཤྺ ▸ ✅ઃఆͷมߋΛ൓ө͢Δखॱཱ͕֬͞Ε͍ͯΔ͜ͱ ▸ $JSDMF$*ʹΑΔςϯϓϨʔτͷݕূͱߋ৽ηοτ࡞੒ ▸ ࠷ऴతͳ൓ө͸ਓͷखΛհ͢ʢա౓ͳࣗಈԽ͸ආ͚Δʣ

Slide 35

Slide 35 text

© 2017 VASILY,Inc. ز͔ͭͷ޻෉

Slide 36

Slide 36 text

© 2017 VASILY,Inc. CloudFormation Stackͷ෼཭ํ਑ ▸ *OGSB4UBDLͱ4FSWJDF4UBDLʹ෼཭ ▸ *OGSB4UBDL"84ΞΧ΢ϯτ୯ҐͰͭ ▸ *".Ϣʔβ΍$MPVE5SBJMͳͲ ▸ 4FSWJDF4UBDLαʔϏεͷ؀ڥ୯Ґʢྫ͑͹QSPEʣ͝ͱʹͭ ▸ 4όέοτ΍71$ͳͲ ▸ 4FSWJDF4UBDL͸ಉ͡ςϯϓϨʔτͷύϥϝʔλΛมߋͯ͠࡞੒͞ΕΔ ▸ ͋Δ"84ΞΧ΢ϯτͰϢχʔΫʹඞཁͳ΋ͷͱෳ਺ଘࡏ͠͏Δ΋ͷΛ෼཭͓ͯ͘͠

Slide 37

Slide 37 text

© 2017 VASILY,Inc. CloudFormation Stackͷ෼཭ํ਑ *". 4 αʔϏε༻ςϯϓϨʔτ Πϯϑϥ༻ςϯϓϨʔτ *DPOTNBEFCZ'SFFQJLGSPNXXXqBUJDPODPNJTMJDFOTFECZ$$#: ɾɾɾ ඞཁʹԠͯ͡ɺ αʔϏε༻ςϯϓϨʔτͷ ύϥϝʔλΛมߋ͠࡞੒

Slide 38

Slide 38 text

© 2017 VASILY,Inc. OpsWorksͱAutoScaling ▸ 0QT8PSLT͸ศརͳ൒໘ɺ੍໿΋͋Δ ▸ "-#ͷαϙʔτ͕ͳ͍ɺ6TFS%BUBͷαϙʔτ͕ͳ͍ͳͲ ▸ ೚ҙͷ&$ΠϯελϯεΛޙ෇Ͱ0QT8PSLTͷ؅ཧԼʹஔ͚Δ͜ͱΛར༻ ▸ $MPVE'PSNBUJPOʹͯ6TFS%BUB෇͖ͷ"VUP4DBMJOHΛఆٛ ▸ 6TFS%BUBͰඞཁͳॲཧ0QT8PSLT΁ͷొ࿥ ▸ 0QT8PSLTͷొ࿥ʹඞཁͳ*%͸ɺ$MPVE'PSNBUJPOͷ૊ΈࠐΈؔ਺ʹΑΔࢀরͰऔಘͰ͖Δ

Slide 39

Slide 39 text

© 2017 VASILY,Inc. OpsWorksͱAutoScaling AutoScalingLaunchConfiguration: Type: 'AWS::AutoScaling::LaunchConfiguration' Properties: IamInstanceProfile: !Ref IAMInstanceProfile ImageId: !Ref AMI InstanceType: 'm4.large' UserData: Fn::Base64: !Sub - | #cloud-config repo_update: true repo_upgrade: security packages: - python-pip runcmd: - LC_ALL=C sudo pip install awscli - export INSTANCE_ID=$(/usr/local/bin/aws opsworks --region us-east-1 register --infrastructure-class ec2 --stack-id ${OpsWorksStackId} --local --use-instance-profile 2>&1 | grep 'Instance ID' | grep -oE '[a-z0-9\-]+$') - while ! /usr/local/bin/aws opsworks --region us-east-1 assign-instance --instance-id $INSTANCE_ID --layer-ids $ {OpsWorksLayerId}; do echo 'wait...'; sleep 20; done - { OpsWorksStackId: !Ref OpsWorksStack, OpsWorksLayerId: !Ref OpsWorksLayer } 6TFS%BUB͔Β0QT8PSLT΁ొ࿥͢Δྫ

Slide 40

Slide 40 text

© 2017 VASILY,Inc. ·ͱΊ

Slide 41

Slide 41 text

© 2017 VASILY,Inc. Πϯϑϥ෦෼ͷੜ࢈ੑ޲্΁ͷऔΓ૊Έ ▸ αʔϏε਺ͷ૿Ճͱӡ༻ෛՙͷ૿ՃΛઢܗʹ͠ͳ͍࢓૊Έ ▸ $MPVE'PSNBUJPOͱ0QT8PSLTʹΑΔΠϯϑϥͷจॻԽɾ࠶ར༻ ▸ $JSDMF$*ʹΑΔςετͱσϓϩΠ

Slide 42

Slide 42 text

© 2017 VASILY,Inc. ஥ؒืूத IUUQTXXXXBOUFEMZDPNDPNQBOJFTWBTJMZ