More Related Content Similar to Terraformで始めるInfrastructure as Code
Similar to Terraformで始めるInfrastructure as Code (20) More from Takahisa Iwamoto
More from Takahisa Iwamoto (11) Terraformで始めるInfrastructure as Code33. Lambdaファンクションのデプロイ
33
data "archive_file" "sample_function" {
type = "zip"
source_dir = "lambda/sample_function"
output_path = "lambda/upload/sample_function.zip"
}
resource "aws_lambda_function" "sample_function" {
filename = "${data.archive_file.sample_function.output_path}"
function_name = "sample_function"
role = "${aws_iam_role.lambda_sample_function.arn}"
handler = "lambda_function.lambda_handler"
source_code_hash = "${data.archive_file.sample_function.output_base64sha256}"
runtime = "python3.6"
memory_size = 128
timeout = 30
}
35. 同じEC2を複数のリージョンに配置する
35
variable "subnets" {
default = {
"0" = "subnet-12345"
"1" = "subnet-56789"
}
}
resource "aws_instance" "web" {
count = 2
ami = "ami-12345"
instance_type = "t2.micro"
key_name = ”hoge.key"
vpc_security_group_ids = [
"sg-123456",
]
subnet_id = "${lookup(var.subnets, count.index%2)}"
}
38. 異なるEC2を複数台作成する3
「vpc.tf」
38
resource "aws_vpc" "my-vpc" {
cidr_block = "10.11.0.0/16"
instance_tenancy = "default"
enable_dns_support = "true"
enable_dns_hostnames = "false"
}
resource "aws_subnet" "public" {
count = "${length(var.subnets)}"
vpc_id = "${aws_vpc.my-vpc.id}"
cidr_block = "${lookup(var.subnets[count.index], "subnet-cidr")}"
availability_zone = "${lookup(var.subnets[count.index], "subnet-az")}"
}
39. 異なるEC2を複数台作成する4
「ec2.tf」
39
resource "aws_instance" "ec2" {
count = "${length(var.ec2-param)}"
ami = "${lookup(var.ec2-param[count.index], "ami-id")}"
instance_type = "${lookup(var.ec2-param[count.index], "ec2-instance-type")}"
key_name = "${var.keypaer-name}"
subnet_id = "${element(aws_subnet.public.*.id, "${lookup(var.ec2-param[count.index], "ec2-
subnet")}")}"
root_block_device = {
volume_type = "gp2"
volume_size = "${lookup(var.ec2-param[count.index], "ec2-volume-size")}"
}
}
42. EC2を作るベストプラクティス2
「terraform.tfvars」
「ec2.tf」
42
ec2-param = {
ami-id = "ami-08847abae18baa040"
ec2-instance-type = "t2.micro"
ec2-volume-size = "20"
}
resource "aws_instance" "ec2" {
count = 2
ami = "${lookup(var.ec2-param, "ami-id")}"
instance_type = "${lookup(var.ec2-param, "ec2-instance-type")}"
subnet_id = “XXXXXXX”
root_block_device = {
volume_type = "gp2"
volume_size = "${lookup(var.ec2-param, "ec2-volume-size")}"
}
}