首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自现有库存的Terraform增量资源

来自现有库存的Terraform增量资源
EN

Stack Overflow用户
提问于 2018-06-12 20:22:27
回答 1查看 2.6K关注 0票数 1

如果这是个愚蠢的问题,请原谅。我是个土生土长的菜鸟,试图确定满足企业资源命名需求的最佳方法。

我们的云治理团队已经为拥有regionapp_nameenv的所有资源确定了一个命名方案,因此,例如,对于vm,我们可能有如下内容:

代码语言:javascript
复制
uw1vmmyapp001dev
uw1vmmyapp002dev
etc.

在从头部署时,这一切都很好,因为我只是使用{count.index},但是,现在我正试图确定如何部署额外的资源,并从以前延迟的资源(不是由terraform部署的资源)开始。是否有收集现有库存、解析当前值并从最高实例编号开始增量的terraform标准?(我用的是“随机”,但我们的云治理团队很快就把它压扁了。)

我的措辞做得真差。希望这有点道理?

哦,我在用azurerm_virtual_machine

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-12 22:02:42

如果没有任何分隔字符的话就很难了.只是一根挤在一起的绳子。如果有一个分隔字符,您可以使用split来拆分字符串并找出数字部分。无论如何,似乎也没有类似于azurerm_virtual_machine的数据源来获取命名信息。

如果您需要手动查找名称或id来导入有关当前资源的信息,那么您可以找到编号最高的VM,然后使用如下内容添加其他VM并增加数字:

代码语言:javascript
复制
${var.region}${var.resource_type}${var.appname}${format("%03d", count.index + var.last_num)}${var.env}

要测试这看起来是什么样子,您可以查看下面的示例:

代码语言:javascript
复制
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}"
}

这提供了如下的命名输出:

代码语言:javascript
复制
  + 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"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50825303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档