Terraform-CosmosDB的变量名

Terraform-CosmosDB的变量名,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我正在使用Terraform在Azure中创建资源,并将文件拆分为main.tf、variables.tf和Terraform.tfvars 为了有一个标准的命名约定,我在命名资源时遵循下面的过程 前缀环境资源名 例如,在main.tf中,我创建它如下: resource "azurerm_resource_group" "rg" { name = "${var.prefix}-${var.environment}-${var.resou

我正在使用Terraform在Azure中创建资源,并将文件拆分为main.tf、variables.tf和Terraform.tfvars

为了有一个标准的命名约定,我在命名资源时遵循下面的过程

前缀环境资源名

例如,在main.tf中,我创建它如下:

resource "azurerm_resource_group" "rg" {
name     = "${var.prefix}-${var.environment}-${var.resource_group_name}" 
location = "westus"
}
变量将在variables.tf中声明,terraform.tfvars将包含

prefix = "sample"
environment = "dev"
resource_group_name = "rg"
当Terraform被执行时,我将获得创建为“sample dev rg”的资源名称

当我创建其他资源或将代码部署到其他环境时,这将非常有用。因为我只需要单独修改TFVAR

另一个例子:

resource "azurerm_app_service" "example" {
  name  = "${var.prefix}-${var.environment_name}-${var.appservice_name}"
}
我的问题是:

resource "azurerm_app_service" "example" {
  name  = "${var.prefix}-${var.environment_name}-${var.appservice_name}"
}
  • 如何将上述逻辑用于CosmosDb?我需要main.tf中的名称 创建时没有特殊字符
  • 我如何创建类似这样的东西 这个:sampledevcosmosdbname

如果您使用Terraform 0.13及以上版本,您可以使用构成资源名称的每个变量,并确保它们都不使用特殊/异常字符。下面是一个示例
前缀
变量,它只能使用A-Z、A-Z、0-9和
-
字符:

variable "prefix" {
  type        = string
  description = "Prefix ID"

  validation {
    condition     = can(regex("^[A-Za-z0-9-]*$", var.prefix))
    error_message = "The prefix cannot use special characters."
  }
}
要创建类似于
sampledevcosmosdbname
prefix
environment
dbname
)的内容,只需将几个插值像这样相邻放置即可-无需分隔:

resource "azurerm_cosmosdb_sql_database" "example" {
   ...
   name = "${var.prefix}${var.environment}${var.dbname}"
}

谢谢你,阿迪尔。两种反应都很有魅力!!我要做的唯一一个小改动是在错误消息的末尾添加句点,否则会出现以下错误:“验证错误消息必须至少有一个完整的英文句子,以大写字母开头,以句点或问号结尾。”谢谢@Scorpio!编辑我的答案以添加句点。