0
0

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 1 year has passed since last update.

Azure の Windows 11 マルチセッション仮想マシンで FSLogix ユーザープロファイルを使う構成を Azure CLI で作ってみた

Posted at

背景と目的

Azure Virtual Desktop 環境に適用する前に、FSLogix ユーザープロファイル機能だけを動作検証したく、Azure CLI で検証環境を作ってみました。

検証用の仮想ネットワークを作る

bash
# 環境変数をセットします
region=japaneast
prefix=mnrfsl
adgroup=mnravd-group

# リソースグループを作成します
az group create \
  --name ${prefix}-rg \
  --location $region

# VNET を作成します
az network vnet create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vnet \
  --address-prefixes 10.1.0.0/16 \
  --subnet-name default-subnet \
  --subnet-prefix 10.1.0.0/24

# NSG を作成します
az network nsg create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-nsg

# NSG ルールを作成します
az network nsg rule create \
  --resource-group ${prefix}-rg \
  --name Allow-RDP \
  --nsg-name ${prefix}-nsg \
  --priority 100 \
  --source-address-prefixes $(curl -s inet-ip.info) \
  --destination-port-ranges 3389 \
  --access Allow \
  --protocol Tcp

# サブネットに NSG を紐付け Storage サービスエンドポイントを有効にします
az network vnet subnet update \
  --resource-group ${prefix}-rg \
  --vnet-name ${prefix}-vnet \
  --name default-subnet \
  --network-security-group ${prefix}-nsg \
  --service-endpoints Microsoft.Storage

FSLogix プロファイルを格納するストレージアカウントを作成

bash
# ストレージアカウントを作成します
az storage account create \
  --resource-group ${prefix}-rg \
  --name ${prefix}stor \
  --kind StorageV2 \
  --sku Standard_LRS \
  --default-action Deny

# サブネットからのみアクセス可能にします
az storage account network-rule add \
  --resource-group ${prefix}-rg \
  --account-name ${prefix}stor \
  --vnet-name ${prefix}-vnet \
  --subnet default-subnet \
  --ip-address $(curl -s inet-ip.info)

# アクセスキーを取得します
storagekey=$(az storage account keys list \
  --account-name ${prefix}stor \
  --resource-group ${prefix}-rg \
  --query "[0].value" \
  --output tsv)

検証用の仮想マシンを作成

bash
# azureuser 用のパスワードを生成します
vmpasswd=$(openssl rand -base64 16)
echo $vmpasswd

# 仮想マシンを 2 つ作成します
for i in {1..2}; do
  az vm create \
    --resource-group ${prefix}-rg \
    --name ${prefix}-vm${i} \
    --os-disk-name ${prefix}-vm${i}OSDisk \
    --image microsoftwindowsdesktop:windows-11:win11-21h2-avd:latest \
    --license-type Windows_Client \
    --size Standard_D2as_v4 \
    --storage-sku Standard_LRS \
    --admin-username azureuser \
    --admin-password $vmpasswd \
    --assign-identity \
    --vnet-name ${prefix}-vnet \
    --subnet default-subnet \
    --nsg "" \
    --public-ip-address-dns-name ${prefix}${i} \
    --zone ${i}
done

# AzureAD Join 拡張をインストールします
for i in {1..2}; do
  az vm extension set \
    --resource-group ${prefix}-rg \
    --vm-name ${prefix}-vm${i} \
    --name AADLoginForWindows \
    --publisher Microsoft.Azure.ActiveDirectory
done

# NLA を無効にします
for i in {1..2}; do
  az vm run-command invoke \
    --command-id DisableNLA \
    --resource-group ${prefix}-rg \
    --name ${prefix}-vm${i}
done

# セキュリティグループのユーザーに仮想マシンユーザー権限を付与します
for i in {1..2}; do
  az role assignment create \
    --assignee $(az ad group list \
    --display-name $adgroup \
    --query [0].id \
    --output tsv) \
    --role "Virtual Machine Administrator Login" \
    --scope $(az vm show \
    --resource-group ${prefix}-rg \
    --name ${prefix}-vm${i} \
    --query id \
    --output tsv)
done

FSLogix を設定

bash
# 各仮想マシンの FSLogix を有効にします
for i in {1..2}; do
  az vm run-command invoke \
    --command-id RunPowerShellScript \
    --resource-group ${prefix}-rg \
    --name ${prefix}-vm${i} \
    --script "Set-ItemProperty -Path HKLM:\SOFTWARE\FSLogix\Profiles -Name Enabled -Type DWord -Value 1"
done

# 新しく作成される VHD サイズを 5000 メガバイトにします
for i in {1..2}; do
  az vm run-command invoke \
    --command-id RunPowerShellScript \
    --resource-group ${prefix}-rg \
    --name ${prefix}-vm${i} \
    --script "Set-ItemProperty -Path HKLM:\SOFTWARE\FSLogix\Profiles -Name SizeInMBs -Type DWord -Value 5000"
done

# ローカルプロファイルの削除を有効にします
for i in {1..2}; do
  az vm run-command invoke \
    --command-id RunPowerShellScript \
    --resource-group ${prefix}-rg \
    --name ${prefix}-vm${i} \
    --script "Set-ItemProperty -Path HKLM:\SOFTWARE\FSLogix\Profiles -Name DeleteLocalProfileWhenVHDShouldApply -Type DWord -Value 1"
done

# Cloud Cache 構成を設定します
for i in {1..2}; do
  az vm run-command invoke \
    --command-id RunPowerShellScript \
    --resource-group ${prefix}-rg \
    --name ${prefix}-vm${i} \
    --script "Set-ItemProperty -Path HKLM:\SOFTWARE\FSLogix\Profiles -Name CCDLocations -Type String -Value 'type=azure,connectionString=\"DefaultEndpointsProtocol=https;AccountName=mnrfslstor;AccountKey=${storagekey};EndpointSuffix=core.windows.net\"'"
done

AzureAD 資格情報を使用して RDP 接続

資格情報を AzureAD\UPN の形式で入力する必要があります (例: AzureAD\john@contoso.com)

Mac の Microsoft Remote Deesktop に仮想マシンを登録する

fslogix-vm-storage-01.png

RDP 接続するとストレージアカウントにコンテナーが作成される

fslogix-vm-storage-02.png

コンテナー内に VHD が作成される

fslogix-vm-storage-04.png

仮想マシンに VHD がマウントされる

fslogix-vm-storage-03.png

もう 1 つの仮想マシンにも RDP 接続できるがプロファイルがロックされているのでローカルプロファイルが作成される

左の仮想マシンはテーマを変更しており、右の仮想マシンは同じユーザーでサインインしてもテーマはデフォルトのまま。

fslogix-vm-storage-05.png

2 つの仮想マシンからサインアウトするとロックファイルが消える

fslogix-vm-storage-06.png

先ほどローカルプロファイルが使用された仮想マシンに RDP 接続してユーザープロファイルが適用されたことを確認する

fslogix-vm-storage-07.png

検証環境を削除

bash
# リソースグループを削除します
az group delete \
  --name ${prefix}-rg \
  --yes

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?