使用AWS无服务器来构建Terraform
Terraform是什么?
Terraform是由HashiCorp用Go语言开发的开源软件。具体来说,Terraform通过代码声明基础设施的配置。在结构化的配置文件中,可以自动管理基础设施的配置,无需手动操作。在Terraform中,可以通过代码声明和执行基础设施的初始设置、更新和销毁。
AWS 的 Terraform 模块可在 AWS 统合和自动化名称空间页面的 Terraform 注册表中获取。使用提供的链接,可访问 Terraform 注册表中的模块或 GitHub 的源代码。
Terraform构建顺序
①创建IAM账户
➁创建CLI用户
③安装Terraform
④创建DynamoDB和S3
⑤部署Terraform扩展
创建IAM账号
创建CLI用户
在按下Show按钮后,获取Access key ID和Secret access key,并进行更新。
到目前为止,已经完成了IAM账号和CLI用户的创建。接下来,我想介绍一下Terraform构建。
在AWS上安装CLI
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
一旦完成CLI安装后,打开终端并执行“aws configure”命令。
$ aws configure
AWS访问密钥ID [无]: [访问密钥ID]
AWS秘密访问密钥 [无]: [秘密访问密钥]
默认区域名 [无]: ap-xxxxx-1
默认输出格式 [无]: json
安装Terraform。
首先,在以下链接中安装Terraform:
https://learn.hashicorp.com/tutorials/terraform/install-cli
当安装完成后,请执行以下命令:
terraform -v
创建DynamoDB和S3。
根据确认的信息,进行基础设施配置的创建。为了保存Terraform的设置,进行DynamoDB和S3的创建。
需要在Terraform文件中指定环境设置,需要按照以下方式调整环境。
变量“env”{
默认值=”prod”
}
变量“开发者”{
默认值=”dev”
}
变量 “project_version”{
默认值=”v01”
}
为了配置Terraform所需的模块,请在终端上运行以下命令:
terraform init
您将会看到以下信息:
│ 如果您要尝试自动迁移状态,请使用”terraform init -migrate-state”。
│ 如果您要将当前配置存储而不更改状态,请使用”terraform init -reconfigure”。
如果没有错误发生,为了对AWS进行部署的验证和结果测试,将执行以下命令:
执行Terraform方案。
为了将AWS应用到terraform中,请执行apply命令。
Terraform的展開
复制在Teraform文件中创建的dynamodb和s3桶。
terraform{
required_version=”>=0.12.0″
backend=”S3″{
region =”ap-xxxx-1″
bucket =”prod-xxxx-terraform-v01″
dynamodb_table =”prod-xxxx-terraform-state-lock-v01″
key =”./terraform.tfsate”
}
}
更新后,打开终端并执行以下命令:
terraform init
terraform plan(※)
terraform apply
在发生lock state错误时,可以在命令中添加-lock=false的选项然后执行。
当执行完成后,将在下方显示以下图像。
运行terraform成功,将更新的输出复制到上方。
结果:
堡垒机安全组 = “prod-abc-testsite-bastion-sg-20210811125740118500000005”
考试员CloudFront = “d3pxoqov8cscxi.cloudfront.net”
考试员域名 = “prod-examinator.kh-site_services.net”
考试员S3存储桶 = “prod-examinator.kh-site_services.net”
KH CloudFront = “d1fvmjxi4u4mf7.cloudfront.net”
KH域名 = “prod-cms-kh.kh-site_service.net”
KH S3存储桶 = “prod-cms-kh.kh-site_service.net”
域名证书 = “地区:{us-xxx-1}。证书:*.kh-site_service.net”
ABC ECS负载均衡 = “prod-abc-xxx-alb-1805414999.ap-northeast-1.elb.amazonaws.com”
ABC VPC = “vpc-0788d809b4d578c05”
ABC VPC安全组 = “sg-0da36f8fd568866c1”
ABC VPC数据库子网 = [
“subnet-10a6ea0769944a11a0”,
“subnet-209a6bc288ef8cb88c”,
“subnet-30d8aa8be98e25b86a”,
]
ABC VPC私有子网 = [
“subnet-10b9fa501f91b3b3c8”,
“subnet-10db375eec3d7bf36a”,
“subnet-103ec0e4a4d174dce0”,
]
ABC VPC公共子网 = [
“subnet-003adb19f3424eb1adf”,
“subnet-003db18f87d41965dd8”,
“subnet-00c619164e9187f2287”,
]
S3存储桶名称 = “prod-abc-xxx-logo-upload”
拥有者CloudFront = “d3ghdpxv1nxu3f.cloudfront.net”
拥有者域名 = “prod-cms-owner.kh-site_service.net”
拥有者S3存储桶 = “prod-cms-owner.kh-site_service.net”
Teraform构建已完成。
请在下面的网页上详细咨询有关AWS无服务器的信息。
来源: https://onetech.jp/