Terraforming
Windows Virtual Desktop Infrastructure on Azure
八重樫 剛史 Takeshi Yaegashi
BANDAI NAMCO Studios Inc.
自己紹介
八重樫 剛史 Takeshi Yaegashi
株式会社バンダイナムコスタジオ BANDAI NAMCO Studios Inc. 所属
Linux・Unix・OSS が好きなエンジニア Go 言語が好き
組み込みシステム開発、ゲームサーバ開発、 CI/CD インフラ開発、
開発環境のクラウドシフトなどの業務に従事
最近は Azure DevOps で Unity アプリの CI/CD をいじっていた
活動場所
ホームページ・ブログ https://l0w.dev
GitHub https://github.com/yaegashi
GitLab https://gitlab.com/yaegashi
Twitter https://twitter.com/hogegashi
HashiCorp products 関連活動
Terraform provider for Microsoft Graph
▪ Microsoft Graph API を操作するプロバイダ (Azure AD の代替)
▪ Terraform Registry に登録しました
https://registry.terraform.io/providers/yaegashi/msgraph
HashiTalks: Japan 2020 speaker
▪ Terraform provider for Microsoft Graph
について喋りました
HashiCorp products 関連活動
Packer
▪ Azure の Windows VM イメージの構築に多用している
▪ Ansible provisioner が好き
Azure Image Builder
▪ あまり知られていない Azure のマネージド Packer サービス
▪ あまりに使いづらいので CLI ツールを Go で作った話
https://qiita.com/yaegashi/items/5216a9b37c2041b93a3a
Windows Virtual Desktop (WVD)
Azure が提供する VDI サービス
▪ COVID-19 対応のひとつとして注目されるようになった
▪ Windows 10 Enterprise の Azure VM にリモートデスクトップ接続できる
▪ Windows ライセンスと VM・基本インフラ以外の費用が必要なく、安いのが特長
WVD の一般的なアーキテクチャ
https://docs.microsoft.com/ja-jp/azure/architecture/example-scenario/wvd/windows-virtual-desktop
wvd-terraform
https://github.com/yaegashi/wvd-terraform
▪ ついさっき作ったばかりのリポジトリ
▪ Terraform を使って Windows Virtual Desktop をお気軽に試せるサンプルです
▪ Terraform の provider の自作とかしてるわりに運用は素人なのでいろいろだめな点をご指摘くださ
い
Windows Virtual Desktop を試す①
必要なサブスクリプションとライセンス
▪ Azure サブスクリプション
– なんとか自分で用意してください
– 数日間試すだけなら、初回アカウント登録時のおまけクレジット (22,500 円) や
Visual Studio サブスクリプションのおまけクレジット (6,000円/月) でも十分
▪ Windows 10 Enterprise のライセンス × ユーザー数分
– Microsoft 365 Developer Program にサインアップするのがおすすめ
https://developer.microsoft.com/ja-jp/microsoft-365/dev-program
– 全部入りライセンス Microsoft 365 E5 × 25 がほぼ無期限に使える (90日ごとに更新)
– 新しいテナントができるのでそこで Azure サブスクリプションを使えるようにする
Windows Virtual Desktop を試す②
事前に作っておくべきリソース
▪ Virtual Networks
– AADDS 用と WVD ホスト用 2 つのサブネットを作っておく
▪ Azure Active Directory Domain Services (AADDS)
– Azure AD のユーザー・グループを自動同期してくれるマネージド AD サーバ
– これも Terraform で作れるとよいのだが azurerm provider が対応していない…
– https://github.com/terraform-providers/terraform-provider-azurerm/issues/8970
Windows Virtual Desktop を試す③
サンプルリポジトリをクローンして設定
▪ git clone https://github.com/yaegashi/wvd-terraform
▪ フォルダ構成
– workspace Workspace リソース
– pool1 ホストプール・セッションホストリソース
▪ 各フォルダの修正箇所
– main.tf サブスクリプション・テナント・バックエンド設定
– variables.tf 変数設定
– local.auto.tfvars.json AD参加ユーザー・パスワードなど (.gitignore されている)
pool1/local.auto.tfvars.json
CODE EDITOR
{
"adjoin": {
"name": "aad-join",
"domain": "l0wdev.onmicrosoft.com",
"password": "hogehogesecret"
}
}
Windows Virtual Desktop を試す④
Terraform 実行
▪ workspace, pool1 の各フォルダで普通に実行
– terraform init
– terraform plan
– terraform apply
Windows Virtual Desktop を試す⑤
Web クライアントで接続テスト
▪ https://rdweb.wvd.microsoft.com/arm/webclient/index.html
間違って Windows Server
2019 でホストを作ってしまっ
た … (ライセンス違反)
セッションホストの追加登録
CODE EDITOR
module "yaegashi" {
source = "./modules/wvdhost"
owner = "yaegashi@l0wdev.onmicrosoft.com"
vm = {
location = "japaneast"
resource_group_name = azurerm_resource_group.wvd.name
name = "wvd-yaegashi1"
size = "Standard_D2as_v4"
storage_account_type = "Premium_LRS"
license_type = "Windows_Client"
subnet_id = data.azurerm_subnet.wvd.id
gpu_driver = ""
}
adjoin = var.adjoin
hpjoin = {
name = azurerm_virtual_desktop_host_pool.wvd.name
token = azurerm_virtual_desktop_host_pool.wvd.registration_info[0].token
wvd_yaegashi.tf のようなファイルをコピペして増やすだけで追加登録可能!
Terraform で WVD まとめ①
wvd-terraform のよい点
▪ ホストプール・セッションホスト・ VM の複雑な構成のデプロイや破壊が自動的にできる
– ホストの追加・削除がとても手軽
▪ Azure Portal や Azure CLI では不可能な構成も簡単に実現できる
– ひとつのホストプールにサイズの異なる VM を混在して登録できる
– ホスト名を個別に自由に決められる (通常は連番ホスト名しか使えない )
▪ ユーザー個別のカスタマイズが必要な用途には都合がよい
Terraform で WVD まとめ②
wvd-terraform のよくない点
▪ ディレクトリ・ファイルの構成が素人ぽい
▪ 汎用性が足りない (決め打ち設定がかなりある )
▪ ドキュメントがない (README.md すらない)
▪ これから改善していきます!
Thank You!
hugs@hashicorp.com
learn.hashicorp.com
discuss.hashicorp.com
17
hugs@hashicorp.com
learn.hashicorp.com
discuss.hashicorp.com
18

Terraforming Windows Virtual Desktop Infrastructure on Azure

  • 1.
    Terraforming Windows Virtual DesktopInfrastructure on Azure 八重樫 剛史 Takeshi Yaegashi BANDAI NAMCO Studios Inc.
  • 2.
    自己紹介 八重樫 剛史 TakeshiYaegashi 株式会社バンダイナムコスタジオ BANDAI NAMCO Studios Inc. 所属 Linux・Unix・OSS が好きなエンジニア Go 言語が好き 組み込みシステム開発、ゲームサーバ開発、 CI/CD インフラ開発、 開発環境のクラウドシフトなどの業務に従事 最近は Azure DevOps で Unity アプリの CI/CD をいじっていた 活動場所 ホームページ・ブログ https://l0w.dev GitHub https://github.com/yaegashi GitLab https://gitlab.com/yaegashi Twitter https://twitter.com/hogegashi
  • 3.
    HashiCorp products 関連活動 Terraformprovider for Microsoft Graph ▪ Microsoft Graph API を操作するプロバイダ (Azure AD の代替) ▪ Terraform Registry に登録しました https://registry.terraform.io/providers/yaegashi/msgraph HashiTalks: Japan 2020 speaker ▪ Terraform provider for Microsoft Graph について喋りました
  • 4.
    HashiCorp products 関連活動 Packer ▪Azure の Windows VM イメージの構築に多用している ▪ Ansible provisioner が好き Azure Image Builder ▪ あまり知られていない Azure のマネージド Packer サービス ▪ あまりに使いづらいので CLI ツールを Go で作った話 https://qiita.com/yaegashi/items/5216a9b37c2041b93a3a
  • 5.
    Windows Virtual Desktop(WVD) Azure が提供する VDI サービス ▪ COVID-19 対応のひとつとして注目されるようになった ▪ Windows 10 Enterprise の Azure VM にリモートデスクトップ接続できる ▪ Windows ライセンスと VM・基本インフラ以外の費用が必要なく、安いのが特長
  • 6.
  • 7.
    wvd-terraform https://github.com/yaegashi/wvd-terraform ▪ ついさっき作ったばかりのリポジトリ ▪ Terraformを使って Windows Virtual Desktop をお気軽に試せるサンプルです ▪ Terraform の provider の自作とかしてるわりに運用は素人なのでいろいろだめな点をご指摘くださ い
  • 8.
    Windows Virtual Desktopを試す① 必要なサブスクリプションとライセンス ▪ Azure サブスクリプション – なんとか自分で用意してください – 数日間試すだけなら、初回アカウント登録時のおまけクレジット (22,500 円) や Visual Studio サブスクリプションのおまけクレジット (6,000円/月) でも十分 ▪ Windows 10 Enterprise のライセンス × ユーザー数分 – Microsoft 365 Developer Program にサインアップするのがおすすめ https://developer.microsoft.com/ja-jp/microsoft-365/dev-program – 全部入りライセンス Microsoft 365 E5 × 25 がほぼ無期限に使える (90日ごとに更新) – 新しいテナントができるのでそこで Azure サブスクリプションを使えるようにする
  • 9.
    Windows Virtual Desktopを試す② 事前に作っておくべきリソース ▪ Virtual Networks – AADDS 用と WVD ホスト用 2 つのサブネットを作っておく ▪ Azure Active Directory Domain Services (AADDS) – Azure AD のユーザー・グループを自動同期してくれるマネージド AD サーバ – これも Terraform で作れるとよいのだが azurerm provider が対応していない… – https://github.com/terraform-providers/terraform-provider-azurerm/issues/8970
  • 10.
    Windows Virtual Desktopを試す③ サンプルリポジトリをクローンして設定 ▪ git clone https://github.com/yaegashi/wvd-terraform ▪ フォルダ構成 – workspace Workspace リソース – pool1 ホストプール・セッションホストリソース ▪ 各フォルダの修正箇所 – main.tf サブスクリプション・テナント・バックエンド設定 – variables.tf 変数設定 – local.auto.tfvars.json AD参加ユーザー・パスワードなど (.gitignore されている)
  • 11.
    pool1/local.auto.tfvars.json CODE EDITOR { "adjoin": { "name":"aad-join", "domain": "l0wdev.onmicrosoft.com", "password": "hogehogesecret" } }
  • 12.
    Windows Virtual Desktopを試す④ Terraform 実行 ▪ workspace, pool1 の各フォルダで普通に実行 – terraform init – terraform plan – terraform apply
  • 13.
    Windows Virtual Desktopを試す⑤ Web クライアントで接続テスト ▪ https://rdweb.wvd.microsoft.com/arm/webclient/index.html 間違って Windows Server 2019 でホストを作ってしまっ た … (ライセンス違反)
  • 14.
    セッションホストの追加登録 CODE EDITOR module "yaegashi"{ source = "./modules/wvdhost" owner = "yaegashi@l0wdev.onmicrosoft.com" vm = { location = "japaneast" resource_group_name = azurerm_resource_group.wvd.name name = "wvd-yaegashi1" size = "Standard_D2as_v4" storage_account_type = "Premium_LRS" license_type = "Windows_Client" subnet_id = data.azurerm_subnet.wvd.id gpu_driver = "" } adjoin = var.adjoin hpjoin = { name = azurerm_virtual_desktop_host_pool.wvd.name token = azurerm_virtual_desktop_host_pool.wvd.registration_info[0].token wvd_yaegashi.tf のようなファイルをコピペして増やすだけで追加登録可能!
  • 15.
    Terraform で WVDまとめ① wvd-terraform のよい点 ▪ ホストプール・セッションホスト・ VM の複雑な構成のデプロイや破壊が自動的にできる – ホストの追加・削除がとても手軽 ▪ Azure Portal や Azure CLI では不可能な構成も簡単に実現できる – ひとつのホストプールにサイズの異なる VM を混在して登録できる – ホスト名を個別に自由に決められる (通常は連番ホスト名しか使えない ) ▪ ユーザー個別のカスタマイズが必要な用途には都合がよい
  • 16.
    Terraform で WVDまとめ② wvd-terraform のよくない点 ▪ ディレクトリ・ファイルの構成が素人ぽい ▪ 汎用性が足りない (決め打ち設定がかなりある ) ▪ ドキュメントがない (README.md すらない) ▪ これから改善していきます!
  • 17.
  • 18.