gpt4 book ai didi

azure - Terraform 从现有库存中增加资源

转载 作者:行者123 更新时间:2023-12-03 01:43:10 25 4
gpt4 key购买 nike

如果这是一个愚蠢的问题,请原谅。我是一个 terraform 菜鸟,正在尝试确定满足企业资源命名要求的最佳方法。

我们的云治理团队已为您拥有 [region][resource_type][app_name][instance 0001-999][env] 的所有资源确定了命名方案,因此,例如,我们的虚拟机可能具有如下所示的名称:

uw1vmmyapp001dev
uw1vmmyapp002dev
etc.

从头开始部署时这一切都很好,因为我只使用 {count.index} 但是,现在我正在尝试确定如何部署其他资源并从之前部署的资源(未由地形)。是否有一个 terraform 标准来收集现有库存、解析当前值并从最高实例编号开始递增? (我使用的是随机数,但我们的云治理团队很快就粉碎了它。)

我的措辞确实很糟糕。希望这有某种意义吗?

哦,我正在使用 azurerm_virtual_machine

最佳答案

当没有任何分隔字符时,这将非常困难......它只是一个推在一起的字符串。如果有分隔符,您可以使用 split分解字符串并找出数字部分。无论如何,似乎也没有与 azurerm_virtual_machine 等效的数据源来获取命名信息。

鉴于您无论如何都需要手动查找名称或 ID 来导入有关当前资源的信息,您可以找到编号最高的虚拟机,然后使用类似以下内容来添加其他虚拟机并增加编号:

${var.region}${var.resource_type}${var.appname}${format("%03d", count.index + var.last_num)}${var.env}

要测试它的外观,您可以查看以下示例:

variable "last_num" {
default = 98
}

variable "region" {
default = "uw"
}

variable "resource_type" {
default = "vm"
}

variable "appname" {
default = "myapp"
}

variable "env" {
default = "dev"
}

resource "local_file" "foo" {
count = 3
filename = "foo.text"
content = "${var.region}${var.resource_type}${var.appname}${format("%03d", count.index + 1 + var.last_num)}${var.env}"
}

这给出了这样的命名输出:

  + local_file.foo[0]
id: <computed>
content: "uwvmmyapp099dev"
filename: "foo.text"

+ local_file.foo[1]
id: <computed>
content: "uwvmmyapp100dev"
filename: "foo.text"

+ local_file.foo[2]
id: <computed>
content: "uwvmmyapp101dev"
filename: "foo.text"

关于azure - Terraform 从现有库存中增加资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50825303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com