从本文档起,作者计划在AWS上做一系列DevOps/IaC相关实验,本文是第三篇,使用Terraform创建Web应用基础架构。

本次实验架构图

本次实验架构图如下:

AWS-VPC-3层-LNMP.drawio.png

Terraform代码

本次代码可以从下载

代码结构如下:

2023-03-06-16-36-01-image.png

文档如下:

$ ll
total 52
-rw-r--r-- 1 ec2-user ec2-user 3201 Mar  6 03:22 appserver.tf
-rw-r--r-- 1 ec2-user ec2-user 1761 Feb 16 04:57 appserver_var.tf
-rw-r--r-- 1 ec2-user ec2-user 2402 Mar  6 03:28 elb.tf
-rw-r--r-- 1 ec2-user ec2-user  870 Feb 16 08:15 elb_var.tf
-rw-r--r-- 1 ec2-user ec2-user 2282 Mar  6 03:25 jumpserver.tf
-rw-r--r-- 1 ec2-user ec2-user 1772 Feb 16 03:43 jumpserver_var.tf
-rw-rw-r-- 1 ec2-user ec2-user  339 Mar  6 02:30 main.tf
-rw-rw-r-- 1 ec2-user ec2-user 1779 Feb 16 10:02 rds-mysql.tf
-rw-rw-r-- 1 ec2-user ec2-user  522 Feb 16 05:19 rds-mysql_var.tf
-rw-r--r-- 1 ec2-user ec2-user 1140 Mar  6 03:32 variable.tfvars
-rw-r--r-- 1 ec2-user ec2-user 4796 Mar  6 02:32 vpc.tf
-rw-r--r-- 1 ec2-user ec2-user  524 Feb 13 03:29 vpc_var.tf

执行Terraform代码

输入以下代码进行初始化设置

terraform init

2023-03-06-17-21-20-image.png

输入以下命令检查代码以及预计的输出是否符合预期

terraform plan --var-file=variable.tfvars

输入以下代码进行部署

terraform apply --var-file=variable.tfvars

输入yes确认部署

2023-03-06-17-45-28-image.png

部署成功会看到如下界面

2023-03-07-11-16-45-image.png

本例使用带有administrator的IAM role附加在EC2 profile中执行

验证部署

登陆Jumpserver

2023-03-08-11-15-28-image.png

通过Jumpserver访问APP Server

访问APP-1

2023-03-08-11-17-04-image.png

访问APP-2

2023-03-08-11-17-54-image.png

通过APP访问RDS mysql

2023-03-08-11-21-34-image.png

本实验结束,下一节会进行应用部署以及导入数据。