Terraform 管理员为随机提供者映射解决了什么问题?

Terraform 管理员为随机提供者映射解决了什么问题?,terraform,Terraform,我试图理解terraform随机提供者特性的用例。我读了这本书,但它没有为我点击。具体的例子是什么,使用守门员地图的情况以及原因。示例格式如下所示 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_i

我试图理解terraform随机提供者特性的用例。我读了这本书,但它没有为我点击。具体的例子是什么,使用守门员地图的情况以及原因。示例格式如下所示

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) ...
}
保管器是生成的随机字符串的种子。它们包含的数据基本上可以用来确保随机字符串是确定性的,直到发生了意味着它应该改变的事情

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

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

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

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

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

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

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