使用TerraForm在AWS上创建VPC

孙俊彦
2023-12-01

0.terraform在linux中的安装操作,请移步->《TerraForm安装》

https://blog.csdn.net/qq_38589895/article/details/105863539

1.创建一个简单的teralform目录结构

#cd /usr/ 
#tree terraform/    //此处tree命令只是用来查看目录结构的,具体目录结构需要手动创建
terraform/
├── s3    //S3存储桶
└── vpc    //VPC
    └── test_environment     //测试环境目录
        └── vpc.tf     //VPC资源代码

3 directories, 1 file

其他分类文件,例如:

  • terraform.tfvars --配置provider所需变量
  • varables.tf --通用变量
  • outputs.tf --输出内容
  • resource.tf --资源内容
  • provider.tf --provider配置

2.创建代码(供参考)

1.配置aws的供应商(terraform提供了很多云平台的API,此处使用AWS作为示例)

详情参照官方文档:https://www.terraform.io/docs/providers/index.html

#配置aws的供应商
provider "aws" {
    #配置版本
    version = "~> 3.0"
    #配置region
    region = "ap-northeast-1"
    #AWS的访问密钥ID
    access_key = "***************"
    #AWS的访问密钥
    secret_key = "***************"
}

AWS密钥获取:

  1. 登录AWS控制台
  2. 点击个人账户,选择“我的安全凭证”
  3. 选择“访问密钥”,创建密钥并下载密钥文件保存。
  4. 更多terraform身份认证方式参照:https://www.terraform.io/docs/providers/aws/index.html
2.创建VPC
#创建VPC,别名为test
resource "aws_vpc" "test"{
    #定义ip块
    cidr_block = "172.16.16.0/21"
    #设置允许dns主机名
	enable_dns_hostnames = true
	#设置标签
	tags = {Name = "my test vpc"}
}
3.创建internet gateway
#创建internet网关,别名test,并附加到VPC
resource "aws_internet_gateway" "test"{
    #绑定到vpc,${aws_vpc.test.id}为获取步骤2创建的vpc id
	vpc_id = "${aws_vpc.test.id}"
}
5.创建子网
#创建子网,别名a_public
resource "aws_subnet" "a_public"{
    #指定所属的VPC
	vpc_id = "${aws_vpc.test.id}"
	#设置ip块
	cidr_block = "172.16.17.0/24"
	#设置可用区
	availability_zone = "ap-northeast-1a"
	#设置标签
	tags = {Name = "M2M Tokyo POC Public-a"}
}
6.创建路由表
  1. 创建关联internet gateway的路由表
#创建路由表
resource "aws_route_table" "a_public"{
    #指定所属的VPC
	vpc_id = "${aws_vpc.test.id}"
	#绑定internet gateway,并绑定到0.0.0.0/0
	route{
		cidr_block = "0.0.0.0/0"
		gateway_id = "${aws_internet_gateway.test.id}"
	}
}

2.创建普通的路由表

resource "aws_route_table" "a_private"{
	vpc_id = "${aws_vpc.test.id}"
}
7.关联子网和路由表
#关联子网和路由表
resource "aws_route_table_association" "a_public"{
    #指定子网id
	subnet_id = "${aws_subnet.a_public.id}"
	#指定路由表id
	route_table_id = "${aws_route_table.a_public.id}"
}
 类似资料: