参考文献: Terraform Up & Running (Yevgeniy Brikman著)
cat <<-'EOF' > variables.tf
EOF
cat <<-'EOF' > main.tf
terraform {
required_version = "= 1.6.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "= 4.17.0"
}
}
}
provider "aws" {
region = "ap-northeast-1"
alias = "region_1"
}
provider "aws" {
region = "ap-northeast-3"
alias = "region_2"
}
data "aws_region" "region_1" {
provider = aws.region_1
}
data "aws_region" "region_2" {
provider = aws.region_2
}
data "aws_ami" "ubuntu_region_1" {
provider = aws.region_1
most_recent = true
owners = ["099720109477"]
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"]
}
}
data "aws_ami" "ubuntu_region_2" {
provider = aws.region_2
most_recent = true
owners = ["099720109477"]
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"]
}
}
resource "aws_instance" "region_1" {
provider = aws.region_1
ami = data.aws_ami.ubuntu_region_1.id
instance_type = "t3.micro"
}
resource "aws_instance" "region_2" {
provider = aws.region_2
ami = data.aws_ami.ubuntu_region_2.id
instance_type = "t3.micro"
}
EOF
cat <<-'EOF' > outputs.tf
output "region_1" {
value = data.aws_region.region_1.name
description = "region_1"
}
output "region_2" {
value = data.aws_region.region_2.name
description = "region_2"
}
output "instance_region_1_az" {
value = aws_instance.region_1.availability_zone
description = "instance_region_1_az"
}
output "instance_region_2_az" {
value = aws_instance.region_2.availability_zone
description = "instance_region_2_az"
}
EOF
terraform init
terraform fmt
terraform -version
terraform apply -auto-approve
terraform destroy -auto-approve