Terraform - устранены длительные ошибки развертывания в Azure

Мы используем Terraform, выполняемый через сценарий оболочки из окна Bash, для развертывания среды службы приложений. Развертывание среды службы приложений занимает от 1 до 2 часов.

Развертывание Terraform завершается через 1 час с сообщением об ошибке:

azurerm_template_deployment.ase: Error creating deployment: azure#WaitForCompletion: context has been cancelled: StatusCode=200 -- Original Error: context deadline exceeded

На самом деле развертывание не останавливается и в конечном итоге завершается успешно. Если после его завершения (как показано на портале Azure) мы повторно запустим развертывание Terraform, развертывание завершится успешно.

Файл журнала Terraform:

https://gist.github.com/Phydeauxman/0f9aa3d1c1379c36e2f8f420d0ae345e

Файл конфигурации Terraform:

provider "azurerm" {
  subscription_id = "${var.sub_id}"
}

data "terraform_remote_state" "rg" {
  backend = "azurerm"

  config {
    storage_account_name = "${var.tfstate_storage_account}"
    container_name       = "${var.tfstate_container}"
    key                  = "${var.tfstate_rgstate_file}"
    access_key           = "${var.tfstate_access_key}"
  }
}

resource "azurerm_resource_group" "ase_rg" {
  name     = "${var.ilbase_rg_name}"
  location = "${data.terraform_remote_state.rg.rglocation}"
}

resource "azurerm_template_deployment" "ase" {
  name                = "ILBASE_ARM_template"
  resource_group_name = "${azurerm_resource_group.ase_rg.name}"

  template_body = <<DEPLOY

  {
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "ilbase_name": {
        "type": "string"
      },
      "ilbase_domain_name": {
        "type": "string"
      },
      "ilbase_subnet_name": {
        "type": "string"
      },
      "ilbase_rglocation": {
        "defaultValue": "East US",
        "type": "string"
      },
      "vnet_id": {
        "type": "string"
      }
    },
    "variables": {
    },
    "resources": [
      {
        "apiVersion": "2016-09-01",
        "type": "Microsoft.Web/hostingEnvironments",
        "name": "[parameters('ilbase_name')]",
        "kind": "ASEV2",
        "location": "[parameters('ilbase_rglocation')]",
        "properties": {
          "name": "[parameters('ilbase_name')]",
          "location": "[parameters('ilbase_rglocation')]",
          "virtualNetwork": {
            "Id": "[parameters('vnet_id')]",
            "Subnet": "[parameters('ilbase_subnet_name')]"
          },
          "internalLoadBalancingMode": "Web, Publishing",
          "multiSize": "Standard_D1_V2",
          "multiRoleCount": 2,
          "workerPools": null,
          "ipsslAddressCount": 0,
          "dnsSuffix": "[parameters('ilbase_domain_name')]",
          "networkAccessControlList": [],
          "frontEndScaleFactor": 15,
          "apiManagementAccountId": null,
          "suspended": false,
          "dynamicCacheEnabled": null,
          "clusterSettings": null
        }
      }
    ],
    "outputs": {
    }
  }

  DEPLOY

  # these key-value pairs are passed into the ARM Template's `parameters` block
  parameters {
    "vnet_id"            = "${data.terraform_remote_state.rg.vnetid}"
    "ilbase_subnet_name" = "${data.terraform_remote_state.rg.sn2name}"
    "ilbase_name"        = "${var.ilbase_name}"
    "ilbase_domain_name" = "${var.ilbase_domain_name}"
  }

  deployment_mode = "Incremental"
}

#output "storageAccountName" {
#  value = "${azurerm_template_deployment.test.outputs["storageAccountName"]}"
#}

comment
Какой у вас файл tf?   -  person Shui shengbao    schedule 06.03.2018
comment
и подробные журналы ошибок.   -  person BMW    schedule 06.03.2018
comment
Что вы делаете, на развертывание у вас уходит больше часа?   -  person ydaetskcoR    schedule 06.03.2018
comment
@ydaetskcoR Среды обслуживания приложений до 1–2 часов на подготовку.   -  person phydeauxman    schedule 06.03.2018


Ответы (1)


Кажется, нет конкретного вопроса, но в отношении AzureRM 2.0 теперь можно добавлять собственные тайм-ауты. Во-вторых, рекомендуется использовать azurerm_template_deployment только тогда, когда тип ресурса не существует в терраформе. Служба приложений - первоклассный ресурс.

person Christian Pearce    schedule 20.07.2020