HELLO Terraforming
Tomoaki yahagi 2016/12 in meating
Terraform 知ってる人(Terraform使った
ことある人)
Terraformって何?
構成管理ツール
近年Dockerが流行ったと思うけど、コンテナじゃなくて、物
理的な構成管理
AWS, GCP等をサポート
美味いの?
美味しいです
何がいい?
Dockerと同じような理由だけど、構成をコード上で管理でき
る
同じような物を沢山作ったり、少し弄るような事が簡単に出
来る
コード管理出来るので、誰が何をやったのかを管理できる。
現在どういう構成になっているのかコードベースで把握でき
る。diffも取れる
入れてみる
っ
https://www.terraform.io/downloads.h
tml
$ terraform
usage: terraform [--version] [--help]
<command> [<args>]
Dockerfileみたいなもの(hoge.tf)
provider "aws" {
access_key = "Your AWS Access Key"
secret_key = "Your AWS Secret Key"
region = "Your region"
}
resource "aws_instance" "otameshi" {
instance_type = "t2.nano"
}
$ terraform plan
Refreshing Terraform state prior to plan...
+ aws_instance.example
ami: "" => "ami-408c7f28"
availability_zone: "" => ""
instance_type: "" => "t2.nano"
key_name: "" => ""
private_dns: "" => ""
private_ip: "" => ""
public_dns: "" => ""
:
$ terraform apply
aws_instance.example: Creating...
ami: "" => "ami-408c7f28"
instance_type: "" => "t2.nano"
aws_instance.example: Creation complete
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
The state of your infrastructure has been saved to the path
below. This state is required to modify and destroy your
infrastructure, so keep it safe. To inspect the complete state
use the  terraform show command.
State path: terraform.tfstate
AWS Console を見てみる
出来てる!!
$ terraform plan と$ terraform apply
について
$ terraform plan
.tf ファイルの内容に誤りが無いか、また矛盾が無いかどうか等を
確認する
$ terraform apply
実際に構成を適応する
作ったインスタンスにサヨナラしたい時
$ ./terraform plan -destroy
aws_instance.example: Destroying...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
AWS Console を開いてみると消えてい
る(画像は省略)
…
EC2意外も管理できるよ(楽しいから触っ
てみてね)
provider "aws" {
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
region = "ap-northeast-1"
}
resource "aws_subnet" "xxx-1a" {
vpc_id = "${aws_vpc.xxx.id}"
cidr_block = "172.31.0.0/20"
tags {
Name = "xxx-1a"
}
}
resource "aws_route53_zone" "xxx_net" {
name = "xxx.net"
}
終わり
補足
.tftate
現在の実際の構成、例えば.tfに書かれないインスタンスID等が
記載される
Gemfile.lockに近いイメージ
.tfstate.backup
applyする前の前回の構成。
ああ、やらかしてしまった…!!等の時に前回の構成を把握
できる
まぁGitで管理してればHEAD^とdiff取ればいいんだけど
ね・・・
.tfstateはリポジトリには必ず入れた方が良いでしょう
.tfstate.backupはオプション…?(でも自分は入れてい
る)
御清聴有難うございました。
(本当の終わり)

Terraforming