在使用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. の米国およびその他の国における商標または登録商標です。

 

    その他、記載されている会社名および商品・製品・サービス名は、各社の商標または登録商標です。
广告
将在 10 秒后关闭
bannerAds