【问题标题】:Unable to download deployment content from private github repository URI无法从私有 github 存储库 URI 下载部署内容
【发布时间】:2018-11-07 01:49:20
【问题描述】:

我创建了新的 GitHub 私有存储库,其中我为 Azure 密钥保管库添加了 ARM 模板。之后,我尝试使用 PowerShell 工具从本地计算机部署 ARM 模板。

这是我用于将 ARM 模板部署到 azure 中的 PowerShell 脚本。

#Login-AzureRmAccount

#region Parameters
$resourceGroupName='KZEU-ARMTMP-SB-DEV-RGP-01'
$location='eastus'
$parametersUri='E:\Kishore\Kishore GitHub\ARMTemplates\Parameters\StorageAccount.parameters.json'
$templateUri='https://raw.githubusercontent.com/xxxxxxx/ARMTemplates/master/Templates/StorageAccount.json?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
$clientID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
$key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx="
#endregion

#region Login into Azure
 $SecurePassword = $key | ConvertTo-SecureString -AsPlainText -Force
 $cred = new-object -typename System.Management.Automation.PSCredential `
 -argumentlist $clientID, $SecurePassword

 Add-AzureRmAccount -Credential $cred -Tenant "xxxxxxxxxxxxxxxxxxxxxx" -  ServicePrincipal

 Set-AzureRmContext -SubscriptionID 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 #endregion

 #region Check or Create Resource Group
 Get-AzureRmResourceGroup -Name $resourceGroupName -ev notPresent -ea 0
 if($notPresent){ 
 Write-Host "Failover RG '$resourceGroupName' doesn't exist. Creating a new in $location...." -ForegroundColor Yellow
 New-AzureRmResourceGroup -Name $resourceGroupName -Location $location
 }else{
Write-Host "Using existing resource group '$resourceGroupName'" -ForegroundColor Yellow;
 }

#endregion

#region Validate & Deploy ARM Templates
try{
  $templateValidationResult= Test-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile $templateUri -TemplateParameterFile $parametersUri -Verbose
if($templateValidationResult[0].Code-eq"InvalidTemplateDeployment"){
    Write-Host "Failed to validate ARM template"
    exit 1
}else{
    Write-Host "Successfully completed to validate ARM template"
    $deploymentResult= New-AzureRmResourceGroupDeployment -Name StorageAccount-Deployment -ResourceGroupName $resourceGroupName -TemplateFile $templateUri -TemplateParameterFile $parametersUri -Verbose
    if($deploymentResult.ProvisioningState-eq"Succeeded"){
        Write-Host "Successfully completed to deploy ARM template"
    }else{              
        Write-Host "Failed to deploy ARM template"
        exit 1
    }       
}
 }
 catch{
  $ex = $_.Exception | Format-List -Force
  Write-Host $ex
  }

 #endregion

当我运行上面的 PowerShell 脚本时,我会收到类似

的错误

无法从“https://raw.githubusercontent.com/xxxx/demo-in/master/xxxx/keyVault.json”下载部署内容

那么,谁能建议我如何解决上述问题?

【问题讨论】:

  • 你能添加你正在运行的脚本吗?
  • @KenWMSFT,刚刚我更新了我的问题。
  • 你可以写一个代理

标签: azure powershell azure-keyvault arm-template


【解决方案1】:

您的问题是您无法从私有存储库 (see doc) 进行部署。您要做的是传递一个模板 URI 供 Azure 读取,它无权从您的私有存储库中读取。你有几个选择:

  1. 像文档中所说的那样,将 deploy.json 保存到 Azure Storage 并使用 SAS 令牌对其进行保护。
  2. 您可以在本地克隆您的存储库并 从本地文件部署。

【讨论】:

  • 谢谢@Ken,我知道你提到的上述两个过程。但我的客户要求是通过将本地参数文件传递给该 ARM 模板来从私有 GitHub 存储库部署 ARM 模板。