来自现有库存的 Terraform 增量资源
Terraform increment resource from existing inventory
如果这是一个愚蠢的问题,请原谅。我是 terraform 新手,正在尝试确定满足企业资源命名要求的最佳方法。
我们的云治理团队已经为您拥有 [region][resource_type][app_name][instance 0001-999][env] 的所有资源确定了命名方案 所以,例如对于虚拟机,我们可能有如下内容:
uw1vmmyapp001dev
uw1vmmyapp002dev
etc.
从头开始部署时这一切都很好,因为我只使用 {count.index} 但是,现在我正在尝试确定如何部署其他资源并从以前部署的资源(那是'由 Terraform 部署)。是否有用于收集现有库存、解析当前值并从最高实例编号开始递增的 Terraform 标准? (我使用的是随机数,但我们的云治理团队很快就解决了这个问题。)
我的措辞真的很糟糕。希望这能说得通吗?
哦,我正在使用 azurerm_virtual_machine
如果没有任何定界字符,这将非常困难...它只是一个拼凑在一起的字符串。如果有分隔符,您可以使用 split
来分解字符串并找出数字部分。无论如何,似乎也没有与 azurerm_virtual_machine
等效的数据源来获取命名信息。
鉴于您无论如何都需要手动查找名称或 ID 以导入有关当前资源的信息,您可以找到编号最高的 VM,然后使用类似以下的方法添加其他 VM 并增加数量:
${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"
如果这是一个愚蠢的问题,请原谅。我是 terraform 新手,正在尝试确定满足企业资源命名要求的最佳方法。
我们的云治理团队已经为您拥有 [region][resource_type][app_name][instance 0001-999][env] 的所有资源确定了命名方案 所以,例如对于虚拟机,我们可能有如下内容:
uw1vmmyapp001dev
uw1vmmyapp002dev
etc.
从头开始部署时这一切都很好,因为我只使用 {count.index} 但是,现在我正在尝试确定如何部署其他资源并从以前部署的资源(那是'由 Terraform 部署)。是否有用于收集现有库存、解析当前值并从最高实例编号开始递增的 Terraform 标准? (我使用的是随机数,但我们的云治理团队很快就解决了这个问题。)
我的措辞真的很糟糕。希望这能说得通吗?
哦,我正在使用 azurerm_virtual_machine
如果没有任何定界字符,这将非常困难...它只是一个拼凑在一起的字符串。如果有分隔符,您可以使用 split
来分解字符串并找出数字部分。无论如何,似乎也没有与 azurerm_virtual_machine
等效的数据源来获取命名信息。
鉴于您无论如何都需要手动查找名称或 ID 以导入有关当前资源的信息,您可以找到编号最高的 VM,然后使用类似以下的方法添加其他 VM 并增加数量:
${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"