मैं azurerm_resource_group_template_deployment के लिए इनलाइन परिनियोजन का उपयोग कर रहा हूं और मैं एक पैरामीटर पास कर रहा हूं जो किसी अन्य टेराफॉर्म संसाधन के नाम का उपयोग करता है।

कोड:

resource "azurerm_app_service" "webapi" {
  name                = "${lower(var.deploymentEnvironment)}-webapi"
  location            = azurerm_resource_group.frontendResourceGroup.location
  resource_group_name = azurerm_resource_group.frontendResourceGroup.name
  app_service_plan_id = azurerm_app_service_plan.appSvcPlan.id
}

resource "azurerm_resource_group_template_deployment" "webapi_virtual_directory" {
  name                = "webapi_virtual_directory"
  resource_group_name = azurerm_resource_group.frontendResourceGroup.name
  deployment_mode     = "Incremental"
  template_content       = <<TEMPLATE
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
        "webAppName": {
            "type": "String"
        },
        "virtualApplications":{
        "type": "array",
        "defaultValue":[
            {
            "virtualPath": "/",
            "physicalPath": "site\\wwwroot",
            "preloadEnabled": false,
            "virtualDirectories": null
            }
        ]
        }
  },
  "variables": {},
  "resources": [
      {
          "type": "Microsoft.Web/sites/config",
          "name": "[concat(parameters('webAppName'), '/web')]",
          "apiVersion": "2020-06-01",
          "properties": {
              "virtualApplications": "[parameters('virtualApplications')]"
          },
          "dependsOn": []
      }
  ]
}
  TEMPLATE
  parameters_content  = jsonencode({webAppName = azurerm_app_service.webapi.name})
  depends_on          = [azurerm_app_service.webapi]
}

जब मैं टेराफॉर्म लागू कमांड चलाता हूं, तो मुझे त्रुटि मिलती है:

त्रुटि: मान्य टेम्पलेट परिनियोजन "webapi_virtual_directory" (संसाधन समूह "frontendapps-rg"): सत्यापन का अनुरोध: संसाधन। परिनियोजन क्लाइंट # मान्य: अनुरोध भेजने में विफलता: StatusCode = 400 - मूल त्रुटि: कोड = "अवैध अनुरोध सामग्री" संदेश = "अनुरोध सामग्री अमान्य था और deserialized नहीं किया जा सकता: 'Azure.ResourceManager.Deployments.Templates.Definitions.DeploymentParameterDefinition' टाइप करने के लिए मान "ci-webapi" कनवर्ट करने में त्रुटि। पथ 'properties.parameters.webAppName', पंक्ति 1, स्थिति 861।'। "

main.tf लाइन 134 पर, संसाधन "azurerm_resource_group_template_deployment" "webapi_virtual_directory" में: 134: संसाधन "azurerm_resource_group_template_deployment" "webapi_virtual_directory" {

0
Anthony Klotz 20 अक्टूबर 2020, 20:59

1 उत्तर

सबसे बढ़िया उत्तर

parameters_content संपत्ति का उपयोग करने के बजाय, मैंने defaultValue को template_content में इस तरह जोड़ा:

resource "azurerm_resource_group_template_deployment" "webapi_virtual_directory" {
  name                = "webapi_virtual_directory"
  resource_group_name = azurerm_resource_group.frontendResourceGroup.name
  deployment_mode     = "Incremental"
  template_content    = <<TEMPLATE
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "webAppName": {
        "type": "String",
        "defaultValue": "${azurerm_app_service.webapi.name}"
    },
    "virtualApplications":{
      "type": "array",
      "defaultValue":[
        {
        "virtualPath": "/",
        "physicalPath": "site\\wwwroot",
        "preloadEnabled": false,
        "virtualDirectories": null
        }
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Web/sites/config",
      "name": "[concat(parameters('webAppName'), '/web')]",
      "apiVersion": "2020-06-01",
      "properties": {
          "virtualApplications": "[parameters('virtualApplications')]"
      }
    }
  ]
}
TEMPLATE
  depends_on          = [azurerm_app_service.webapi]
}

अब मुझे टेम्पलेट परिनियोजन को सत्यापित करने में त्रुटि नहीं मिलती है।

0
Anthony Klotz 20 अक्टूबर 2020, 22:19