Visual Studio 中的 ARM 項目如何上傳其 DSC(和其他)資產?
我曾經使用過一些 ARM 模板,但在 Visual Studio 中建構 ARM 項目是新的。當您創建 VM 資源並隨後創建腳本或 DSC 擴展時,除了新的 JSON 之外,還會進行 Powershell 更改,但 Powershell 腳本的下一次執行會提示新的 _artifactsLocation 和 _artifactsSASToken。
有人能解釋一下這些值指的是什麼嗎,請指出如何確保資源組的 ARM 模板部署上傳隨附的附加腳本/DSC 資產並確保它們被執行的文件?我能找到的所有文件都涉及 Web 應用程序,並假設您要上傳的資產是要執行的 Web 應用程序。
為清晰而編輯:當您將 DSC 資源添加到 Visual Studio 中的現有 ARM 項目時,它會添加程式碼以創建儲存容器並上傳 DSC 腳本,但這似乎不完整?從 powershell 提示符執行腳本會提示輸入不完整的參數,似乎忽略了創建儲存帳戶的程式碼(如果它不存在)…
您需要將 DSC zip 文件上傳到 Azure 儲存帳戶。路徑是
https://<accoutn name>.blob.core.windows.net/<container name>/DSC/<name.zip>
。
_artifactsLocation
是您的儲存帳戶路徑,值為https://<accoutn name>.blob.core.windows.net/<container name>
.
_artifactsSASToken
是您的儲存帳戶 SAS 令牌。關於 sas 令牌,請參閱此連結。您可以使用 Power Shell 獲得這兩個值。
$StorageAccountContext = (Get-AzureRmStorageAccount | Where-Object{$_.StorageAccountName -eq $StorageAccountName}).Context # Generate the value for artifacts location if it is not provided in the parameter file $ArtifactsLocation = $OptionalParameters[$ArtifactsLocationName] if ($ArtifactsLocation -eq $null) { $ArtifactsLocation = $StorageAccountContext.BlobEndPoint + $StorageContainerName $OptionalParameters[$ArtifactsLocationName] = $ArtifactsLocation } # Generate the value for artifacts location SAS token if it is not provided in the parameter file $ArtifactsLocationSasToken = $OptionalParameters[$ArtifactsLocationSasTokenName] if ($ArtifactsLocationSasToken -eq $null) { # Create a SAS token for the storage container - this gives temporary read-only access to the container $ArtifactsLocationSasToken = New-AzureStorageContainerSASToken -Container $StorageContainerName -Context $StorageAccountContext -Permission r -ExpiryTime (Get-Date).AddHours(4) $ArtifactsLocationSasToken = ConvertTo-SecureString $ArtifactsLocationSasToken -AsPlainText -Force $OptionalParameters[$ArtifactsLocationSasTokenName] = $ArtifactsLocationSasToken } }
請參閱 GitHub 上的此範例。