随机提供者的守护者映射解决了什么问题?

ams*_*ams 6 terraform

我试图了解terraform random 提供者的keeper功能的用例。我阅读了文档,但它不适合我。具体示例是什么,使用 keeper 地图的情况以及原因。下面复制的文档示例。

resource "random_id" "server" {
  keepers = {
    # Generate a new id each time we switch to a new AMI id
    ami_id = "${var.ami_id}"
  }

  byte_length = 8
}

resource "aws_instance" "server" {
  tags = {
    Name = "web-server ${random_id.server.hex}"
  }

  # Read the AMI id "through" the random_id resource to ensure that
  # both will change together.
  ami = "${random_id.server.keepers.ami_id}"

  # ... (other aws_instance arguments) ...
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*one 15

它们keepers是生成的随机字符串的种子。它们包含的数据本质上可以用来确保您的随机字符串是确定性的 - 直到发生意味着它应该改变的事情。

如果您有一个没有任何 的随机字符串keepers,并且您在服务器的 Name 标签中使用它(如本例所示),那么 Terraform 将在您每次运行terraform plan/时生成一个更改名称(包含新的随机 ID)的计划terraform apply

这是不可取的,因为虽然您在第一次创建服务器时可能需要随机性,但您可能希望随机性太大以至于它不断变化。也就是说,一旦应用您的计划,您的基础设施应该保持稳定,并且只要其他一切保持不变,后续计划就不会产生任何变化。

当需要对此服务器进行更改时(例如,在本例中,更改其构建的映像),您可能希望服务器名称自动更改为新的随机值以表示这不再是同一台服务器像之前一样。因此,在随机 ID中使用 AMI IDkeepers意味着当您的 AMI ID 更改时,也会为服务器名称生成一个新的随机 ID。