Может ли Azure Terraform переварить файлы JSON, созданные во время предоставления ресурсов ARM? - PullRequest
0 голосов
/ 08 октября 2019

Azure terraform поддерживает окончания файлов .tf.json. означает ли это, что terraform может вычислять файлы json для создания ресурса Azure на портале Azure? глядя на две ссылки ниже, эта проблема остается неясной?

https://www.terraform.io/docs/configuration/override.html https://www.terraform.io/docs/configuration/syntax-json.html

1 Ответ

0 голосов
/ 10 октября 2019

@ kimdav111 Файлы json, созданные при создании ресурсов на портале Azure, называются шаблонами ARM, и да, есть способ, которым Terraform может использовать эти шаблоны json. Ниже приведен пример того же:

resource "azurerm_resource_group" "test" {
  name     = "acctestRG-01"
  location = "West US"
}

resource "azurerm_template_deployment" "test" {
  name                = "acctesttemplate-01"
  resource_group_name = "${azurerm_resource_group.test.name}"

  template_body = <<DEPLOY
{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    }
  },
  "variables": {
    "location": "[resourceGroup().location]",
    "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'storage')]",
    "publicIPAddressName": "[concat('myPublicIp', uniquestring(resourceGroup().id))]",
    "publicIPAddressType": "Dynamic",
    "apiVersion": "2015-06-15",
    "dnsLabelPrefix": "terraform-acctest"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[variables('storageAccountName')]",
      "apiVersion": "[variables('apiVersion')]",
      "location": "[variables('location')]",
      "properties": {
        "accountType": "[parameters('storageAccountType')]"
      }
    },
    {
      "type": "Microsoft.Network/publicIPAddresses",
      "apiVersion": "[variables('apiVersion')]",
      "name": "[variables('publicIPAddressName')]",
      "location": "[variables('location')]",
      "properties": {
        "publicIPAllocationMethod": "[variables('publicIPAddressType')]",
        "dnsSettings": {
          "domainNameLabel": "[variables('dnsLabelPrefix')]"
        }
      }
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}
DEPLOY

  # these key-value pairs are passed into the ARM Template's `parameters` block
  parameters = {
    "storageAccountType" = "Standard_GRS"
  }

  deployment_mode = "Incremental"
}

output "storageAccountName" {
  value = "${lookup(azurerm_template_deployment.test.outputs, "storageAccountName")}"
}

https://www.terraform.io/docs/providers/azurerm/r/template_deployment.html

Невозможно изменить шаблон ARM на синтаксис конфигурации JSON, используемый Terraform для развертывания

Надеюсь, это поможет!

...