我整理了使用AWS和Terraform的方法(1/10)
Terraform是什么?
Terraform是一款用于以代码方式定义云上基础设施的工具。
有哪些功能?
1. 云服务提供商的定义
可以指定 Terraform 支持的云服务提供商,如 AWS、Microsoft Azure、Google Cloud Platform等。
2. 资源的定义
可以使用代码定义云服务提供商提供的资源,如 EC2实例、S3存储桶、VPC等。
3. 模块的使用
将具有共同功能的资源定义为可重复使用的模块,可以减少代码的重复。
4. 状态管理
将 Terraform 管理的资源状态保存到文件中,可在下次部署时维持状态。
5. 部署
将 Terraform 定义的资源部署到云服务提供商,构建基础架构。
通过代码管理基础架构,可以更轻松地进行版本控制和更改历史记录。
构建适用于AWS的Terraform环境的步骤(适用于Windows电脑)
1. 安装 AWS CLI
为了使用 Terraform,需要先安装 AWS CLI。请参考 AWS 官方网站(https://aws.amazon.com/cli/)了解 AWS CLI 的安装方法。
2. 创建 AWS 访问密钥
登录 AWS,从 IAM 创建访问密钥。在稍后使用 Terraform 访问 AWS 资源时需要使用该访问密钥。
3. 下载 Terraform
从 Terraform 官方网站(https://www.terraform.io/downloads.html)下载适用于 Windows 的 Terraform 二进制文件。
4. 安装二进制文件
解压下载的 Terraform 二进制文件,并将其移动到安装目录中。例如,创建一个名为 C:\terraform 的目录,并将 Terraform 二进制文件放置其中。
5. 初始化 Terraform
在存储 Terraform 代码的目录中,运行 terraform init 命令。这样,Terraform 就可以使用 AWS 提供程序。
6. AWS 认证信息设置示例
为了让 Terraform 能够访问 AWS,需要设置 AWS 的认证信息。
在命令提示符中按以下方式设置环境变量。
set AWS_ACCESS_KEY_ID=<access-key>
set AWS_SECRET_ACCESS_KEY=<secret-key>
7. 使用Terraform创建代码
使用代码定义要通过Terraform管理的AWS资源。
例如,要创建EC2实例,则在.tf文件中定义aws_instance资源。
8. 执行Terraform
执行terraform apply命令,根据代码创建AWS资源。
此外,还可以通过执行terraform plan命令来确认将创建的AWS资源的变化。
9. 清理Terraform资源
如果需要撤销对AWS资源的更改,则执行terraform destroy命令来删除资源。
步骤
为了运行Terraform,需要创建一个项目目录。
mkdir myproject
cd myproject
在Terraform中設定AWS認證信息,需要設定AWS存取金鑰和秘密存取金鑰,可以使用AWS命令列界面(CLI)進行設定。
$ aws configure AWS Access Key ID [None]:
************ AWS Secret Access Key [None]:
************ Default region name [None]:
ap-northeast-1 Default output format [None]: json
3. 代码记录(示例)
将AWS的Auto Scaling组连接到应用负载均衡(ALB)的方法。
1. 创建ALB资源。
resource "aws_lb" "example" {
name = "example-lb"
internal = false
load_balancer_type = "application"
subnets = [aws_subnet.example1.id, aws_subnet.example2.id]
security_groups = [aws_security_group.example.id]
}
创建指定AMI映像的Launch Configuration资源。
resource "aws_launch_configuration" "example" {
name = "example-lc"
image_id = "ami-0123456789abcdef" # ここにAMIイメージIDを指定
instance_type = "t2.micro" # インスタンスタイプを指定
security_groups = [aws_security_group.example.id]
key_name = "example-keypair"
associate_public_ip_address = true
user_data = <<-EOF
# インスタンスの初期化スクリプトをここに指定
# 例えば、Apache Web Serverをインストールするシェルスクリプトをここに記述
# EOF
EOF
}
创建一个Auto Scaling组资源。
例如,创建一个最小数为1,最大数为3的Auto Scaling组。
resource "aws_autoscaling_group" "example" {
name = "example-asg"
launch_configuration = aws_launch_configuration.example.id
min_size = 1
max_size = 3
target_group_arns = [aws_lb_target_group.example.arn]
vpc_zone_identifier = [aws_subnet.example1.id, aws_subnet.example2.id]
health_check_type = "EC2"
}
4. 我们创建一个ALB目标组。
resource "aws_lb_target_group" "example" {
name = "example-tg"
port = 80
protocol = "HTTP"
health_check {
path = "/"
}
}
Auto Scaling组连接到ALB。
执行编写好的代码
main.tf中包含了定义由Terraform管理的资源的代码。这些资源包括AWS的EC2实例和RDS等。上述示例代码适用于此。
进行Terraform初始化
进行Terraform项目的初始化操作。
terraform init
执行terraform init命令,进行所需提供程序和模块的初始化。通过执行此命令,可以解析main.tf文件中指定的提供程序版本,并下载所需的模块。
确认Terraform语法
确认Terraform代码的语法。
terraform validate
查看Terraform执行计划
terraform plan
运行terraform plan命令以确认更改内容。通过执行此命令,可以显示Terraform会进行哪些更改。
执行Terraform操作
执行Terraform代码。
terraform apply
执行terraform apply命令,实际应用变更。通过执行此命令,将创建、更新和删除在main.tf中定义的资源。
删除 Terraform
删除由 Terraform 代码创建的资源。
terraform destroy
你可以使用terraform destroy命令来删除已创建的资源。通过执行该命令,将删除在main.tf文件中定义的资源。