Настройка CORS в Azure учетной записи хранения от Terraform - PullRequest
1 голос
/ 03 февраля 2020

Я написал код Terraform для создания учетной записи хранения Azure. Вот код:

resource "azurerm_storage_account" "i_ten_prov_storage" {
  name                     = "${var.storage_account_name}"
  resource_group_name      = "${azurerm_resource_group.i_resource_group.name}"
  location                 = "${var.location}"
  account_tier             = "Standard"
  account_replication_type = "LRS"
  account_kind             = "StorageV2"

/*  cors_rule {
    allowed_headers = "${var.allowed_headers}"
    allowed_methods = "${var.allowed_methods}"
    allowed_origins = "${var.allowed_origins}"
    exposed_headers = "${var.exposed_headers}"
    max_age_in_seconds = "${var.max_age_in_seconds}"
  }*/
  cors_rule {
    allowed_headers = ["*"]
    allowed_methods = ["*"]
    allowed_origins = ["*"]
    exposed_headers = ["*"]
    max_age_in_seconds = ["*"]
  }
  tags = "${local.tags}"
}

Я следую этой документации, в которой говорится, что CORS разрешен в Terraform для azure учетной записи хранения: https://www.terraform.io/docs/providers/azurerm/r/storage_account.html#allowed_headers

Но Я получаю следующую ошибку при запуске terraform apply:

Error: azurerm_storage_account.idl_tenant_provisioning_storage: : invalid or unknown key: cors_rule
ERROR: Job failed: exit code 1

Я использую Terraform 0.11.11.

На портале azure я вижу, что cors может быть применяется отдельно для всех видов хранения

Screenshot from azure portal

и я хочу применить для всех видов объектов

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Я думаю, что возможным решением является выполнение команды CLI Azure внутри Terraform.

Я считаю, что команда CLI az storage cors add может добавить правило cors ко всем службам, если установить параметр --services со значением bfqt. Затем вы можете использовать Terraform null_resource для выполнения команды. Пример кода будет выглядеть следующим образом:

resource "null_resource" "test" {
    provisioner "local-exec" {
        command = "az storage cors add --methods GET POST PUT --origins '*' --services bqft --account-name xxx"       
    }
}

Вы можете добавить больше параметров, сколько вам нужно, внутри команды CLI. Команда PowerShell Set-AzStorageCORSRule, но команда CLI более удобна и удобна.

0 голосов
/ 03 февраля 2020

Документация здесь не ясна, но блок cors_rule должен быть вложен в блок queue_properties, как указано далее в документации по ресурсу :

* 1007 Блок * A queue_properties поддерживает следующее:
  • cors_rule - (необязательно) Блок cors_rule, как определено ниже.

  • logging - (Необязательно) Блок logging, как определено ниже.

  • minute_metrics - (Необязательно) Блок minute_metrics, как определено ниже.

  • hour_metrics - (Необязательно) Блок hour_metrics, как определено ниже.

Это также можно увидеть в схеме для ресурс в исходном коде :

// ...
            "queue_properties": {
                Type:     schema.TypeList,
                Optional: true,
                Computed: true,
                MaxItems: 1,
                Elem: &schema.Resource{
                    Schema: map[string]*schema.Schema{
                        "cors_rule": {
                            // ...
...