从本文档起,作者计划在AWS上做一系列DevOps/IaC相关实验,本文是第一篇,使用虚拟机创建Terraform虚拟机,并将terraform的状态文件写入S3。
本次实验架构图
本次实验使用AWS的Default VPC,所以VPC等网络资源暂时不用创建,具体架构图如下:
1. 创建IAM role
在IAM portal上,选择IAM role,点击创建
在选择可信实体页面,选择亚马逊服务->EC2,点击下一步
在添加权限页面,选择AdministratorAccess权限。(本例中使用最高权限,实际中可以根据需要设置权限,比如S3fullaccess等)
输入role名称后,点击创建角色
2. 创建并配置S3
在S3 portal上,选择存储桶,点击创建存储桶
输入S3名称,点击创建存储桶
3. 创建S3 endpoint
在VPC portal上,选择终端节点,点击创建终端节点
在创建页面,输入以下信息:
4. 创建Terraform虚拟机
参考:部署EC2
部署Terraform虚拟机,选择Amazon Linux,创建后记录公网IP,使用SSH登陆虚拟机。
5. Terraform状态写入s3的部分代码
登陆虚拟后,输入以下命令部署Terraform
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
sudo yum -y install terraform
输入 terraform验证terraform安装是否正常
terraform
Usage: terraform [global options] <subcommand> [args]
The available commands for execution are listed below.
The primary workflow commands are given first, followed by
less common or more advanced commands.
输入以下信息,将状态文件写入S3
cat > provide.tf << EOF
#provider info
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "3.63.0"
}
}
backend "s3" {
bucket = "garyterraform"
region = "ap-northeast-1"
key = "aws/ec2/"
}
}
EOF
输入 terraform init进行初始化。
本次实验结束。