web-dev-qa-db-ja.com

Visual StudioのARMプロジェクトはDSC(およびその他の)アセットをどのようにアップロードしますか?

ARMテンプレートを少し使用しましたが、VisualStudioでのARMプロジェクトの構築は新しいです。作成するとVMリソースを作成してから、新しいJSONに加えてスクリプトまたはDSC拡張機能を作成すると、Powershellの変更が行われますが、Powershellスクリプトを次に実行すると、_artifactsLocationと_artifactsSASTokenの入力が新たに求められます。

誰かがこれらの値が何を指しているのか説明できますか?リソースグループのARMテンプレート展開が付随する追加のスクリプト/ DSCアセットをアップロードし、それらが実行されることを確認する方法についてのドキュメントを教えてください?私が見つけたすべてのドキュメントはWebアプリケーションに関するものであり、アップロードするアセットは実行するWebアプリケーションであると想定しています。

明確にするための編集:VisualStudioの既存のARMプロジェクト)にDSCリソースを追加すると、ストレージコンテナーを作成し、DSCスクリプトをアップロードするコードが追加されますが、これは不完全なようです。 PowerShellプロンプトは、不完全なパラメーターの入力を求めます。ストレージアカウントが存在しない場合、それを作成するコードを無視しているようです...

1
Elomis

DSCZipファイルをAzureStorageアカウントにアップロードする必要があります。パスは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を使用すると、2つの値を取得できます。

$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でこれを参照してください

1
Shui shengbao