Virtual Machineサービスカタログテンプレートを使用して、RemoteApp仮想マシン上でアプリケーションをインストールし設定します。
アプリケーション インストール スクリプトでは、次のシナリオがサポートされています。
- RemoteApp アプリケーション インストールの最も一般的なユース ケースは、Azure Virtual Desktop からアクセスできるリモート アプリケーションをデプロイすることです。
- サイバーセキュリティや監視エージェントなどの前提条件をインストールします。
- コンプライアンスまたはアプリケーションのセットアップに関するスクリプト構成の変更。
Note
このサンプルデプロイはデモ目的のものであり、ネットワーク、システム、またはアプリケーションの管理に関するすべてのベスト プラクティスを表すわけではありません。
前提条件
RemoteApp テンプレートでは、アプリケーションのインストールと仮想マシンの構成プロセスを自動化するためのスクリプトがサポートされています。 RemoteApp アプリのインストールの使用を開始する前に、次の機能があることを確認する必要があります。
- コミュニティ、エンクレーブ、ワークロード、および少なくとも 1 つのワークロード リソース グループと、ワークロード リソース グループ内にリソースを作成するためのアクセス許可。
- エンクレーブの
Advancedメンテナンス モードを有効にして、Private Link リソースをエンクレーブマネージド リソース グループに追加できるようにします。 - アーティファクトコンテナがストレージアカウント内にあります。
- ストレージ アカウントへの コミュニティ エンドポイント と、必要に応じて既存の AzCopy.exe のコピーへのエンドポイント。
- AzCopy.exe のコピー
- AzCopy をダウンロードします。
- AzCopy インストーラーを、アプリ フォルダーと同じレベルのストレージ アカウントにアップロードします。
- ファイル構成:
- storage account - artifacts container - app folder - azcopy.exe
- 以前に作成したコミュニティ エンドポイントとエンクレーブ サブネット間のエンクレーブ接続。
Note
ストレージ アカウントが別のエンクレーブにある場合は、ストレージ アカウントを使用して エンクレーブ 内にエンクレーブ エンドポイント を作成します。 次に、そのストレージ アカウント エンクレーブ と、アプリケーションをインストールするエンクレーブの間にエンクレーブ接続を作成します。
デプロイされた Azure リソース
- RemoteApp の仮想マシンの例
- Disk
- Windows仮想マシン
- Windows 仮想マシン拡張機能
展開されたソフトウェア
- Windows
- 選択したアプリケーション
テンプレートをデプロイする
アプリケーションファイルの準備
- ストレージ アカウント内のコンテナーにアプリ フォルダーを追加します。
- ファイル構成:
- artifacts container - app folder - app installer - main script to install app - (optional) additional scripts - (optional) azcopy.exe
- ファイル構成:
- 必要なアプリケーション インストーラーをダウンロードします。 この例では、Visual Studio Codeをダウンロードし、インストーラーをストレージアカウントのアプリフォルダにアップロードします。
- ストレージ アカウント アプリ フォルダーに追加したVisual Studio Codeのバージョンと互換性のある
main.ps1アプリケーション インストーラー スクリプトをアップロードします。# Main PowerShell script that installs the application Start-Process 'C:\vscode\VSCodeSetup-x64-<version>.exe' -ArgumentList '/VERYSILENT /MERGETASKS=!runcode'
テンプレートを構成する
- ワークロードの概要ページで、
+Add an Azure Serviceを選択します。
-
Serviceの場合は、[Virtual Machine] を選択します。
リソース グループの選択を確認し、次へ を選択します。
[基本] タブ:
-
Virtual Machine nameの場合は、仮想マシンの名前を入力します。 - 管理者のユーザー名と管理者パスワードについては、仮想マシンにサインインする際に使うユーザー名とパスワードを入力します。
-
[アプリ] タブ:
アプリ フォルダの URI については、コンテナの URI を入力してください。 コンテナ内のアーティファクトを選択し、そのURIをコピーし、URI内のフォルダ名以降はすべて削除します。
元の URI 固定URI https:// <storage-account>.blob.core.windows.net/<container-name>/<folder-name>/<script>.ps1https:// <storage-account>.blob.core.windows.net/<container-name>/<folder-name>例:
- storageaccountexample.blob.core.windows.net/artifacts/vscode
メインスクリプトでは、アプリケーションをインストールするスクリプトの名前(例えば
main.ps1)を入力します。
プライベート コンテナー:
プライベート コンテナー内のアプリ フォルダーについては、
Storage Blob Data Readerを選択して、仮想マシン ID にコンテナー レベルのtrueアクセスを許可します。ストレージコンテナリソースIDについては、以下の3つの部分を組み合わせます:
<storage-account-resource-id>+/blobServices/default/containers/+<container-name>。- ストレージ コンテナーのリソース ID を取得するには、ストレージ アカウントから [概要] を選択し、右端にある [JSON ビュー] を選択して、ストレージ コンテナーのリソース ID をコピーします。
- コンテナー名には、成果物を保持するプライベート コンテナーの名前をコピーします。
- ストレージ コンテナーのリソース ID の例:
/subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/resource-group-example/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
パラメーター AzCopy File URI が表示されている場合は、コンテナからの
azcopy.exeに URI を入力します。- ファイルを選択し、その URL をコピーします。
プライベート コンテナー パラメーターの例:
- [確認と作成] を選択します。 検証に合格した場合は、[ 作成] を選択します。
- リソースがデプロイされたら、アプリケーション仮想マシンに接続して、アプリケーション仮想マシンにアプリがインストールされているかどうかを確認します。 アプリケーション仮想マシンに接続する
WinGetおよび追加アプリケーションのインストール
フォルダー構造:
- artifacts container
- WinGet app folder ('winget')
- WinGet installer ('Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle')
- Windows UI Library ('Microsoft.UI.Xaml.2.8.x64.appx')
- main script to schedule install ('main.ps1')
- script to install and schedule reboot ('install_winget.ps1')
- script to restart the virtual machine ('restart.ps1')
- インストーラーをダウンロードし、ストレージ コンテナー内の winget フォルダーにアップロードする
- WinGet
MSIXバンドル (Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle) - Windows UI ライブラリ (Microsoft.UI.Xaml.2.8.x64.appx)
- WinGet
- スクリプトの作成とアップロード
- main.ps1
# This script creates and runs a scheduled task to install the appx package and msix bundle with elevated privileges $installScriptPath = "C:\winget\install_winget.ps1" # Create a scheduled task action to run the installation script with elevated permissions $taskAction = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-ExecutionPolicy Bypass -File $installScriptPath" # Set the task to start 30 seconds from now $taskTrigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddSeconds(30) $taskPrincipal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest # Register the scheduled task Register-ScheduledTask -TaskName "InstallWinget" -Action $taskAction -Trigger $taskTrigger -Principal $taskPrincipal - install_winget.ps1
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force Start-Process -FilePath "DISM.exe" -ArgumentList "/Online /Add-ProvisionedAppxPackage /PackagePath:C:\winget\Microsoft.UI.Xaml.2.8.x64.appx /SkipLicense" -NoNewWindow -Wait Start-Process -FilePath "DISM.exe" -ArgumentList "/Online /Add-ProvisionedAppxPackage /PackagePath:C:\winget\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle /SkipLicense" -NoNewWindow -Wait $wingetDir = 'C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.23.1791.0_x64__8wekyb3d8bbwe' $currentPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine) [System.Environment]::SetEnvironmentVariable("Path", "$currentPath;$wingetDir", [System.EnvironmentVariableTarget]::Machine) # Schedule the restart script $rebootScriptPath = "C:\winget\restart.ps1" $taskAction = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-ExecutionPolicy Bypass -File $rebootScriptPath" # Set the task to start 30 seconds from now $taskTrigger = New-ScheduledTaskTrigger -Once -At ((Get-Date).AddSeconds(30)) $taskPrincipal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest # Register the scheduled task Register-ScheduledTask -TaskName "Reboot" -Action $taskAction -Trigger $taskTrigger -Principal $taskPrincipal - restart.ps1
Restart-Computer -Force
- main.ps1
- [テンプレートの構成] に進みます。