在使用Terraform管理AWS资源时,介绍一些在为资源添加标签信息时的技巧
首先
大家好。我想在使用AWS时,通常会为了方便运维管理等方面考虑,给资源添加标签是一种常见的设置。今天我想介绍一下关于使用Terraform给AWS资源添加标签的小技巧。
基本标签的设定方法
作为基本配置方法,您可以在AWS提供商的定义中设置默认标签。这样,您就可以将标签应用于所有AWS资源,而不会遗漏任何资源。我建议您利用这个方法。
provider "aws" {
region = var.aws_region
default_tags {
tags = {
owner = "matt"
terraform = "true"
}
}
}
多种标签设置方法
「基本的なタグの設定方法」は1つのパターンのみでしたが、例えば環境を表すタグ情報などを少し変えたい場合など、複数のグループに分けたいケースもあると思います。そのような場合は、各グループごとにプロバイダーの設定を準備し、各リソースの定義においてプロバイダーを指定することで、期待通りの動作を実現することができます。
provider "aws" {
alias = "dev"
region = var.aws_region
default_tags {
tags = {
owner = "matt"
environment = "dev"
terraform = "true"
}
}
}
provider "aws" {
alias = "prod"
region = var.aws_region
default_tags {
tags = {
owner = "matt"
environmemt = "prod"
terraform = "true"
}
}
}
resource "aws_xxxx_xxxx" "dev" {
provider = aws.dev
# 以下、省略
}
resource "aws_xxxx_xxxx" "prod" {
provider = aws.prod
# 以下、省略
}
资源个别标签的设置方法。
对于诸如资源名称标签等每个资源的不同值的标签,应在每个资源定义的tags块内进行定义。此外,还可以通过在每个资源定义的tags块中指定与供应商设置的标签设置相同键的标签,从而覆盖其值。
resource "aws_xxxx_xxxx" "sample" {
name = var.resource_name
# 途中、省略
tags = {
name = var.resource_name
}
}
对于模块标签的继承设置方法
如果要在模块中继承标签设置,请使用providers模块来指定要进行标签设置继承的提供者。需要注意的是,在互联网上也有一些示例,其中模块继承了一个空的提供者模块的提供者的定义,但请注意,那些示例是过时的格式。
provider "aws" {
region = var.aws_region
default_tags {
tags = {
owner = "matt"
workload = "common"
terraform = "true"
}
}
}
provider "aws" {
alias = "web"
region = var.aws_region
default_tags {
tags = {
owner = "matt"
workload = "web"
terraform = "true"
}
}
}
module "sample" {
source "../../modules/sample"
providers = {
aws = aws
aws.web = aws.web
}
# 以下、省略
}
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
configuration_aliases = [
aws,
aws.web,
]
}
}
}
resource "aws_xxxx_xxxx" "default" {
# 以下、省略
}
resource "aws_xxxx_xxxx" "web" {
provider = aws.web
# 以下、省略
}
结束
对于经常使用Terraform的人来说,这可能是一些“当然是这样啊”的信息,但如果这篇文章对某人有所帮助,我会感到非常幸福。以上是关于在Terraform管理的AWS资源中添加标签信息的小技巧介绍。
-
- AWS は、米国その他の諸国における Amazon.com, Inc. またはその関連会社の商標です。
-
- Terraform は、HashiCorp, Inc. の米国およびその他の国における商標または登録商標です。
- その他、記載されている会社名および商品・製品・サービス名は、各社の商標または登録商標です。