gpt4 book ai didi

json - Azure RM 模板。如何使用 VS 自动上传资源而不是从 GitHub 获取资源

转载 作者:行者123 更新时间:2023-12-04 14:40:26 26 4
gpt4 key购买 nike

我希望能够部署一个复杂的 ARM 模板,该模板利用本地 Visual Studio 中的 DSC 扩展和嵌套模板。该示例设置为从 GitHub 下载资源: https://github.com/Azure/azure-quickstart-templates/tree/master/active-directory-new-domain-ha-2-dc我必须进行哪些更改才能将 Assets 绑定(bind)到本地 Visual Studio 项目并使用它们,而不是从 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')]",
...
}
}
}
}
}
]
}
]
}

最佳答案

在 Visual Studio 的“Azure 资源组”项目中执行以下操作:

  1. 使用相同的方法将文件复制到 Visual Studio 中的项目目录结构。所以 DSC 目录和nestedtemplates 目录属于那里的文件。
  2. 将目录中的文件设置为内​​容(不需要 azuredeploy.json,只需要您引用的文件)。这样,用于部署模板的 powershell 脚本会将其上传到 azure 中的存储帐户。
  3. 可以使用上传到存储帐户的文件。在这种情况下,您引用的模板不使用常见的命名约定。所以你需要稍微改变一下:

    更改azuredeploy.json:更改参数名称assetLocation 到 _artifactsLocation。

    第二:添加参数_artifactsLocationSasToken 作为安全字符串。这 2 个参数将由 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'))]",

    更改所有变量后。您可以使用项目中的资源从 Visual Studio 部署模板,而不是从 github 部署模板。

    关于json - Azure RM 模板。如何使用 VS 自动上传资源而不是从 GitHub 获取资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42052662/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com