Slide 1

Slide 1 text

AWSΠϯϑϥߏஙπʔϧͱͯ͠ͷTerraform

Slide 2

Slide 2 text

resource "Profile" "Yuma Iwasaki" { company = "Speee Inc." division = "Web Marketing" development_product = "UZOU ~ Native Ad Network" age = 25 programming_language [ "Ruby", "Scala", "Golang" ] }

Slide 3

Slide 3 text

agenda • Terraformͱ͸ʁ • AWSΠϯϑϥߏஙπʔϧൺֱ • Terraform࢖͍ํ • ๻Β͸Ͳ͏࢖͍ͬͯΔͷ͔

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Πϯϑϥߏ੒ΛίʔυԽ͢Δ͜ͱͷͰ͖Δπʔϧ

Slide 7

Slide 7 text

ͲΜͳ͜ͱ͕Ͱ͖Δ͔ • IaaSͷαʔόʔߏஙͷίʔυԽ • Amazon Web Services • Google Cloud Platform • Microsoft Azure • Heroku SetupͷίʔυԽ

Slide 8

Slide 8 text

ओʹAWSͷΠϯϑϥߏஙπʔϧͱͯ͠࢖ΘΕ͍ͯΔ

Slide 9

Slide 9 text

͜Μͳܦݧͳ͍Ͱ͔͢ʁ • VPCΛ࡞Δࡍɺςετ؀ڥͱຊ൪؀ڥ΋ಉ͡ૢ࡞Λͯ͠࡞੒ͨ͠ ͭ΋Γ͕ͩҰ෦ؒҧ͍͑ͯͨ • ϚωδϝϯτίϯιʔϧΛݟΔͱ͍ͭͷؒʹ͔ṖͷΠϯελϯ ε͕Ͱ͖ͯͯɺ͍ͭ୭͕࡞੒͔͕ͨ͠Θ͔Βͳ͍

Slide 10

Slide 10 text

AWSͷΠϯϑϥߏஙΛίʔυԽ͢Δͱͳʹ͕͍͍ͷ͔ʁ

Slide 11

Slide 11 text

AWSͷΠϯϑϥߏஙΛίʔυԽ͢Δͱͳʹ͕͍͍ͷ͔ʁ • ϛεΒͳ͍ • ਓͷख͸ϛε͠·͕͢ɺػց͸ϛε͠ͳ͍ • ίʔυԽ͢Δ͜ͱʹΑͬͯཤྺ؅ཧ͕Մೳ • Կճ΋ߏங͢Δ৔߹ʹ͸ޮ཰త • ίϐϖͰ؀ڥߏங͕Ͱ͖Δ

Slide 12

Slide 12 text

Pull RequestϕʔεͰΠϯϑϥߏங͕Ͱ͖Δɻ

Slide 13

Slide 13 text

AWSΠϯϑϥߏஙπʔϧ • CloudFormation • Terraform • Ansible

Slide 14

Slide 14 text

Terraform VS CloudFormation VS Ansible

Slide 15

Slide 15 text

AWSରԠ • CloudFormation • AWSެࣜαʔϏεͳͷͰ΄΅શͯͷAWSαʔϏε͕ରԠ • ৽͍͠αʔϏεʹରͯ͠΋ɺ͍ͪૣ͘ରԠ • Terraform • ଟ͘ͳਓ͕࢖͏Α͏ͳαʔϏε͸΄΅ରԠ • Ansible • ଟ͘ͷਓ͕࢖͏Α͏ͳαʔϏε͸΄΅ରԠ

Slide 16

Slide 16 text

هड़ํࣜ • CloudFormation • JSON • Terraform • ಺෦DSL • Ansible • YAML

Slide 17

Slide 17 text

DryRun • CloudFormation • None • Terraform • શͯͷ࣮ߦ͸terraform planͰ֬ೝՄೳ • Ansible • --dry-runΦϓγϣϯͰҰ෦ରԠ

Slide 18

Slide 18 text

طଘ؀ڥͷίʔυԽ • CloudFormation • Cloudfomer • Terraform • Terraforming • Ansible • None

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

ิ଍

Slide 21

Slide 21 text

TerraformͰCloudFormationɺAnsibleΛ࣮ߦ͢Δ͜ͱ͕Ͱ͖Δɻ

Slide 22

Slide 22 text

Terraform࢖͍ํ

Slide 23

Slide 23 text

provider "aws" { region = "ap-northeast-1" } resource "aws_instance" "web" { ami = "ami-408c7f28" instance_type = "t1.micro" tags { Name = "HogeHogeEC2Instance } }

Slide 24

Slide 24 text

terraform plan

Slide 25

Slide 25 text

+ aws_instance.web ami: "" => "ami-408c7f28" availability_zone: "" => "" ebs_block_device.#: "" => "" ephemeral_block_device.#: "" => "" instance_state: "" => "" instance_type: "" => "t1.micro" key_name: "" => "" placement_group: "" => "" private_dns: "" => "" private_ip: "" => "" public_dns: "" => "" public_ip: "" => "" root_block_device.#: "" => "" security_groups.#: "" => "" source_dest_check: "" => "1" subnet_id: "" => "" tags.#: "" => "1" tags.Name: "" => "HogeHoge" tenancy: "" => "" vpc_security_group_ids.#: "" => "" Plan: 1 to add, 0 to change, 0 to destroy.

Slide 26

Slide 26 text

terraform apply

Slide 27

Slide 27 text

޿ࠂ഑৴γεςϜͷ։ൃͰ͸Ͳ͏࢖͍ͬͯΔͷ͔

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

൥ࡶʹͳΓ͕ͪͳΠϯϑϥΛίʔυԽͯ͠؅ཧ

Slide 30

Slide 30 text

AWSͷαʔϏε͝ͱʹϑΝΠϧΛ෼͚ͯ؅ཧ͍ͯ͠Δɻ

Slide 31

Slide 31 text

ଞͷ։ൃͰ΋༗ޮ׆༻Ͱ͖Δ • ֤αʔϏεͷAWS؀ڥΛඪ४Խͯ͠TerraformԽ͢Δ͜ͱͰɺ ߴ଎͔ͭ҆શʹΠϯϑϥߏஙΛߦ͏͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔɻ • ༰қʹςετ؀ڥΛߏங͢Δ͜ͱ͕Ͱ͖ɺ MicroservicesԽͨ࣌͠ͷςετ͕΍Γ΍͘͢ͳΔ

Slide 32

Slide 32 text

͓·͚

Slide 33

Slide 33 text

v0.7.0৽ػೳ • Data Resource • S3ͳͲ֎෦͔Β஋ΛಡΈࠐΜͰTerraform࣮ߦ͕Մೳ • Importػೳ • ݱࡏͷΠϯϑϥঢ়ଶ͔ΒTerraformͷίʔυΛੜ੒ʢtfϑ ΝΠϧͷΈʣ

Slide 34

Slide 34 text

AWSͷΠϯϑϥߏங΋ίʔυԽ͠Α͏ʂ