亚马逊AWS官方博客
使用 Terraform 在 AWS 中国区域实现自动化部署指南系列(二) TERRAFORM 进阶
使用 Terraform 在 AWS 中国区域实现自动化部署指南系列文章:
使用 Terraform 在 AWS 中国区域实现自动化部署指南系列(一) TERRAFORM 入门
使用 Terraform 在 AWS 中国区域实现自动化部署指南系列(二) TERRAFORM 进阶(本博文)
————
第3章 Terraform进阶
Terraform的功能非常丰富,可以通过Providers来提供对多平台的支持,通过Provisioners来实现本地与远程的脚本调用等功能,支持ssh与winrm的连接方式,也能作为Chef Client的方式运行,通过Modules去重用组件提高开发效率,大数AWS资源都能通过官方托管的Module Sources来重用。
本章节我们将利用更多的Terraform功能,来实现较复杂场景的部署。
3.1 部署架构
以上架构要采用常见的三层应用方式,Web层位于公网,App与DB层位于私有网段,Web层安全组开放80及22端口,App层安全组对Web层开放,DB层安全组对App层开放。
3.2 配置文件
新建一个helloworld2目录,将下面的四个文件存放到同一目录,文件的易读比较好,这里不对内容做详细解释,有关详细使用方法可以参考如下:
https://www.terraform.io/docs/index.html
https://registry.terraform.io/browse?provider=aws
3.2.1 variable.tf
变量申明, 编辑名为variable.tf的文件,内容如下
3.2.2 terraform.tfvars
编辑名为terraform.tfvars的文件,内容如下
3.2.3 aws.tf
编辑名为aws.tf的文件,内容如下
3.2.4 main.tf
编辑名为main.tf的文件,内容如下
3.3 部署运行
3.3.1 初始化
运行terraform init进行初始化,等待插件与Module自动下载
3.3.2 查看计划
运行terraform plan执行计划,暂时忽略这个报错,有可能是安全组相互引用的问题,在后面分段运行即可。
3.3.3 分块运行
由于资源相互引用,请按下面的顺序执行,也可以放一个shell脚本里面。运行过程有可能遇到时间过长,在控制台上看到资源都已经建好,请耐心等待。
1)terraform apply -target=module.vpc ### 创建VPC及相关资源
请留意最后一行,表示增加29个资源
Apply complete! Resources: 29(27) added, 0 changed, 0 destroyed.
2)terraform apply -target=module.websg ### 创建Web层安全组
3)terraform apply -target=module.appsg ### 创建App层安全组
4)terraform apply -target=module.dbssg ### 创建DB层安全组
5)terraform apply -target=module.ec2_web_1a ### 创建EC2 Web
6)terraform apply -target=module.ec2_web_1b ### 创建EC2 Web
7)terraform apply -target=module.ec2_app_1a ### 创建2个EC2 APP
8)terraform apply -target=module.ec2_app_1b ### 创建2个EC2 APP
9)terraform apply -target=module. mysql01 ### 创建多AZ MySQL实例
3.4 环境检查
3.4.1 VPC相关
3.4.2 EC2相关
3.4.3 MySQL相关
3.5 资源回收
terraform destroy ### 将自动删除所有创建的资源即可
————
使用 Terraform 在 AWS 中国区域实现自动化部署指南系列(一) TERRAFORM 入门
使用 Terraform 在 AWS 中国区域实现自动化部署指南系列(二) TERRAFORM 进阶(本博文)