Slide 1

Slide 1 text

TERRAFORMͰ͸͡ΊΔ INFRASTRACTURE AS CODE yusukeyasuo@redish

Slide 2

Slide 2 text

ର৅ • ඇΠϯϑϥΤϯδχΞͰɺΠϯϑϥͷߏஙɾӡ༻΋͠ͳ͖Ό͍ ͚ͳ͘ͳͬͨΤϯδχΞ • ·ͩInfrastructure as CodeΛ͍ͯ͠ͳ͍ΠϯϑϥΤϯδχΞ • தʙ্ڃऀ޲͚Ͱ͸ͳ͍Ͱ͢m(__)m

Slide 3

Slide 3 text

AGENDA • ࣗݾ঺հ • Infrastructure as Codeͱ͸ • Terraformͱ͸ • ࣮ྫ • ·ͱΊ

Slide 4

Slide 4 text

ࣗݾ঺հ • Yusuke Yasuo • ϦʔυΤϯδχΞ@redishגࣜձࣾ • NTT→ίϩϓϥ→ελʔτΞοϓΛ਺ࣾ • ελʔτΞοϓͰΤϯδχΞ1ʙ2ਓͷ࣌ ظ͕͋ΓɺAWSΛ৮ΔΑ͏ʹͳͬͨ

Slide 5

Slide 5 text

INFRASTRUCTURE AS CODEͱ͸ • ίʔυʹΑΔΠϯϑϥߏ੒؅ཧ

Slide 6

Slide 6 text

ͳͥίʔυ؅ཧ͕ඞཁ͔ʁ • खಈͰ؅ཧ͢Δͱେม͔ͩΒ

Slide 7

Slide 7 text

๻͕ܦݧͨ͠खಈ؅ཧͷฐ֐ • υΩϡϝϯτɺखॱॻ͕ͳ͍ͷͰͲ͏΍ͬͯߏங͔ͨ͠୲౰ ऀʹฉ͔ͳ͍ͱ෼͔Βͳ͍ • ୲౰ऀʹฉ͍ͯ΋ߏங࣌ͷهԱ͕ͳͯ͘෼͔Βͳ͍ • ো֐͕ൃੜͨ͠ࡍʹ෮چͰ͖ͳ͍ • ప໷Ͱθϩ͔Βߏங͢Δ • ୀ৬ޙ΋ো֐͕ൃੜ͢Δͱݺͼग़͞ΕΔ

Slide 8

Slide 8 text

ίʔυԽ͓͚ͯ͠͹ • Πϯϑϥͷઃఆ͕୭Ͱ΋෼͔ΔʢϒϥοΫϘοΫεԽ͠ ͳ͍ʣ • ো֐͕ൃੜͯ͠΋ίϚϯυҰͭͰ͙͢ʹ෮چ͕Մೳ • ࡞ۀϛε΋ى͜Βͳ͍ • ΠϯϑϥΤϯδχΞ͕͍ͳͯ͘΋؅ཧͰ͖Δ

Slide 9

Slide 9 text

ओͳπʔϧ

Slide 10

Slide 10 text

TERRAFORMͱ͸ • ΠϯϑϥετϥΫνϟఆٛπʔϧ • VagrantͳͲ։ൃ͍ͯ͠ΔHashiCorp͕ࣾ։ൃݩ • Πϯϑϥͷߏ੒ΛએݴతʹఆٛͰ͖Δ
 ※खଓ͖తʹॻ͔ͳͯ͘ྑ͍

Slide 11

Slide 11 text

Πϯετʔϧ • ϏϧυࡁΈόΠφϦΛμ΢ϯϩʔυͯ͠ύεΛ௨͚ͩ͢

Slide 12

Slide 12 text

ࣄલ४උ • IAMϢʔβʔͷ࡞੒ • AWS CLIΛར༻͢ΔͨΊͷIAMϢʔβʔΛ࡞੒͠ɺΞΫηεΩʔΛऔಘ͢Δ • AWS CLIͷηοτΞοϓ • $ aws configure Ͱೝূ৘ใΛηοτ͢Δ
 ※ ~/.aws/credentials ʹೝূ৘ใ͕อଘ͞Ε͍ͯΕ͹OK • terraformͷॳظԽ • $ terraform init

Slide 13

Slide 13 text

RDSΛ࡞੒͢Δྫ

Slide 14

Slide 14 text

ఆٛϑΝΠϧͷ࡞੒ provider "aws" { region = "ap-northeast-1" } resource "aws_db_instance" "default" { allocated_storage = 10 storage_type = "gp2" engine = "mysql" engine_version = "5.7" instance_class = "db.t2.micro" name = "mydb" username = "foo" password = "foobarbaz" parameter_group_name = "default.mysql5.7" } rds.tf

Slide 15

Slide 15 text

಺༰ͷνΣοΫ • $ terraform plan

Slide 16

Slide 16 text

RDSͷ࡞੒ • $ terraform apply

Slide 17

Slide 17 text

࡞੒ͨ͠ΦϒδΣΫτͷ֬ೝ • $ terraform show

Slide 18

Slide 18 text

஫ҙ͢Δ͜ͱ • TerraformͰ࡞੒ͨ͠ΦϒδΣΫτΛखಈͰมߋ͠ͳ͍ • ෳ਺ਓͰ࡞ۀ͢Δ৔߹͸tfstateͷ؅ཧʹؾΛ͚ͭΑ͏

Slide 19

Slide 19 text

·ͱΊ • ϓϩμΫγϣϯ༻ͷΠϯϑϥ͸ඞͣίʔυԽ͠·͠ΐ͏ • ίʔυԽ͠ͳ͍΋ͷ͸ϦϦʔε͠ͳ͍ • redishͰҰॹʹInfrastructure as Code͠·͠ΐ͏w