LoginSignup
0
0

More than 1 year has passed since last update.

【Terraform de Azure】 Windows10 VM に Extention して アプリをインストールしてみました

Posted at

概要

「Infrastructer as Code」ということで、Terraform を用いて Azure環境上に Windows10Pro のVMを作成し、そこに必要なアプリケーションをインストールしてみました。

ローカル環境

  • macOS Monterey 12.1
  • python 3.8.12
  • Azure CLI 2.33.0
  • terraform v1.0.11

前提条件

  1. Azure環境がすでに用意されていること(テナント/サブスクリプション)
  2. ローカル環境に「azure cli」がインストールされていること
  3. ローカル環境に「terraform」環境が構成されていること
  4. TerraformでAzure上に環境構築するためのサービスプリンシパルが作成されており、Terraform のためのローカル環境変数が定義されていること
  5. アプリのインストーラ・インストールスクリプト ファイル等を保存しておくストレージアカウントとコンテナを作成しておきます。

構成内容

この記事の Terraform 定義ファイルを利用します

インストーラーの準備

対象とするアプリケーションのインストーラーを準備します

  • Git : Git-2.35.1.2-64-bit.exe
  • Azure CLI : azure-cli-2.33.1.msi
  • VSCode : VSCodeUserSetup-x64-1.64.2.exe

上記アプリをインストールするための PowerShellスクリプトファイル「init_app.ps1」を作成します。

init_app.ps1
msiexec.exe /i .\azure-cli-2.33.1.msi /passive
.\Git-2.35.1.2-64-bit.exe /VERYSILENT
.\VSCodeUserSetup-x64-1.64.2.exe /VERYSILENT

BLOBへのアップロード

事前に作成したコンテナ情報を取得します。

$ az storage container list --account-name iturutfstate --output table

Name     Lease Status    Last Modified
-------  --------------  -------------------------
app                      2022-02-16T07:25:53+00:00
tfstate                  2021-12-04T16:12:31+00:00

app コンテナへ、インストーラとスクリプトファイルをアップロードし、それらのファイルを確認します。

$ az storage blob list --account-name iturutfstate --container-name app --output table

Name                            Blob Type    Blob Tier    Length    Content Type              Last Modified              Snapshot
------------------------------  -----------  -----------  --------  ------------------------  -------------------------  ----------
Git-2.35.1.2-64-bit.exe         BlockBlob    Hot          50244992  application/x-msdownload  2022-02-16T07:26:22+00:00
VSCodeUserSetup-x64-1.64.2.exe  BlockBlob    Hot          77256912  application/x-msdownload  2022-02-16T07:26:34+00:00
azure-cli-2.33.1.msi            BlockBlob    Hot          54448128  application/octet-stream  2022-02-16T07:26:35+00:00
init_app.ps1                    BlockBlob    Hot          131       application/octet-stream  2022-02-16T07:47:10+00:00

terraform 定義ファイルの編集

仮想マシン定義ファイル「computer.tf」を編集します(「仮想マシンの機能拡張」以降が追加部分)

computer.tf
# windows10 仮想マシン
resource "azurerm_windows_virtual_machine" "this" {
  name                  = var.vm_name
  location              = azurerm_resource_group.this.location
  resource_group_name   = azurerm_resource_group.this.name
  size                  = var.vm_size
  computer_name         = var.computer_name
  admin_username        = var.admin_username
  admin_password        = var.admin_password
  network_interface_ids = [
    azurerm_network_interface.this.id,
  ]

  source_image_reference {
    publisher = "MicrosoftWindowsDesktop"
    offer     = "Windows-10"
    sku       = "win10-21h2-pro"
    version   = "latest"
  }

  os_disk {
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }

  tags  = var.tags_def
}


# 仮想マシンの機能拡張(アプリのインストール)
resource "azurerm_virtual_machine_extension" "git" {
  name                  = azurerm_windows_virtual_machine.this.name
  virtual_machine_id    = azurerm_windows_virtual_machine.this.id
  publisher             = "Microsoft.Compute"
  type                  = "CustomScriptExtension"
  type_handler_version  = "1.9"
  tags                  = var.tags_def

  # VMにダウンロードするファイル(準備したファイルのフルパス)と実行するPowershellを設定
  settings = <<SETTINGS
  {
      "fileUris": [
          "https://iturutfstate.blob.core.windows.net/app/init_app.ps1",
          "https://iturutfstate.blob.core.windows.net/app/azure-cli-2.33.1.msi",
          "https://iturutfstate.blob.core.windows.net/app/Git-2.35.1.2-64-bit.exe",
          "https://iturutfstate.blob.core.windows.net/app/VSCodeUserSetup-x64-1.64.2.exe"
      ],
      "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File \"init_app.ps1\""
  }
  SETTINGS
}

terraform の実行

$ terraform plan
$ terraform apply

仮想マシンへ接続しての確認

RDP接続

仮想マシンへの RDP接続については、この記事 を参考にして実施ください。

接続(ログイン)後の確認

コンソール(PowerShell)を立ち上げ、アプリケーションがインストールされていることを確認します。

## Git アプリケーション
PS C:\Users\adminuser> Get-ItemProperty HKLM:Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize

DisplayName DisplayVersion Publisher                     InstallDate
----------- -------------- ---------                     -----------
Git         2.35.1.2       The Git Development Community 20220216


## Azure CLI アプリケーション
PS C:\Users\adminuser> Get-ItemProperty HKLM:SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize

DisplayName           DisplayVersion Publisher             InstallDate
-----------           -------------- ---------             -----------
Microsoft Edge        98.0.1108.50   Microsoft Corporation 20220216
Microsoft Edge Update 1.3.155.77
Microsoft Azure CLI   2.33.1         Microsoft Corporation 20220216


## VSCode アプリケーション
PS C:\Users\adminuser> Get-ItemProperty HKCU:Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize

DisplayName                         DisplayVersion   Publisher             InstallDate
-----------                         --------------   ---------             -----------
Microsoft OneDrive                  21.220.1024.0005 Microsoft Corporation
Microsoft Visual Studio Code (User) 1.64.2           Microsoft Corporation 20220216

機能拡張で実行されたファイルのありかは以下となります

    Directory: C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.9.5\downloads\0

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2/16/2022   3:08 PM       54448128 azure-cli-2.33.1.msi
-a----         2/16/2022   3:08 PM       50244992 Git-2.35.1.2-64-bit.exe
-a----         2/16/2022   3:08 PM            131 init_app.ps1
-a----         2/16/2022   3:08 PM       77256912 VSCodeUserSetup-x64-1.64.2.exe

terraform による作成したリソースの削除

$ terraform destroy

まとめ

これで、Terraform でサクッと Azure環境上の Windows10Pro にアプリケーションをインストールする方法を確認することができました。 DevTest Labs でも同様なことをやってみようかと、、、、

参考記事

以下の記事をおもいっきり参考にさせていただきました。感謝申し上げます。
[Azure] TerraformでのWindows OS設定(Custom Script Extension)記法メモ

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