Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWSを使っているならOpsWorksでDevOpsしよう!
Search
Daiki Hirakata
August 29, 2016
Technology
1.8k
1
Share
AWSを使っているならOpsWorksでDevOpsしよう!
2016/8/24に行った以下のイベントで使ったスライドです。
http://isao.connpass.com/event/37731/
Daiki Hirakata
August 29, 2016
More Decks by Daiki Hirakata
See All by Daiki Hirakata
Firestoreコスト圧縮の旅
bigplants
0
51
Rails on Docker
bigplants
2
580
Road to k8s
bigplants
0
280
Next Level Git
bigplants
0
660
Other Decks in Technology
See All in Technology
インフラが苦手でも大丈夫! 紙芝居 Kubernetes -WWGT 10周年編-
aoi1
1
310
開発を止めない CI/CD ~CI Visibilityによる継続的最適化~
pensuke628
0
210
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
0
240
食べログのサーキットブレーカー導入を振り返って
atpons
1
150
『家族アルバム みてね』における インシデント対応との向き合い方 / Approach incident response in Family Album
kohbis
2
270
エンジニアは生成AIと どのように向き合うべきか? ことばの意味という観点から
verypluming
3
300
Gradle×GitHub_ActionsでCI時間を約50%短縮 ジョブ分割の設計と落とし穴 / Cutting CI Time by ~50% with Gradle and GitHub Actions: Job-Splitting Design and Pitfalls
takatty
0
540
関西に縁あるMicrosoft MVPsが語るCopilotの未来
kasada
0
450
GitHub Copilot CLIでWebアクセシビリティを改善した話
tomokusaba
0
140
Claude Codeですべての日常業務を爆速化しよう!
minorun365
PRO
16
16k
基礎から解説!Icebergで紐解くSnowflake×Databricks連携の現在地
cm_yasuhara
0
400
Unlocking the Apps
pimterry
0
120
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
We Are The Robots
honzajavorek
0
230
The Pragmatic Product Professional
lauravandoore
37
7.3k
Faster Mobile Websites
deanohume
310
31k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Color Theory Basics | Prateek | Gurzu
gurzu
0
320
Are puppies a ranking factor?
jonoalderson
1
3.4k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
160
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
260
Accessibility Awareness
sabderemane
1
130
The Cult of Friendly URLs
andyhume
79
6.9k
New Earth Scene 8
popppiees
3
2.3k
Transcript
Twitter: #ISAOcorp AWSΛͬͯΔͳΒOPSWORKSͰ DEVOPS͠Α͏ʂ @BIGPLANTS
Twitter: #ISAOcorp ࣗݾհ ฏܗ େथ @BIGPLANTS ▸ ࢁܗݝग़ 34ࡀ ABܕ
▸ גࣜձࣾISAOྺ 4 ▸ ιϑτΣΞΤϯδχΞྺ 6 ▸ OpsWorksྺ 3 ▸ ಘҙݴޠPHP, Rubyগʑ ▸ ؔ৺ࣄΞδϟΠϧɺϦʔϯελʔτΞο ϓɺDevOpsɺTDDɺDDD ▸ ࠓ5݄ʹୈҰࢠ͕ੜ͠ΠΫϝϯΤϯδ χΞͱͯ͠ҭࣇฃಆதɻ
Twitter: #ISAOcorp ࣗݾհ OpsWorksͱԶ ▸ AWSͷOpsWorks։ൃνʔϜ͔ΒҙݟΛٻΊΒΕͨ࣌ɺૉ ʹʮOpsWorksؒҧ͍ͳ͘কདྷͷAWSͷओྗαʔϏε ʹͳΔͱ֬৴͍ͯ͠ΔͷͰվળΨϯΨϯ͓ئ͍͠·͢ʯͱ ͑ͨ͘Β͍OpsWorksΛѪ͍ͯ͠·͢w ▸
৭ʑؾ͍ͭ͠Ͱ͕͢ɻɻw
Twitter: #ISAOcorp ࣗݾհ ԶͷϓϩδΣΫτ “Goalous” Goalous: www.goalous.com
Twitter: #ISAOcorp GOALOUSͷ։ൃʹ͍ͭͯ GoalousͷAWSڥ
Twitter: #ISAOcorp GOALOUSͷ։ൃʹ͍ͭͯ Goalousͷٕज़ελοΫ
Twitter: #ISAOcorp GOALOUSͷ։ൃʹ͍ͭͯ GoalousͷDeploy Routine ཁ݅Λ(JU)VCJTTVFʹॻ͘ ͔ΜΜϘʔυͰશମͷਐḿΛཧ (JU)VCJTTVFʹਐḿΛ͢ σΟεΧογϣϯ (JU)VCͰίʔυϨϏϡʔ
Ϛʔδ͓Αͼ σϓϩΠ
Twitter: #ISAOcorp ΞδΣϯμ ࠓճ͢͜ͱ ▸ ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DevOpsͷ৺ಘ ʹ͍ͭͯ ▸ DevOpsΛࢧ͑Δपลπʔϧʹ͍ͭͯ ▸
OpsWorksͷ֓ཁʹ͍ͭͯ ▸ OpsWorksΛ࣮ۀʹ׆༻͢ΔͨΊͷTips ▸ ࠓ·Ͱىͬͨ͜ͱղܾํ๏ ▸ ·ͱΊ
Twitter: #ISAOcorp ΞδΣϯμ ࠓճ͞ͳ͍ࣄ ▸ Chefͷৄࡉʹ͍ͭͯ ▸ OpsWorksͷৄࡉͳ༷ʹ͍ͭͯ ▸ पลπʔϧͷৄࡉʹ͍ͭͯ
Twitter: #ISAOcorp ΞδΣϯμ ▸ ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DevOpsͷ৺ಘ ʹ͍ͭͯ ▸ DevOpsΛࢧ͑Δपลπʔϧʹ͍ͭͯ ▸ OpsWorksͷ֓ཁʹ͍ͭͯ
▸ OpsWorksΛ࣮ۀʹ׆༻͢ΔͨΊͷTips ▸ ࠓ·Ͱىͬͨ͜ͱղܾํ๏ ▸ ·ͱΊ
Twitter: #ISAOcorp ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DEVOPSͷ৺ಘʹ͍ͭͯ What’s DevOps? ▸ ։ൃ୲ऀ(Dev)ͱӡ༻୲ऀ(Ops)͕࿈ܞͯ͠ڠྗ͢Δ։ൃ ख๏Λ͢͞ɻ ▸ DevOpsͷ࣮ݱʹߏཧπʔϧͰ͋ΔChefPuppet͕
༻͍ΒΕΔ͜ͱ͋ΓɺDevOpsͱ͍͏ޠ͔۟Β͜͏ͨ͠ πʔϧ͕Πϝʔδ͞ΕΔ͜ͱ͋Δɻ
Twitter: #ISAOcorp ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DEVOPSͷ৺ಘʹ͍ͭͯ What’s DevOps?
Twitter: #ISAOcorp ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DEVOPSͷ৺ಘʹ͍ͭͯ ߟ͑Δ͖ࣄ(1) ▸ ։ൃνʔϜͱӡ༻νʔϜͷίϛϡχέʔγϣϯʹ͍ͭͯ ▸ ίʔυϕʔεͷίϛϡέʔγϣϯΛࢦ͢͠ɻto be programable.
▸ ৽͍͠։ൃऀ͕νʔϜʹࢀՃͨ͠ΒͲΜͳΦϖϨʔγϣϯ͕ඞཁ͔ʁ ▸ ༷ʑͳΦϖϨʔγϣϯͷίετΛࢼࢉ͠Α͏ɻ ▸ ͳΔ͘γϯϓϧͰগͳ͍खॱΛ৺ֻ͚Δ͠ɻ ▸ ࢀՃোนͳΔ͘ഉআ͢ΔɻίϯτϦϏϡʔτ͍͢͠ڥΛ৺ֻ͚Δɻ ▸ OSSͷΞϓϩʔνΛࢀߟʹ͢ΔɻΨΠυΛॆ࣮ͤ͞Δɻ ▸ ςελϒϧɻ
Twitter: #ISAOcorp ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DEVOPSͷ৺ಘʹ͍ͭͯ ߟ͑Δ͖ࣄ(2) ▸ deployखॱ ▸ ԿεςοϓͷΦϖϨʔγϣϯ͔ʁͳΔ͘গͳ͍εςοϓΛ৺ֻ͚Δɻ ▸ ϩʔϧόοΫՄೳ͔ʁ
▸ ϩʔΧϧڥɺεςʔδϯάڥɺຊ൪ڥͷࠩҟΛѲ͍ͯ͠Δ͔ʁ ▸ ۃྗࠩҟগͳ͘͠Α͏ɻ ▸ εέʔϥϏϦςΟ ▸ αʔόͷ૿ݮ؆୯ʹͰ͖Δ͔ʁ to be immutable.
Twitter: #ISAOcorp ΞδΣϯμ ▸ ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DevOpsͷ৺ಘ ʹ͍ͭͯ ▸ DevOpsΛࢧ͑Δपลπʔϧʹ͍ͭͯ ▸ OpsWorksͷ֓ཁʹ͍ͭͯ
▸ OpsWorksΛ࣮ۀʹ׆༻͢ΔͨΊͷTips ▸ ࠓ·Ͱىͬͨ͜ͱղܾํ๏ ▸ ·ͱΊ
Twitter: #ISAOcorp DEVOPSΛࢧ͑Δपลπʔϧʹ͍ͭͯ Version Control System ▸ ͯ͢ͷߟ͑ํ͜͜ʹؼ݁͢Δɻ ▸ ڥυΩϡϝϯτͯ͢όʔδϣϯཧ͞Ε͍ͯΔ͖ɻ
▸ ݴ͏·Ͱແ͍͕GitҰʂϦʔφε͞ΜʹܟҙΛɻ ▸ GitHub͕σϕϩούͷίϛϡχςΟΛരൃతʹՃͤͨ͞ʂ
Twitter: #ISAOcorp DEVOPSΛࢧ͑Δपลπʔϧʹ͍ͭͯ CI Tool ▸ “ܧଓతΠϯςάϨʔγϣϯɺCIʢӳ: continuous integrationʣ ▸
ϏϧυɺςετΛܧଓతʹ࣮ߦ͢Δɻ ▸ gitͷcommitʹ࿈ಈͯ͠commit୯ҐͰςετͨ͠Γɻ ▸ ݸਓతʹJenkins͖͡Όͳ͍ɻଐਓԽ͢Δ(ଏʹݴ͏ Jenkins͓͡͞ΜʹͳΔ)͠ɺͳΜͰΞϦʹͳͬͯ͠·͏ɻ
Twitter: #ISAOcorp DEVOPSΛࢧ͑Δपลπʔϧʹ͍ͭͯ CI Tool 2016.08.22࣌ ग़యݩ:stackshare http://stackshare.io/continuous-integration
Twitter: #ISAOcorp DEVOPSΛࢧ͑Δपลπʔϧʹ͍ͭͯ Provisioning Tools ▸ ChefϑϧελοΫ&ઌൃɻ ▸ ߏཧπʔϧͷதͰݱࡏਓؾ͕͋ΔͷAnsibleɻ 2016.08.22࣌
ग़యݩ:stackshare http://stackshare.io/server-configuration-and- automation
Twitter: #ISAOcorp DEVOPSΛࢧ͑Δपลπʔϧʹ͍ͭͯ Other ▸ docker ▸ Vagrant
Twitter: #ISAOcorp ΞδΣϯμ ▸ ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DevOpsͷ৺ಘ ʹ͍ͭͯ ▸ DevOpsΛࢧ͑Δपลπʔϧʹ͍ͭͯ ▸ OpsWorksͷ֓ཁʹ͍ͭͯ
▸ OpsWorksΛ࣮ۀʹ׆༻͢ΔͨΊͷTips ▸ ࠓ·Ͱىͬͨ͜ͱղܾํ๏ ▸ ·ͱΊ
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ OpsWorks ▸ OpsWorksͬͯԿʁ ▸ AWSαʔϏεͷҰͭͰελοΫΛ·ͱΊͯཧ͢ΔҝͷΈɻ ▸ ChefΛͬͯϓϩϏδϣχϯά͢Δɻ
▸ ͲΜͳγνϡΤʔγϣϯͰ༗ޮ׆༻Ͱ͖Δͷʁ ▸ Α͋͘ΔελοΫͰELBʹΞϓϦέʔγϣϯαʔόΛͿΒԼ͛ͯɺDBRDSͬͯΔ ߹ͳͲΛͬͯΔ߹ͳͲɻ ▸ ΞϓϦέʔγϣϯͷσϓϩΠɺߏཧΛू͍ͨ͠߹ͳͲɻ ▸ OpsWorksͷৄ͍֓͠ཁͪ͜Β ▸ AWS https://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/welcome.html
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ શମ૾
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ શମ૾ ▸ ࠷্Ґͷ֓೦͕stack ▸ ͦͷԼ͕Layerͱ͍͏֓೦ ▸ ͜͜ॏཁʂ
▸ ΞϓϦέʔγϣϯαʔόͷ͋ΒΏΔͷΛཧ͢Δɻద༻͢ΔϨγϐͱ͔ɻ ▸ Πϯελϯε୯ମͰͳ͘LayerΛҙࣝ͢ΔΑ͏ʹ͢Δɻ ▸ CookbookͷϦϙδτϦΛඥ͚Δ ▸ ΞϓϦέʔγϣϯͷϦϙδτϦΛඥ͚Δ ▸ ELBΛඥ͚Δ ▸ RDSΛඥ͚Δ ▸ ৄ͘͠ɺҎԼͷϋϯζΦϯࢿྉΛ http://www.slideshare.net/AmazonWebServicesJapan/aws-opsworks
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ OpsWorksͷಛ(1) ▸ ελοΫΛؙ͝ͱཧͰ͖Δɻ ▸ Πϯελϯεͷछྨ ▸ 24/7
: ͍ͭͰखಈͰ্͛Լ͛Ͱ͖Δɻ ▸ Time-based : ىಈΛεέδϡʔϦϯάͰ͖Δɻ ▸ ෛՙ͕͔͔Δ࣌ؒଳ༵Λࢦఆͯ͠ىಈΛࢦఆՄೳɻ ▸ Load-based : CPUɺϝϞϦ༻ʹΑͬͯΦʔτεέʔϦϯάͰ͖Δɻ ▸ ͜ͷΦʔτεέʔϧ࣮༻͍͠ɻɻChefΛ࣮ߦ͢ΔͨΊΠϯε λϯεͷىಈ͕࣌ؒͲ͏͔͔ͯͬͯ͠͠·͏ɻ
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ OpsWorksͷಛ(2) ▸ ϥΠϑαΠΫϧΠϕϯτͱ͍͏֓೦ͰɺΠϯελϯεىಈ࣌ɺ deploy࣌ͳͲͦΕͧΕͰద༻͢ΔϨγϐΛࢦఆͰ͖Δɻ ▸ deployͷϩʔϧόοΫͰ͖Δɻ ▸
ελοΫΛΫϩʔϯͰ͖Δɻ ▸ ઃఆΛͯ͢Ҿ͖ܧ͛Δɻ ▸ ຊ൪ڥ͔ΒΫϩʔϯͯ͠εςʔδϯάڥΛߏங͢Δͱ ͔ɻ
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ Lifecycle Event(Α͘͏ͭ) ▸ Setup ▸ Πϯελϯεىಈ࣌ʹ࣮ߦ͞ΕΔɻ ▸
ΊͪΌͪ͘Ό͏ͱ͜Ζɻ ▸ Deploy ▸ σϓϩΠͷࢦࣔΛͨ࣌͠ʹൃੜ͢Δɻ ▸ ΊͪΌͪ͘Ό͏ͱ͜Ζɻ ▸ Configure ▸ Πϯελϯε͕ىಈɺఀࢭͨ͠ࡍʹε λοΫͷͯ͢ͷΠϯελϯεͰൃ ੜ͢ΔɻΠϯελϯεͷIPΛશΠϯε λϯεͰཧ͍ͯ͠Δ࣌ͱ͔͑Δɻ
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ Lifecycle Event(͋·ΓΘͳ͍ͭ) ▸ Undeploy ▸ ΞϓϦέʔγϣϯΛআ ͨ࣌͠ʹൃੜɻ
▸ Shutdown ▸ ΠϯελϯεΛఀࢭ͢Δ ࣌ʹൃੜ͢Δ ▸ ޙॲཧతͳͷɻԿ͔͠ ΒͷଓͬͨΓɻ
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ OpsWorksͷΠέͯΔͱ͜Ζ ▸ ChefͷݟΛ׆͔ͤΔ ▸ AWSͷطଘϦιʔεΛར༻Ͱ͖Δ ▸ AMIΛར༻Ͱ͖Δ
▸ ϦιʔεΛϨΠϠ୯ҐͰϞχλͰ͖Δ ▸ ϦιʔεΛεέδϡʔϦϯάͰ͖Δ ▸ ELBͷඥ͚Λࣗಈతʹͬͯ͘ΕΔ
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ OpsWorksͷΠέͯͳ͍ͱ͜Ζ(ͯ͠ཉ͍ͦ͠ͷ̍) ▸ Πϯελϯεͷىಈ͕͍ ▸ LayerͱAppͷඥ͚͕ͳ͍(ͳͥͳͷ͔ٙ͘͢͝)ͷͰෳ LayerͰͦΕͧΕผAppΛdeploy͢Δͷ͕໘ɻશͯͷ Layerʹdeployࢦ͕ࣔඈΜͰ͠·͏ɻ
▸ Ͱ͖ͳ͍Θ͚Ͱͳ͍ɻσϓϩΠϑοΫΛར༻ͯ͠ΞϓϦ έʔγϣϯ໊Ͱஅ͢ΕՄೳɻ
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ OpsWorksͷΠέͯͳ͍ͱ͜Ζ(ͯ͠ཉ͍ͦ͠ͷ̎) ▸ instance storeΛར༻ͨ͠߹ͷAMIͷΦϖϨʔγϣϯ͕ ࡶɻ ▸ ࣮ߦ͢ΔϨγϐΛมߋͨ͠߹ɺىಈ࣌ʹ࣮ߦϨγϐͷϦε
τΛࣗಈͰߋ৽ͯ͘͠Εͳ͍ɻ ▸ ىಈͨ͠ޙʹupdate_custom_CookbookΛ࣮ߦͯ͠ɺ࠶ setupΛ͠ͳ͍ͱ͍͚ͳ͍ɻ ▸ Chef11ܥ->12ܥͷΞοϓάϨʔυෆՄɻstackΛ࡞Γ ͔͢͠ͳ͍ɻɻ
Twitter: #ISAOcorp OPSWORKSͷ֓ཁʹ͍ͭͯ Chef12ʹ͍ͭͯ ▸ Chef12ͰมΘͬͨࣄ ▸ ໊લۭؒ ▸ build-inΫοΫϒοΫͷΓ͠
▸ BerkshelfͷαϙʔτΊͨ ▸ ίϛϡχςΟΫοΫϒοΫΛΨϯΨϯ׆༻Ͱ͖ΔΑ͏ʹͳͬͨ ▸ ৄ͘͠ެࣜϦϑΝϨϯεͰ http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/ chef-12-linux.html
Twitter: #ISAOcorp ΞδΣϯμ ▸ ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DevOpsͷ৺ಘ ʹ͍ͭͯ ▸ DevOpsΛࢧ͑Δपลπʔϧʹ͍ͭͯ ▸ OpsWorksͷ֓ཁʹ͍ͭͯ
▸ OpsWorksΛ࣮ۀʹ׆༻͢ΔͨΊͷTips ▸ ࠓ·Ͱىͬͨ͜ͱղܾํ๏ ▸ ·ͱΊ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS ͜ͷTipsҎԼ͕લఏͰ͢ ▸ ΞϓϦέʔγϣϯͷڥ ▸ OSubuntu ▸ ݴޠPHP
▸ ։ൃڥ ▸ mac ▸ OpsWorks ▸ Chef11.10ར༻ ▸ ※ฐࣾͷϓϩδΣΫτGoalousͰશͯͷTipsΛ࠾༻͓ͯ͠Γ·͢ɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS VagrantͱOpsWorksͰར༻͢ΔCookbooksΛڞ༗͢Δ ▸ VagrantͰϩʔΧϧ։ൃڥΛߏங ▸ ChefͷϨγϐݶΓͳ͘ڞ௨Խ͢Δ ▸ ϩʔΧϧڥͰಈ͍͚ͨͲεςʔδϯάͰಈ͔ͳ͍ɻ
ͱ͔ճආͰ͖Δɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS VagrantͱOpsWorksͰར༻͢ΔCookbooksΛڞ༗͢Δ ▸ Version ▸ Chef Development Kit
Version: 0.17.17 ▸ Vagrant 1.8.4 ▸ virtual box: Version 5.0.20
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS VagrantͱOpsWorksͰར༻͢ΔCookbooksΛڞ༗͢Δ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS VagrantͱOpsWorksͰར༻͢ΔCookbooksΛڞ༗͢Δ ▸ OpsWorks͔Βར༻͢ΔCookbook ͷϦϙδτϦʹҎԼΛؚΊΔ ▸ ެ։ڥͷΈʹద༻͢Δ Cookbook
▸ ϩʔΧϧ։ൃڥͷΈʹద༻͢Δ Cookbook ▸ ͜ͷϦϙδτϦɺୈҰ֊ʹ CookbookΛฒΔඞཁ͋Γɻ ▸ ChefͷϦϙδτϦͱσΟϨΫ τϦߏ͕ҧ͏ʹҙɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS VagrantͱOpsWorksͰར༻͢ΔCookbooksΛڞ༗͢Δ ▸ CookbooksͷϦϙδτϦΛΞϓ ϦέʔγϣϯͷϦϙδτϦʹ submoduleͱͯ͠ΈࠐΉ ▸ ͜ΕͰVagrant͔ΒࢀরͰ͖ΔΑ
͏ʹͳΔɻ ▸ git clone —recursive
[email protected]
:hoge/fuga ▸ Vagrant up ▸ Ҏ্ʂʂ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS BerkshelfΛར༻͢Δ ▸ BerkshelfChefͷCookbookΛύοέʔδཧతʹ ཧͯ͘͠ΕΔͭɻRubyͰ͍͏gemΈ͍ͨͳͷɻ ▸ Berksfileͱ͍͏ϑΝΠϧͰґଘΛཧ͢Δɻ ▸
OpsWorksͰChef11.10Λબͨ͠߹ʹར༻Մೳɻ ▸ VagrantͰɺChefDKͷΠϯετʔϧ͕ඞཁɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS OpsWorksͰͷBerkshelfͷઃఆ ▸ stackͷsettingͰҎԼΛઃఆ ▸ Chef version: 11.10
▸ Manage Berkshelf: yes
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS VagrantͰͷBerkshelfͷઃఆ(1) ▸ ChefDKΛΠϯετʔϧ ▸ pathͷઃఆ ▸ export
PATH=/opt/Chefdk/bin:$PATH ▸ Vagrant-BerkshelfΛΠϯετʔϧ ▸ Vagrant plugin install Vagrant-Berkshelf ▸ VagrantfileͰBerkshelfͷઃఆ(࣍ͷεϥΠυ)
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS VagrantͰͷBerkshelfͷઃఆ(2)
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS ChefͷCookbooksͷϦϙδτϦʹberksfileΛஔ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS Berkshelfͷҙ(1) ▸ VagrantͱOpsWorksͰ BerkshelfΛར༻͢Δ߹ͷ ҙͰ͢ɻ ▸ build-essentialͱaptόʔ
δϣϯࢦఆ(͠ͳ͍ͱChef12 ༷ʹͳͬͯ͠·͍ίέΔ) ▸ metadataࢦఆ͠ͳ͍
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS Berkshelfͷҙ(2) ▸ ࣗલͷCookbookͯ͢ pathࢦఆͰهࡌ ▸ VagrantͰBerkshelfར༻ ࣌ʹCookbook_pathΛ্
ॻ͖ͯ͠͠·͏ҝ ▸ ࣗલͷCookbookʹ metadata.rbΛஔ͢Δ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS travisʹdeployͤ͞Δ ▸ travisΛར༻ͯ͠ςετྃޙ ʹOpsWorksʹσϓϩΠࢦࣔ Λग़͢Α͏ʹ͢Δɻ ▸ gitͷϒϥϯνΛ֤ڥʹඥ
͚Δɻ ▸ GitHubͷϓϧϦΫͷϚʔδΛ ܖػʹϫϯετοϓͰσϓϩ ΠՄೳɻ<-- ૉఢʂ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS travisʹdeployͤ͞Δ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS travisʹdeployͤ͞Δ ▸ .travis.ymlϑΝΠϧʹσϓϩΠ ઌΛࢦఆ ▸ app-idOpsWorksͷAppͷ OpsWorks
ID ▸ දهͷҧ͍ʹҙʂ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS OpsWorks.phpΛ͏·͘ར༻͢͠ ▸ OpsWorks.php setup, deploy࣌ʹग़ྗ͞ΕΔϑΝΠ ϧɻ
▸ ΞϓϦέʔγϣϯίʔυ͕ஔ͔ Ε͍ͯΔσΟϨΫτϦͷϧʔτ ʹஔ͞ΕΔɻ ▸ stackͷ͋ΒΏΔϦιʔεͷ ଓใ͕هࡌɻ ▸ ΞϓϦέʔγϣϯ͔Β༰қʹ ଓͰ͖Δɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS OpsWorks.phpΛ͏·͘ར༻͢͠ ▸ frameworkͷdatabaseઃ ఆͰઃఆΛஔ͖͑Δɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS खಈΠϯετʔϧɺઃఆޚ๏ʂ ▸ ΠϯελϯεʹSSHͯ͠ύοέʔδΠϯε τʔϧͨ͠Γɺઃఆมߋͨ͠Γ͢Δͷμ ϝʂઈରʂ ▸ ඞͣChefͷrecipeͰద༻͢ΔΑ͏ʹ͢Δɻ
▸ test kitchenͰVagrant্ͰrecipeΛςετ ͢Δͱͳ͓Α͠ʂ ▸ ΠϯελϯεͰͳ͘LayerʹΛ͚Δɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS OpsWorksͷcustome jsonʹڥݻ༗ͷใΛ࣋ͨͤΔ ▸ stackͷsettingͷAdvanced optionsͷCustom JSONʹڥ ݻ༗ͷΛkey
valueͰهࡌɻ ▸ CookbookͰ͜ΕΒͷkey valueΛΞϓϦέʔγϣϯͷม ʹల։ɻ ▸ ͜ΕͰCustom JsonͷΈͰڥ ผͷઃఆ͕Մೳɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS ىಈ࣌ؒΛॖ͢Δ߹AMIͷར༻Λݕ౼ ▸ Πϯελϯεͷ৽نՃ࣌15Ҏ্͔͔Δέʔ ε͋Δɻ ▸ ىಈ࣌ؒͷॖΛ͍ͨ͠߹AMIΛར༻͢Δɻ ▸
OpsWorksͰͷAMIར༻ʹؔͯ͠ҎԼΛࢀর http://docs.aws.amazon.com/ja_jp/opsworks/ latest/userguide/workinginstances-custom- ami.html ▸ ࠷৽ͷϓϩϏδϣχϯάࡁΈͷΠϯελϯεͰ AMIΛͱΔɻ ▸ ΠϯελϯεՃ࣌ʹcustom AMIΛࢦఆ(ӈਤ) ▸ ͜ΕͰىಈ͕࣌ؒ5ͱ͔ʹॖՄೳɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS AMIར༻࣌ͷҙ ▸ ႈੑ͕ࣦΘΕͳ͍Α͏ʹؾΛ͚ͭΔɻ ▸ ΠϯελϯεՃ࣌ͷΦϖϨʔγϣϯ͕૿ ͑Δɻ ▸
͍ͭ࣌ͷAMIͳͷ͔ཧ͕ඞཁʹͳΔɻ ▸ ※ͦͦԿͷҝʹChefΛར༻͍ͯ͠Δ ͔ʁOpsWorksΛར༻͍ͯ͠Δ͔Α͘ߟ͑ ΔɻAMIΛར༻͢ΕͦͷίετͱϦεΫ ͕ൃੜ͢ΔࣄΛ೦಄ʹஔ͘ඞཁ͋Γɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS instance storeͷར༻ ▸ OpsWorksͰͷΠϯελϯεͷϘϦϡʔϜEBSΑΓinstance store ͷํ͕͍͍ͯΔɻ ▸
instance storeΠϯελϯεఀࢭ࣌ʹഁغ͞ΕΔɻ ▸ ΑΓImmutable ʹͳΔɻ ▸ instance store͕͔͔ۚΒͳ͍ɻEBSͷ߹ఀࢭ͍͓ͯͯ͠ ͕͔͔ۚΔɻେྔͷΠϯελϯεΛѻ͏߹ݕ౼ͯ͠ྑ͍͔ɻ ▸ ͨͩ͠ɺAMIΛར༻͢Δ߹ͷΦϖϨʔγϣϯ͕ΊΜͲ͘͞ ͍ɻɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS σϓϩΠϑοΫΛར༻͢͠(ͦͷ̍) ▸ deploy࣌ʹՃॲཧΛߦ͍͍ͨ߹ίʔϧόοΫΛར༻͢Δɻ ▸ ΞϓϦέʔγϣϯίʔυʹdeployσΟϨΫτϦΛ༻ҙ͠ɺҎԼͷϑΝΠϧΛஔ ▸ before_migrate.rb
– νΣοΫΞτεςʔδͷྃޙɺҠߦεςʔδͷલʹ ࣮ߦ͠·͢ɻ ▸ before_symlink.rb – ҠߦεςʔδͷྃޙɺγϯϘϦοΫϦϯΫεςʔδͷ લʹ࣮ߦ͠·͢ɻ ▸ before_restart.rb – γϯϘϦοΫϦϯΫεςʔδͷྃޙɺ࠶ىಈεςʔδͷ લʹ࣮ߦ͠·͢ɻ ▸ after_restart.rb – ࠶ىಈεςʔδͷྃޙʹ࣮ߦ͠·͢ɻ ▸ ͜ΕͰΞϓϦέʔγϣϯݻ༗ͷॲཧΛՃͰ͖Δɻ
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS σϓϩΠϑοΫΛར༻͢͠(ͦͷ̎) ▸ ҙͱͯ͠ɺCookbookͱΞϓϦέʔγϣϯ͕ͳ Δ͘૬ޓʹґଘ͠ͳ͍Α͏ʹ͢Δɻ ▸ setupͰ࣮ߦ͞ΕΔϨγϐͱσϓϩΠϑοΫ͕ґଘ͠ ߹ͬͯͨΓ͢Δͱdeploy࣌ʹsetupΛ࣮ߦ͠ͳ͍ͱ
͍͚ͳ͘ͳΔɻ ▸ ৄ͘͠ެࣜϦϑΝϨϯεʹͯ https://docs.aws.amazon.com/ja_jp/opsworks/latest/ userguide/workingcookbook-extend-hooks.html
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS ΫοΫϒοΫͷ্ॻ͖(Chef11ܥ) ▸ OpsWorksͷΫοΫϒοΫɺΈࠐΈΫοΫϒοΫɺ BerkshelfΫοΫϒοΫɺΧελϜΫοΫϒοΫͱ̏छྨ͋Δɻ ▸ ্هΫοΫϒοΫಉ໊͡લͷϨγϐ͕ଘࡏ͢Δ߹ɺϚʔδ ͞ΕΔɻ<-
͜͜ΊͪΌͪ͘ΌϋϚΔɻɻɻ ▸ ՄೳͰ͋ΕChef12ਪɻ ▸ ৄ͘͠ެࣜϦϑΝϨϯεͰ https://docs.aws.amazon.com/ja_jp/opsworks/latest/ userguide/workingcookbook-chef11-10.html
Twitter: #ISAOcorp OPSWORKSΛ࣮ۀʹ׆༻͢ΔͨΊͷTIPS ChefͷόʔδϣϯΞοϓͷҙ ▸ update_custom_CookbookΛߦͬͯChef versionߋ ৽͞Εͳ͍ɻ ▸ ΦϖϨʔγϣϯ
▸ OpsWorksͷstackઃఆͰChefͷόʔδϣϯΛΓସ͑ ▸ ৽نͰ1ϨΠϠʹՃ ▸ ৽نՃͨ͠Πϯελϯε͕ىಈͨ͠ΒɺଞΛͯ͢ আ͠ɺ࠶Ճ͢Δɻ
Twitter: #ISAOcorp ΞδΣϯμ ▸ ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DevOpsͷ৺ಘ ʹ͍ͭͯ ▸ DevOpsΛࢧ͑Δपลπʔϧʹ͍ͭͯ ▸ OpsWorksͷ֓ཁʹ͍ͭͯ
▸ OpsWorksΛ࣮ۀʹ׆༻͢ΔͨΊͷTips ▸ ࠓ·Ͱىͬͨ͜ͱղܾํ๏ ▸ ·ͱΊ
Twitter: #ISAOcorp ࠓ·Ͱىͬͨ͜ͱղܾํ๏ inodeރׇ ▸ ݱ ▸ deploy͕Կࣦഊ͢Δ͕ɺChefͷϩάݟͯຖճΤϥʔ͕ҧ͏ɻɻ ▸ ݪҼ
▸ node_modulesԼͷϑΝΠϧ͕7ສΛ͍͑ͯͨʂ ▸ ࣦഊͨ͠ੈΛอ͓࣋ͯ͠Γɺinode͕ރׇʂ ▸ inode֬ೝํ๏: df -i ▸ ରԠ ▸ ཧ͢ΔੈΛσϑΥϧτͷ̑ੈ͔Β̎ੈʹมߋͨ͠ɻ ▸ custom jsonͰཧ͢ΔੈΛࢦఆՄೳ(ӈਤ)
Twitter: #ISAOcorp ࠓ·Ͱىͬͨ͜ͱղܾํ๏ Chef11.04 ▸ ݱ ▸ OpsWorksͰChef11.04Λར༻͍ͯ͠ΔͱcloneͰ͖ͳ͍ɻadd instanceͰ͖ͳ͍(க໋తʂʂ) ▸
ຖճɺύϥϝʔλ͕ෆਖ਼ͱ͍͏ෆͳΤϥʔදࣔɻ ▸ ݪҼ ▸ Α͘Θ͔ΒΜɻOpsWorksଆͷ༷มߋʹΑΔͷɻ ▸ ରԠ ▸ Chef11.10ʹΞοϓάϨʔυͨ͠Βղফɻ
Twitter: #ISAOcorp ࠓ·Ͱىͬͨ͜ͱղܾํ๏ stack setting͕อଘͰ͖ͳ͍ ▸ ݱ ▸ OpsWorksͰstack settingΛอଘ͠Α͏ͱ͢ΔͱOpsWorks
id͕ݟ͔ͭΒͳ͍ɻͱ͔༁ͷΘ͔Βͳ͍Τϥʔ͕ɻ ▸ ݪҼ ▸ Α͘Θ͔ΒΜɻOpsWorksͷόάɻଟɻ ▸ ରԠ ▸ twittterͰAWSαϙʔτʹͭ͘͜͠ݴ͍ଓ͚ͨΒ࣍ͷղ ফ͞Ε͍ͯͨɻ
Twitter: #ISAOcorp ΞδΣϯμ ▸ ৽͍͠ϓϩδΣΫτΛ։࢝͢Δࡍʹ͓͖͑ͯ͘DevOpsͷ৺ಘ ʹ͍ͭͯ ▸ DevOpsΛࢧ͑Δपลπʔϧʹ͍ͭͯ ▸ OpsWorksͷ֓ཁʹ͍ͭͯ
▸ OpsWorksΛ࣮ۀʹ׆༻͢ΔͨΊͷTips ▸ ࠓ·Ͱىͬͨ͜ͱղܾํ๏ ▸ ·ͱΊ
Twitter: #ISAOcorp ·ͱΊ ▸ ϓϩδΣΫτΛ։࢝͢ΔࡍɺεέʔϥϏϦςΟΛߟྀͯ͠ڥߏஙɺσ ϓϩΠखॱΛ໌֬ʹ͠Α͏ɻΦϖϨʔγϣϯΛγϯϓϧʹɺଐਓԽͤ͞ͳ ͍Α͏ʹ͢Δํ๏Λݕ౼͠Α͏ɻ ▸ immutable Ͱ͋Εʂ࠷ͰԿ͔͋Ε0͔Β࡞Γͳ͓͠Ό͍͍͡Ό
Μɻͱݴ͑Δঢ়ଶʹ͠Α͏ɻ ▸ Chef৭ʑݴΘΕ͍ͯΔ͚ͲϓϩϏδϣχϯάπʔϧͷσϑΝΫτͩ͠ɺ ·ͣ৮ͬͯΈΑ͏ʂ ▸ ༷ʑͳΫϥυͷπʔϧΛར༻͠Α͏ɻ ▸ Ϛωʔδ͞Ε͍ͯͯεέʔϥϒϧͳπʔϧ͕٢ɻ ▸ ΘΘͤΔࣄͰϋοϐʔʹͳΕ·͢ʂ ▸ OpsWorksΑ͍Α( ´ ˜ ` )ů
ISAOΤϯδχΞ ΛઈࢍืूதͰ͢ʂ
͝ਗ਼ௌ ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ