2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MSIX app attachをAVDリファレンスアーキテクチャ上に構築

Posted at

はじめに

Azure Virtual Desktop(AVD)において、OSイメージとアプリケーションを分離して管理するために、MSIX app attachという技術があります。
実装の手順は、公式ガイドであるDocs日本マイクロソフトのサポートのGitHubページ、また牛上さんのページなどがあります。
ここでは、システムとして実装するために、自己証明書は使わないAVDリファレンスアーキテクチャを活用します。

前提

AVDリファレンスアーキテクチャの環境

手順

作業用VMの展開

  1. spoke-twoなどのVNetに、セッションホストと同じOSのVMを作成
  2. ドメイン参加
  3. 以後、管理者で作業

注意点: 再接続するとローカルになる。FSLogixのグループポリシーが効いてしまうと証明書作成が失敗するのでその場合は適用しないようにすること。

証明書テンプレートにコード署名を追加

PDCのVMの中で下記作業します。

  1. Server ManagerのToolsメニューからCertification Authorityを起動
  2. Certificate Templatesフォルダを右クリックして、Certificate Template for Issueを選択
  3. Code Signingを追加
    cs-template.png

署名用鍵を作成

作業用VMで操作します。

  1. MMCを起動して、ファイルメニューから証明書スナップインを追加
    mmc.png
  2. 新しい証明書の要求を選択して、Active Directory登録ポリシーを選択 (出ないときはADユーザーでログインできていないかもしれません)
  3. コード署名にチェックをして、プロパティから、秘密鍵をクスポート可能に設定
    cert-1.png
  4. 作成した証明書を秘密鍵とともにエクスポート
    cert-2.png

MSIX Packaging Toolを準備

作業用VM内に、MSIX Packaging Toolをインストールします。
Azure Firewall PremiumでInternetへのアクセスを閉じている場合は、アプリケーションルールに、Webカテゴリのコンピュータとテクノロジを、施業用VMからアクセスできるように追加しておきます。

  1. Microsoft Storeでインストール
    tool-1.png

アプリケーションのパッケージ化

ここではVisual Studio Codeを利用します。
ここから、システムインストーラーを作業用VM内にダウンロードしておきます。
牛上さんのブログのStep 3そのままですので、そちらを参照してもよいです。

  1. MSIX Packaging Toolを起動して、一番左のApplication packageを選択
  2. 最初のCreate package on this computerを選択
  3. Windows Searchを無効化
    packaging-1.png
  4. Visual Studio Codeのシステムインストーラーを指定、エクスポートした秘密鍵付きの証明書を指定
    packaging-2.png
  5. Visual Studio Codeのパッケージ情報を指定
    packaging-3.png
  6. Visual Studio Codeをインストール
  7. Visual Studio Codeのアップデートを無効化
    packaging-4.png
  8. MSIX Packaging Toolのウィザードをそのまま実施してパッケージを作成

MSIXMGRツールの準備

ほぼ、CSSのページと同様の作業になります。

  1. MSIX mgr toolを作業用VMにダウンロード
  2. Zipファイルを展開して、x64フォルダをC:\MSIXappattachとして移動
  3. 作成したMSIXパッケージをC:\MSIXappattachに移動

VHD化

パッケージを配信するために、VHDファイルにまとめます。
VHDを操作するコマンドレットのために、最初のみHyper-Vを作業用VMにセットします。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

VHDファイルにパッケージを展開します。

VHDファイルを作成

New-VHD -SizeBytes 1024MB -Path c:\MSIXappattach\VSCode_1.58.0.0_x64.vhdx -Dynamic -Confirm:$false

マウント

$vhdObject = Mount-VHD c:\MSIXappattach\VSCode_1.58.0.0_x64.vhdx -Passthru

初期化、パーティションの作成、フォーマット
Exploreからフォーマットを促す画面が出ますが、キャンセル

$disk = Initialize-Disk -Passthru -Number $vhdObject.Number
$partition = New-Partition -AssignDriveLetter -UseMaximumSize -DiskNumber $disk.Number
Format-Volume -FileSystem NTFS -Confirm:$false -DriveLetter $partition.DriveLetter -Force

フォルダを作成して、パッケージを展開

New-Item F:\VSCode -ItemType Directory
cd C:\MSIXappattach
.\msixmgr.exe -Unpack -packagePath .\VSCode_1.58.0.0_x64__f0yfp0x2dcyvj.msix -destination "F:\VSCode" -applyacls
$vhdObject = Dismount-VHD C:\MSIXappattach\VSCode_1.58.0.0_x64.vhdx -Passthru

VHDファイルをファイルサーバーに配置

Azure Filesの共有をマウント

# Azure Filesのストレージ名
$StorageAccountName = "takeokast"
# 異なる名前で共有名を設定している場合は置き換える必要あり
$share_name = "avdfileshare"
# Azure Portalで、ストレージアカウントのアクセスキーを確認し置き換える必要あり
# パスワードにはADのポリシーにより有効期限がある場合があり、https://docs.microsoft.com/ja-jp/azure/storage/files/storage-files-identity-ad-ds-update-passwordを事前に参照して運用を検討する必要あり
$st_key = "access_key"
# ローカルでマウントするドライブレター
$mount_drv = "Z"

$unc_path = "\\" + $StorageAccountName + ".file.core.windows.net\" + $share_name
$net_account = "Azure\" + $StorageAccountName

$securePass = ConvertTo-SecureString $st_key -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential $net_account, $securePass

New-PSDrive -Name $mount_drv -PSProvider FileSystem -Root $unc_path -Credential $cred

コピー

$folder_path = $mount_drv + ':\' +'MSIX'
copy .\VSCode_1.58.0.0_x64.vhdx $folder_path

アンマウント

Remove-PSDrive -Name $mount_drv

セッションホストからのAzure Filesアクセス権設定

セッションホストに必要なファイル共有へのアクセス権限を設定します。
AVDのリファレンスアーキテクチャを利用する場合、セッションホストのコンピュータオブジェクトをAZF FSLogix Contributorに追加することで、必要な権限が与えられます。
この作業は、PDC VMの中で、セッションホストのコンピュータオブジェクトを選択してグループに追加すると簡単にできます。
session-right.png

MSIXパッケージをホストプールに追加

AVDのホストプールから、コピーしたMSIXイメージをUNCパスで指定し、表示名を設定して、アクティブに設定します。
package-add-1.png

アプリケーショングループ作成

デスクトップにも配信できますが、Remote Appとして設定してみます。
remote-app-1.png
remote-app-2.png
この後は、ユーザー、ワークスペースの割り当てを行います。

利用確認

起動すると見た目にはローカルで起動したのと変わりありませんが、タスクバーのアイコンがリモートデスクトップ接続であることを示しています。
remote-app-3.png

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?