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
applibotのDevOpsを支える terraform/packer
Search
遊
September 11, 2018
Technology
1
3.3k
applibotのDevOpsを支える terraform/packer
2018/09/11 DevOpsを支える今話題のHashiCorpツール群について
遊
September 11, 2018
Tweet
Share
More Decks by 遊
See All by 遊
ゲームのインフラ6年やっててよく聞かれること
gacharu
1
1.2k
ELKstackとAthenaの素敵な関係
gacharu
0
960
Other Decks in Technology
See All in Technology
カメラを用いた店内計測におけるオプトインの仕組みの実現 / ai-optin-camera
cyberagentdevelopers
PRO
1
120
ガチ勢によるPipeCD運用大全〜滑らかなCI/CDを添えて〜 / ai-pipecd-encyclopedia
cyberagentdevelopers
PRO
3
210
新R25、乃木坂46 Mobileなどのファンビジネスを支えるマルチテナンシーなプラットフォームの全体像 / cam-multi-cloud
cyberagentdevelopers
PRO
1
130
プロダクトエンジニアが活躍する環境を作りたくて 事業責任者になった話 ~プロダクトエンジニアの行き着く先~
gimupop
1
480
Gradle: The Build System That Loves To Hate You
aurimas
2
150
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
49k
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
1.4k
独自ツール開発でスタジオ撮影をDX!「VLS(Virtual LED Studio)」 / dx-studio-vls
cyberagentdevelopers
PRO
1
180
「 SharePoint 難しい」ってよく聞くけど、そんなに言うなら8歳の息子に試してもらった
taichinakamura
1
620
グローバル展開を見据えたサービスにおける機械翻訳プラクティス / dp-ai-translating
cyberagentdevelopers
PRO
1
150
生成AIの強みと弱みを理解して、生成AIがもたらすパワーをプロダクトの価値へ繋げるために実践したこと / advance-ai-generating
cyberagentdevelopers
PRO
1
180
pandasはPolarsに性能面で追いつき追い越せるのか
vaaaaanquish
4
4.6k
Featured
See All Featured
Code Review Best Practice
trishagee
64
17k
Measuring & Analyzing Core Web Vitals
bluesmoon
1
40
Navigating Team Friction
lara
183
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
What's new in Ruby 2.0
geeforr
342
31k
Visualization
eitanlees
144
15k
4 Signs Your Business is Dying
shpigford
180
21k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
RailsConf 2023
tenderlove
29
880
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
The Cult of Friendly URLs
andyhume
78
6k
How to Ace a Technical Interview
jacobian
275
23k
Transcript
applibotͷDevOpsΛࢧ͑Δ terraform/packer DevOpsΛࢧ͑ΔࠓͷHashiCorpπʔϧ܈ʹ͍ͭͯ 2018/09/11 ଜ ༡
ೋ ࣇ ͷ ͤ ͍ ͭ ɿ
͓ ͱ ͜ Ϩ ϕ ϧ ɿ ) 1 . 1 ࣾ ձ ਓ ྺ d ɹ % $ Ͱ ࢹ Φϖ Ϩ ʔ λ ʔ d ɹ ג ࣜ ձ ࣾ ɹ ɹ ɹ ɿ 4 : 4 5 & . 0 1 & 3 "50 3 d / 0 8 ɹ ɹ ג ࣜ ձ ࣾ " 1 1 - * # 05 ɿ 4 : 4 5 & . 0 1 & 3 "50 3 ͳ · ͑ ɹ ɹ ɿ ଜ ɹ ༡ ͭ ͍ ͬ ͨ ʔ ɿ !HBDIBSJPO HVNJ ࣗ ݾ հ
גࣜձࣾΞϓϦϘοτ ཱ݄̓ $ZCFS"HFOU εϚʔτϑΥϯήʔϜΤϯλʔςΠϝϯτࣄۀ 4(& ɹͷͷࣾ ήʔϜ͚ͩͰͳ͘ɺΦϯϥΠϯϓϩάϥϛϯάڭҭαʔϏε ϝσΟΞܥͷใൃ৴αΠτӡӦ ձࣾઆ໌
None
None
̍ΞϓϦέʔγϣϯຖʹ Χϯύχʔ੍
ӡ༻தͷΞϓϦ ຊ
৽ن։ൃ1+ /ຊ
ͦͷଞαΠτ࡞Β ৽نࣄۀΒ ΖΖΖ
4:401 αʔόڥΛ༻ҙ͢Δਓ ਓ
ΞϓϦέʔγϣϯνʔϜͷ αʔόΤϯδχΞͱ ڠྗ͢Δ͜ͱ͕ଟ͍
͢͜ͱ w աڈʹ͋ͬͨ՝Λ UFSSBGPSNQBDLFSΛͬͯ Ͳ͏ղফ͔ͨ͠ͱ͍͏͓
͞ͳ͍͜ͱ w ࡉ͔͍5JQT
agenda w DBTF*NBHF࡞ w DBTFෛՙࢼݧڥߏங w DBTF৽نڥߏங w ·ͱΊ
$BTF *NBHF࡞
º º ͏ͷ
Packer • ༻్ • AMI / GCP Image / Container
Imageͷ࡞ • ansibleͱซ༻ͯ͠༻ • ϝϦοτ • Πϝʔδ࡞ͷྲྀΕΛςϯϓϨʔτԽ
before w ྫ"NB[PO".* CBTFͱͳΔ".*͔Β&$ىಈ "OTJCMFͰߏมߋΛద༻ Πϝʔδऔಘͨ͠αʔόͷআ Ҏ্ΛશͯखಈͰ࣮ߦ
before ىಈதʹผͷ࡞ۀΔ ˠΕΔ Πϝʔδऔಘޙͷαʔόআ ˠΕΔ ͦͦ͜ͷ࡞ۀ ˠΊΜͲ͍
ͦΜͳ࣌
after $ p a c k e r b u
i l d p a c k e r . j s o n ʊਓਓਓਓਓਓਓਓਓʊ ʼɹίϚϯυҰൃʂɹʻ ʉ:?:?:?:?:?:?ʉ
JOB
ৄࡉϒϩάͰ ͯͬ͘΅ͬͱ https://blog.applibot.co.jp/ 2018/05/11/how-to-build- aws-ami-in-applibot/
$BTF ෛՙࢼݧߏங
º ͏ͷ
ෛՙࢼݧͷ߹ͷׂ ෛ ՙ ࢼ ݧ Λ ͔ ͚Δ ਓ
γ φ Ϧ Φ ࡞ ࢼ ݧ ࣮ ߦ ݁ Ռ · ͱ Ί ෛ ՙ ࢼ ݧ ڥ Λ ࡞ Δ ਓ ڥ ࡞ ߏ ม ߋ Ϩ Ϗϡ ʔ αʔόΤϯδχΞ γεΦϖ
Α͋͘Δޫܠ ৽ Πϕ ϯ τ ։ ൃ ͠ · ͠
ͨ ʂ ෛ ՙ ࢼ ݧ Γ ͨ ͍Ͱ ͢ ʂ ͍ ͭ · Ͱ ʹ ༻ ҙ Ͱ ͖ · ͢ ͔ ʂ ʁ ͏ ʔ ʔ ʔ ʔ Μ ɻ ࠓ ख ͕ ۭ ͔ ͳ ͍ ͔ Β ʜ ͙ Β ͍Ͱ ʜ ͦ͘ ͓ ͦ ʂ ʢ ྃ ղ Ͱ ͢ ʂ ΑΖ ͠ ͘ ͓ ئ ͍ ͠ · ͢ ʂ ʣ
ӡ༻தͷαʔϏε͕ ෛՙࢼݧΛΔ࣌ w ৽نΠϕϯτϦϦʔεલ w αʔόଆͷߏมߋΛߦ͏࣌ w $.େن13લ
༻ҙ͢Δͷ ΠϯϑϥपΓ w ࠷ऴతʹɺຊ൪ಉͷڥ w ࢼݧͷλΠϛϯάͰ࡞ w ෛՙΛ͔͚Δαʔό w +.FUFSΛ༻
&$ ɻωοτϫʔΫผɻΞΧϯτ͚͍ͯΔ w ֤छϞχλϦϯά w HSBGBOBQSPNFUIFVTLJCBOB FMBTUJDTFBSDI w ͜͜ࠓճؔͳ͠
༻ҙ͢Δͷ ΠϯϑϥपΓ w ࠷ऴతʹɺຊ൪ಉͷڥ w ࠷ॳಉ͡ߏͰখ͍͞ΠϯελϯεΫϥε w ຊ൪ಉͷنͰৗʹҡ࣋͢Δͱɺ අ༻͕ϠόΠͷͰࢼݧͷʹ࡞͢Δ w
ࢼݧظؒதͰɺΘͳ͍ͱ͖খ͘͞
༻ҙ͢Δͷ ΠϯϑϥपΓ w ෛՙΛ͔͚Δαʔό w ฐࣾͰ+.FUFSΛ༻ w NBTUFSTMBWFߏ TMBWF"VUP4DBMJOHͰεέʔϧ͢Δ w
ͪ͜Βࢼݧͷʹ࡞ w Θͳ͍࣌আ
before ཧΠϯελϯεͷBXTDMJΛΰϦΰϦ 3%4&MBTUJ$BDIF&$FUDʜ ىಈॱ൪εΫϦϓτؒͰௐ ग़དྷ্͕ΔൿͷλϨ TZTPQଆͰຖேຖ൩ͷ֦ுॖখରԠ
Կ͔͋Δʁ w Ұಈ͔ͤྑ͍͚Ͳ w ཧ͕େม w ଞϓϩδΣΫτͰ·ͨΰϦΰϦͱ w ҉తͳߏॱ͋ͬͨΓͰ ֮͑ͯΒ͍ͮΒ͍
ͦΜͳ࣌ͦ͜
Ұ͔ΒUFSSBGPSNͰ࡞ w ߏཁૉΛશͯUFSSBGPSNԽ w جຊతʹ࡞Γ͠ w طʹ͋ΔϦιʔε UFSSBGPSNJNQPSU w Ͳ͏ͯ͠߹ੑ߹Θͳ͍ͱ͖
UGTUBUFΛमਖ਼
Կ͕ྑ͘ͳͬͨʁ w ىಈཧͷू͕Ͱ͖ͨ w UFSSBGPSNͷϑΝΠϧΛݟΕɺߏཁૉ͕Θ͔Δঢ়ଶ w ࡞εέʔϧUFSSBGPSNBQQMZͰPL w ߏॱংࢦఆ EFQFOET@PO
w WBSTͷΓସ͑Ͱɺॖখɺ֦ு༰қ
ॖখ༻ ########################## ## Aurora InstanceClass ## ########################## rds_master_class = “db.r3.2xlarge"
################# ## Autoscaling ## ################# desired_capacity = “10” ֦ு༻ ########################## ## Aurora InstanceClass ## ########################## rds_master_class = “db.t2.medium” ################# ## Autoscaling ## ################# desired_capacity = “0” ֦ுॖখWBSTϑΝΠϧͷ Γସ͑ͰରԠ
# ద༻͢ΔvarsΛηοτ vars_file=vars_file/${OPTARG}_value.tfvars # tfstateόοΫΞοϓ if [ ${option} == "apply"
]; then terraform state pull > backup/terraform.tfstate_backup_`date +"%Y-%m-%d-%H-%M- %S"` fi # terraform࣮ߦ (plan or apply) terraform ${tf_option} -var-file=${vars_file} ࣮ߦ༻εΫϦϓτ
w ઃఆ͕ڞ༗Ͱ͖͓ͯΓ w มߋWBSTͷΓସ͑ͰPL w ͱͳͬͨΒɺ͋ͱ୭͕࣮ߦͯ͠ Ұॹ
after ʊਓਓਓਓਓਓਓਓਓʊ ʼɹTMBDLҰൃʂʻ ʉ:?:?:?:?:?:?ʉ hoge hoge hoge
None
after hoge hoge hoge w εέʔϧͷݖݶΛΞϓϦνʔϜҠৡ w Ͳ͏͍͏ڥͰࢼݧ͍ͯ͠Δ͔ͷ ֬ೝ༰қ w
ϘτϧωοΫՕॴͷมߋ WBSTͷΛ͍͡Δ͚ͩͰมߋͰ͖Δ εϐʔυײͷ͋ΔରԠΛ ߦ͏͜ͱ͕Ͱ͖Δ
$BTF ৽نڥߏங
º ࣄྫ
৽نαʔϏεͷڥߏஙͷྲྀΕ ͦ Ζ ͦ Ζ α ʔ ό ͱ ૄ
௨ ͯ͠ ֬ ೝ ͠ ͨ ͍ ͍ ͭ · Ͱ ʹ ༻ ҙ Ͱ ͖ · ͢ ͔ ʂ ʁ Ξ Χ ϯ τ ͔ Β ͷ ༻ ҙ ͩ ͔ Β ɺ ͋ Ε ͍ Εͯ ͜ Ε ͍ Εͯ ͋ ʜ ͙ Β ͍Ͱ ʜ ͦ͘ ͓ ͦ ʂ ʢ ྃ ղ Ͱ ͢ ʂ ΑΖ ͠ ͘ ͓ ئ ͍ ͠ · ͢ ʂ ʣ
before SPPUΞΧϯτͷ෧ҹ $POTPMJEBUFE#JMMJOHઃఆ *".6TFSͷ࡞ɺ(SPVQઃఆɺTXJUDIઃఆ $MPVE5SBJMMPH༻4όέοτͷઃఆ ωοτϫʔΫઃఆɺࢹ༻ϙʔτ։͚ FUD
ͦΜͳઃఆ
Կ͕ྑ͘ͳͬͨʁ w ΞΧϯτࣗମͷઃఆཧ w ແҙࣝʹαʔόڥ ΞϓϦέʔγϣϯؔ࿈ ͷ ཧͱͯ͠༻͍͕ͯͨ͠ɺ "84ͷ΄΅શͯͷαʔϏεཏ͍ͯ͠ΔͷͰɺ $MPVE5SBJM͔Β*".·Ͱɺ
ॳظઃఆΛશͯςϯϓϨԽͰ͖ͨɻ
BQQMJCPUͷUFSSBGPSN ϑΥϧμߏ • 00_base • ΞΧϯτ࡞࣌ʹ࡞͢ΔαʔϏε܈ • CloudTrail /
Route53 / keypair / S3(awsؔ࿈ͷϩά༻) / IAMUser • 01_common / 02_dev / 03_stg / 04_prd • ֤ڥ໊ɻιʔτ༻ʹ൪߸ৼ͍ͬͯΔ • workspaceఘΊ·ͨ͠ • 99_modules • ֤ڥ͕ڞ௨Ͱ༻͢Δઃఆ • ྫ: VPC Network
(JUMBCͰ CBTFSFQPTJUPSZཧ
after SPPUΞΧϯτͷ෧ҹ $POTPMJEBUFE#JMMJOHઃఆ UFSSBGPSN༻*".6TFS࡞ UFSSBGPSN࣮ߦ ͰPL
hoge ઃఆมߋ.3Ͱ ཧͰ͖Δ
·ͱΊ
·ͱΊ w 1BDLFSUFSSBGPSNͰཧ͢Δ͜ͱͰ ཧ͘͢͠ɺڞ༗ՄೳͳΠϯϑϥ w ߏங෦͕ૄ݁߹ʹͳΔ͜ͱͰ JOQVUPVUQVUͷΈ߹Θ͕ͤ༰қ w ఆܕ࡞ۀςϯϓϨԽେࣄ
͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠