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インフラ構築ツールとしてのTerraform / SpeeeKaigi
Search
yuma iwasaki
August 08, 2016
Programming
2.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWSインフラ構築ツールとしてのTerraform / SpeeeKaigi
SpeeeKaigiで話しました
yuma iwasaki
August 08, 2016
More Decks by yuma iwasaki
See All by yuma iwasaki
僕のキャリアとワインと鍋 / daikichijojipm
suthio
11
7.7k
「Laravel Novaの適切な使い方を考えてみる」 / laravel meetup tokyo vol 11
suthio
1
2.1k
バッチをGoにリプレイスして高速化した話 / GoGoGolangEdition!
suthio
2
29k
本当は怖くない AWS Lambda / speee_cafe_meetup06
suthio
2
900
広告配信サーバーにおけるBlue Green Deploymentの導入事例について \ SpeeeCafeMeetup05
suthio
3
1.9k
初めての本当の意味でのチーム開発 / pmjp 2016-12-03
suthio
4
1.9k
広告配信サーバーの設計について / Speee Engineer Meeting 2016-06-22
suthio
5
2.8k
しくじり先生 アドネットワーク開発でしくじった話 / yapc8oji
suthio
2
2.1k
Other Decks in Programming
See All in Programming
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
810
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
780
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
440
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
130
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
400
Android CLI
fornewid
0
220
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.3k
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
190
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
140
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
370
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
430
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
200
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Ethics towards AI in product and experience design
skipperchong
2
340
How to Think Like a Performance Engineer
csswizardry
28
2.7k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
430
Transcript
AWSΠϯϑϥߏஙπʔϧͱͯ͠ͷTerraform
resource "Profile" "Yuma Iwasaki" { company = "Speee Inc." division
= "Web Marketing" development_product = "UZOU ~ Native Ad Network" age = 25 programming_language [ "Ruby", "Scala", "Golang" ] }
agenda • Terraformͱʁ • AWSΠϯϑϥߏஙπʔϧൺֱ • Terraform͍ํ • ΒͲ͏͍ͬͯΔͷ͔
None
None
ΠϯϑϥߏΛίʔυԽ͢Δ͜ͱͷͰ͖Δπʔϧ
ͲΜͳ͜ͱ͕Ͱ͖Δ͔ • IaaSͷαʔόʔߏஙͷίʔυԽ • Amazon Web Services • Google Cloud
Platform • Microsoft Azure • Heroku SetupͷίʔυԽ
ओʹAWSͷΠϯϑϥߏஙπʔϧͱͯ͠ΘΕ͍ͯΔ
͜Μͳܦݧͳ͍Ͱ͔͢ʁ • VPCΛ࡞Δࡍɺςετڥͱຊ൪ڥಉ͡ૢ࡞Λͯ͠࡞ͨ͠ ͭΓ͕ͩҰ෦ؒҧ͍͑ͯͨ • ϚωδϝϯτίϯιʔϧΛݟΔͱ͍ͭͷؒʹ͔ṖͷΠϯελϯ ε͕Ͱ͖ͯͯɺ͍ͭ୭͕࡞͔͕ͨ͠Θ͔Βͳ͍
AWSͷΠϯϑϥߏஙΛίʔυԽ͢Δͱͳʹ͕͍͍ͷ͔ʁ
AWSͷΠϯϑϥߏஙΛίʔυԽ͢Δͱͳʹ͕͍͍ͷ͔ʁ • ϛεΒͳ͍ • ਓͷखϛε͠·͕͢ɺػցϛε͠ͳ͍ • ίʔυԽ͢Δ͜ͱʹΑͬͯཤྺཧ͕Մೳ • Կճߏங͢Δ߹ʹޮత •
ίϐϖͰڥߏங͕Ͱ͖Δ
Pull RequestϕʔεͰΠϯϑϥߏங͕Ͱ͖Δɻ
AWSΠϯϑϥߏஙπʔϧ • CloudFormation • Terraform • Ansible
Terraform VS CloudFormation VS Ansible
AWSରԠ • CloudFormation • AWSެࣜαʔϏεͳͷͰ΄΅શͯͷAWSαʔϏε͕ରԠ • ৽͍͠αʔϏεʹରͯ͠ɺ͍ͪૣ͘ରԠ • Terraform •
ଟ͘ͳਓ͕͏Α͏ͳαʔϏε΄΅ରԠ • Ansible • ଟ͘ͷਓ͕͏Α͏ͳαʔϏε΄΅ରԠ
هड़ํࣜ • CloudFormation • JSON • Terraform • ෦DSL •
Ansible • YAML
DryRun • CloudFormation • None • Terraform • શͯͷ࣮ߦterraform planͰ֬ೝՄೳ
• Ansible • --dry-runΦϓγϣϯͰҰ෦ରԠ
طଘڥͷίʔυԽ • CloudFormation • Cloudfomer • Terraform • Terraforming •
Ansible • None
None
ิ
TerraformͰCloudFormationɺAnsibleΛ࣮ߦ͢Δ͜ͱ͕Ͱ͖Δɻ
Terraform͍ํ
provider "aws" { region = "ap-northeast-1" } resource "aws_instance" "web"
{ ami = "ami-408c7f28" instance_type = "t1.micro" tags { Name = "HogeHogeEC2Instance } }
terraform plan
+ aws_instance.web ami: "" => "ami-408c7f28" availability_zone: "" => "<computed>"
ebs_block_device.#: "" => "<computed>" ephemeral_block_device.#: "" => "<computed>" instance_state: "" => "<computed>" instance_type: "" => "t1.micro" key_name: "" => "<computed>" placement_group: "" => "<computed>" private_dns: "" => "<computed>" private_ip: "" => "<computed>" public_dns: "" => "<computed>" public_ip: "" => "<computed>" root_block_device.#: "" => "<computed>" security_groups.#: "" => "<computed>" source_dest_check: "" => "1" subnet_id: "" => "<computed>" tags.#: "" => "1" tags.Name: "" => "HogeHoge" tenancy: "" => "<computed>" vpc_security_group_ids.#: "" => "<computed>" Plan: 1 to add, 0 to change, 0 to destroy.
terraform apply
ࠂ৴γεςϜͷ։ൃͰͲ͏͍ͬͯΔͷ͔
None
ࡶʹͳΓ͕ͪͳΠϯϑϥΛίʔυԽͯ͠ཧ
AWSͷαʔϏε͝ͱʹϑΝΠϧΛ͚ͯཧ͍ͯ͠Δɻ
ଞͷ։ൃͰ༗ޮ׆༻Ͱ͖Δ • ֤αʔϏεͷAWSڥΛඪ४Խͯ͠TerraformԽ͢Δ͜ͱͰɺ ߴ͔ͭ҆શʹΠϯϑϥߏஙΛߦ͏͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔɻ • ༰қʹςετڥΛߏங͢Δ͜ͱ͕Ͱ͖ɺ MicroservicesԽͨ࣌͠ͷςετ͕Γ͘͢ͳΔ
͓·͚
v0.7.0৽ػೳ • Data Resource • S3ͳͲ֎෦͔ΒΛಡΈࠐΜͰTerraform࣮ߦ͕Մೳ • Importػೳ • ݱࡏͷΠϯϑϥঢ়ଶ͔ΒTerraformͷίʔυΛੜʢtfϑ
ΝΠϧͷΈʣ
AWSͷΠϯϑϥߏஙίʔυԽ͠Α͏ʂ