调用函数“格式”失败:0处“%02d”的参数不足:需要索引1但总数为0

时间:2019-07-06 15:12:59

标签: azure-storage terraform-provider-azure

我正在创建一个terraform配置,基本上是一个VM集群,或者甚至取决于角色的单个VM。创建存储帐户时遇到问题。

用于创建存储帐户的Terraform配置如下:

 # Storage Account
    resource "azurerm_storage_account" "tf-sa-grpprd-aos" {
    #  count                    = "${var.count_aos_vm}"
      name                     = "${lower(var.aos_base_hostname)}${format("%02d,2")}${var.storage_account_suffix}01"
      location                 = "${azurerm_resource_group.tf-rg-grpprd-application.location}"
      resource_group_name      = "${azurerm_resource_group.tf-rg-grpprd-application.name}"
      account_tier             = "${var.sto_acc_tier_std}"
      account_replication_type = "${var.sto_acc_rep_type_lrs}"

    }

报告的错误在标题中,但如下所示

Error in function call
on aos.tf line 106, in resource "azurerm_storage_account" "tf-sa-grpprd-aos":
name                     = "${lower(var.aos_base_hostname)}${format("%02d,2")}${var.storage_account_suffix}01"
Call to function "format" failed: not enough arguments for "%02d" at 0: need
index 1 but have 0 total.

我参考下面的terraform文档 https://www.terraform.io/docs/configuration/functions/format.html

可能我不是以错误的方式使用它?欣赏是否有人可以澄清我在做什么失误...

基本上,如果我有5个生产应用程序框,则它应该只有一个存储帐户,如下所示 grpprodapp01..05,但是将存储帐户作为一个grpprodapp01

OR

即使我只有一个虚拟机,它也应该只有一个存储帐户,因此虚拟机的数量无关紧要,它应该只有一个存储帐户。

1 个答案:

答案 0 :(得分:1)

也许您犯了一个小错误。如错误所示,函数“格式”应该只有一个参数,但是您什么也没有给出。因此,如果您只想将整数2格式化为02,则应进行如下更改:

name = "${lower(var.aos_base_hostname)}${format("%02d", 2)}${var.storage_account_suffix}01"

它只是纠正您错误的格式。但是,正如说明所示,您希望存储帐户名称如grpprodapp01..05带有计数。并且如果变量var.aos_base_hostname的值为grpprodapp,则它应该像这样:

name = "${lower(var.aos_base_hostname)}${format("%02d", count.index)}"

如果您需要更多帮助,请告诉我。