🦔

Terraformで特定のリソースだけをapplyしたいときのコマンド

2022/03/12に公開

例えばディレクトリに複数のtfファイルがあるとして、
そのディレクトリ内でterraform apply をすると、
ディレクトリ内のすべてのtfファイル内のリソースが対象となる。

時には、「あのリソースだけでいいんだけどな」という時もある。
そういう時は、terraform apply -target=リソース名でオプションを指定する。

例えば、こんな感じのvpc用のtfファイルがあったとする。

resource "aws_vpc" "example_vpc" {
  cidr_block           = "192.168.0.0/16"
  instance_tenancy     = "default"
  enable_dns_support   = true
  enable_dns_hostnames = true

  tags = {
    "Name" = "example_vpc"
  }
}

これ以外にも例えばEC2用のtfファイルもあったとして、
VPCだけ先にapplyしたければ、
terraform apply --target=aws_vpc.example_vpc とすれば、
指定したリソースだけを対象にしてapplyが出来る。
terraform destroy でも出来る。

ただ、applyしてyesと答える前にこのような警告が表示されるので、
-target オプションは日常使いのものではないらしい。

│ Warning: Resource targeting is in effect
│ 
│ You are creating a plan with the -target option, which means that the result of this plan may not represent all of the changes requested by the current configuration.
│ 
│ The -target option is not for routine use, and is provided only for exceptional situations such as recovering from errors or mistakes, or when Terraform specifically suggests to use it as part
│ of an error message.

Discussion