其实在项目中,一般情况下都首选官方的一些模块,比如AWS VPC模块。下面只是演示如何自己创建AWS VPC资源。
首先创建一个目录,比如demo,然后进入该目录。
创建文件main.tf
terraform
provider "aws" {
access_key = "XXXXXXXXXXXXXXXXXX"
secret_key = "XXXXXXXXXXXXXXXXXX"
region = "eu-west-1"
}
resource "aws_vpc" "lcoding_prod_vpc" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "production"
}
}
resource "aws_subnet" "prod-subnet-1" {
vpc_id = aws_vpc.lcoding_prod_vpc.id
cidr_block = "10.0.1.0/24"
tags = {
Name = "production"
}
}
resource "aws_vpc" "lcoding_dev_vpc" {
cidr_block = "10.1.0.0/16"
tags = {
Name = "dev"
}
}
resource "aws_subnet" "dev-subnet-1" {
vpc_id = aws_vpc.lcoding_dev_vpc.id
cidr_block = "10.1.1.0/24"
tags = {
Name = "dev"
}
}
需要注意,在上面的配置文件中,两个不同资源的位置并不影响其最终效果。terraform会自动监测资源间的依赖关系。
运行:
bash
terraform apply --auto-approve
也可以通过以下方式引用已经创建了的VPC:
terraform
resource "aws_vpc" "vpc-prod" {
# ...
}
data "aws_vpc" "existing_vpc" {
default = true
}
resource "aws_subnet" "subnet-dev-1" {
vpc_id = data.aws.existing_vpc.id
# ...
}