2017-02-05 48 views
3

我希望能夠部署一個複雜的ARM模板,利用本地Visual Studio中的DSC擴展和嵌套模板。 該示例設置爲從GitHub下載資產: https://github.com/Azure/azure-quickstart-templates/tree/master/active-directory-new-domain-ha-2-dc 我必須做些什麼更改才能將資源綁定到本地Visual Studio項目並使用它們而不是從GitHub下載它們? 這裏是帶下來的模板版本負責下載:Azure RM模板。如何使用VS自動上傳資源,而不是從GitHub獲取資源

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
    ... 
    "adPDCVMName": { 
     "type": "string", 
     "metadata": { 
     "description": "The computer name of the PDC" 
     }, 
     "defaultValue": "adPDC" 
    }, 
    "assetLocation": { 
     "type": "string", 
     "metadata": { 
     "description": "The location of resources such as templates and DSC modules that the script is dependent" 
     }, 
     "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/active-directory-new-domain-ha-2-dc" 
    } 
    ... 
    }, 
    "variables": { 
    ... 
    "adPDCModulesURL": "[concat(parameters('assetLocation'),'/DSC/CreateADPDC.ps1.zip')]", 
    "adPDCConfigurationFunction": "CreateADPDC.ps1\\CreateADPDC", 
    ... 
    }, 
    "resources": [ 
    ... 
    { 
     "name": "[parameters('adPDCVMName')]", 
     "type": "Microsoft.Compute/virtualMachines", 
     ... 
     "resources": [ 
     { 
      "name": "[concat(parameters('adPDCVMName'),'/CreateADForest')]", 
      "type": "Microsoft.Compute/virtualMachines/extensions", 
      ... 
      "properties": { 
      ... 
      "settings": { 
       "ModulesUrl": "[variables('adPDCModulesURL')]", 
       "ConfigurationFunction": "[variables('adPDCConfigurationFunction')]", 
       ... 
       } 
       } 
      } 
      } 
     } 
     ] 
    } 
    ] 
} 

回答

3

執行以下操作在Visual Studio中的「天青資源集團項目:

  1. 將文件複製到Visual項目工作室使用相同的 目錄結構。因此,一個DSC目錄和一個嵌套的模板目錄 屬於那裏的文件。
  2. 將目錄中的文件設置爲內​​容(不需要azuredeploy.json,僅包含您引用的文件)。通過這種方式,部署模板的powershell腳本將以azure的形式將其上傳到存儲帳戶。
  3. 可以使用上傳到存儲帳戶的文件。在這種情況下,您所指的模板不使用通用的命名規則。所以你需要改變一點:

    更改azuredeploy.json:將參數 assetLocation的名稱更改爲_artifactsLocation。

    第二:將一個參數 _artifactsLocationSasToken添加爲securestring。這兩個參數將由Visual Studio中的powershell腳本自動填充。所述azuredeploy.json的

部分:

"parameters": { 
    "_artifactsLocation": { 
     "type": "string", 
     "metadata": { 
     "description": "The base URI where artifacts required by this template are located. When the template is deployed using the accompanying scripts, a private location in the subscription will be used and this value will be automatically generated." 
     } 
    }, 
    "_artifactsLocationSasToken": { 
     "type": "securestring", 
     "metadata": { 
     "description": "The SAS token to access the storage account" 
     } 
    }, 
  • 因爲原始azuredeploy.json沒有使用_artifactsLocationSasToken參數。您需要更改使用assetlocation的所有變量。更改所有變量,以便使用_artifactsLocation並添加一部分以使用_artifactsLocationSasToken。
  • 一個樣本:

    "vnetTemplateUri": "[concat(parameters('_artifactsLocation'),'/nestedtemplates/vnet.json', parameters('_artifactsLocationSasToken'))]", 
    

    後所有改變的變量。您可以使用項目中的資源而不是github從Visual Studio部署模板。

    +0

    謝謝Naber先生!這是一個了不起的答案!你能否詳細說明步驟2?如何「將目錄中的文件設置爲內​​容」? – WinBoss

    +0

    選擇文件的屬性。在內容上設置生成操作。 –

    +0

    看看這個github示例:https://github.com/Azure/azure-quickstart-templates/tree/master/active-directory-new-domain - 它使用模式帕斯卡描述,而使用github的默認位置。 –

    相關問題