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.8k
「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
Building an Out-of-Order CPU
latte72
0
360
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
760
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.3k
20260807_複雑な医療ドメインに挑むエンジニアの業務知識の深め方
ryugen04
0
100
Foundry Localでエージェント開発
seosoft
0
110
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
280
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
110
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
260
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
Deep dive into the select statement (GopherCon UK)
jespino
0
170
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
140
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
ラッコキーワード サービス紹介資料
rakko
1
4.7M
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
640
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
260
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
300
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
How STYLIGHT went responsive
nonsquared
100
6.3k
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ͷΠϯϑϥߏஙίʔυԽ͠Α͏ʂ