0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【簡単Terraform】【初心者向け】Terraformにおけるcountの使い方

Posted at

Terraformでは、count はリソースを条件に応じて動的に作成するために非常に便利なメタパラメータです。


1. 基本的な使い方

count をリソースブロックに指定すると、作成するリソースの数を決められます。

resource "aws_instance" "example" {
  count         = 3
  ami           = "ami-12345678"
  instance_type = "t2.micro"
}
  • 上記では3つのEC2インスタンスが作成されます。
  • Terraformは各インスタンスに自動的にインデックスを付けます:aws_instance.example[0], aws_instance.example[1], aws_instance.example[2]

2. 条件に応じたリソース作成

条件式を使って、作成するかどうかを制御できます。

variable "create_instance" {
  default = true
}

resource "aws_instance" "example" {
  count         = var.create_instance ? 1 : 0
  ami           = "ami-12345678"
  instance_type = "t2.micro"
}
  • create_instancefalse の場合は作成されません。
  • true の場合は1つ作成されます。

3. インデックスを使ったリソース属性の指定

count.index は現在のリソースインデックスを表します。名前やタグなどに動的に使用できます。

resource "aws_instance" "example" {
  count         = 3
  ami           = "ami-12345678"
  instance_type = "t2.micro"
  tags = {
    Name = "example-${count.index}"
  }
}
  • タグは順に example-0, example-1, example-2 になります。

4. リストやマップに基づく動的作成

リストやマップの長さに応じてリソースを作成できます。

variable "servers" {
  default = ["web1", "web2", "web3"]
}

resource "aws_instance" "example" {
  count         = length(var.servers)
  ami           = "ami-12345678"
  instance_type = "t2.micro"
  tags = {
    Name = var.servers[count.index]
  }
}
  • 3つのインスタンスが作成され、タグは web1, web2, web3 となります。

5. 注意点

  1. count は整数または整数を返す条件式である必要があります。
  2. 同じリソースブロックで for_each と同時に使用できません。
  3. count の数を変更すると:
    • 数を増やす → 新しいリソースが作成されます。
    • 数を減らす → 余分なリソースが破棄されます。

まとめ

  • count はリソースを複数作成したり、条件付きで作成したりするために使います。
  • よく使われるケース:
    1. 同じリソースを複数作成
    2. 条件に応じてリソースを作成(0または1)
    3. リストやマップに基づく動的作成
  • count.index を活用すると、動的に名前やタグを設定可能です。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?