MS_AzureQuickSetup - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Azure䞊に玠早く環境を構築する

抂芁

Azure 䞊に玠早く環境を構築する系のトピックを列挙。

  • VHD を退避しおディスク、VM 䜜成に䜿甚する的な。
  • Sysprepによる isoむメヌゞ䜜成も可胜。

補足本ペヌゞを貫く「むメヌゞ」ず「ディスク」の察比: 本ペヌゞは
党䜓を通じお2 ぀の方匏を察比しおいる。混同しやすいので先に敎理する。

むメヌゞマむ・むメヌゞ ディスクマむ・ディスク
元になるもの Sysprep 枈みの VM 皌働しおいた VM そのたた
呌び方 汎甚化generalized 特殊化specialized
コンピュヌタ名・SID 展開時に再生成される 元のたた
甹途 同じ構成を N 台量産する 1 台を退避・埩元・移蚭する
䟋えるなら 金型 バックアップ

぀たり、

  • 「10 台同じ開発環境を配る」 → むメヌゞ
  • 「この VM を別サブスクリプションぞ移す」「壊す前に取っおおく」 → ディスク

刀断を誀るず、同じ SID・同じコンピュヌタ名の VM が
ドメむンに耇数参加する
ずいった事故になる
Sysprep が必芁な理由がこれである。

ギャラリヌ

  • Microsoft Azure に甚意されたギャラリヌから OS むメヌゞを遞択しお䜜成できる。
    • 新芏䜜成した仮想マシンには新しい NIC が取付けられ、MAC アドレス、TCP/IP 蚭定は匕継がれない。
    • このため、ネットワヌク関連の蚭定は、新芏仮想マシンの䜜成埌に蚭定を行う。
  • 参考

既定のOSむメヌゞ

既定の OS むメヌゞには、Windows や Linux などの OS が甚意されおいる。

  • この既定の OS むメヌゞをコピヌしお、新しい仮想マシンを䜜成するこずで、
    OS むンストヌルの時間をかけずに、迅速に仮想マシンを䜜成できる。
  • ただし、甚意されおいる既定の OS むメヌゞは、すべお英語版。

利甚時の動䜜

  • Azure 仮想マシンを新芏䜜成する際に、ギャラリヌから既定の OS むメヌゞを遞択する。
  • 利甚者の Azure 環境具䜓的には利甚者の Azure Storage の BLOBぞコピヌされる。
  • 仮想マシンのシステム ドラむブに取り付けられ、仮想マシンが起動する。

問題点

  • 既定の OS むメヌゞは、すべお英語版。
    • 日本語環境の手順やメッセヌゞを確認するためには、日本語化する必芁がある。
    • 日本語化の䜜業に 1〜2 時間かかるため、必芁な郜床、日本語化しおいおは効率が悪い。
  • 既定の OS むメヌゞは、時々 Windows Update が圓おられ曎新される。
    • 䟋えば半幎経過した頃に、同じ OS むメヌゞから仮想マシンを再床䜜成した堎合、
      Windows Update が圓おられ曎新されおいる可胜性がある。
    • 曎新モゞュヌルを固定するこずができない。

補足最新化日本語版むメヌゞは提䟛されおいる: 「すべお英語版」ずいう
蚘述は圓時のもので、珟圚は Marketplace に
日本語版の Windows Server むメヌゞ
䟋: "Windows Server 2022 Datacenter - Japanese"が提䟛されおいる。
蚀語パックの適甚に 1〜2 時間かける必芁は無くなった。

なお、「曎新モゞュヌルを固定できない」ずいう指摘は
今も有効である。ギャラリヌのむメヌゞは随時曎新されるため、
再珟性が芁る堎合はマむ・むメヌゞ埌述で固定するか、
むメヌゞのバヌゞョンを明瀺指定する必芁がある。

# 特定バヌゞョンを指定する䟋
az vm create ... --image MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:20348.2402.240607

# 利甚可胜なバヌゞョンの䞀芧
az vm image list --publisher MicrosoftWindowsServer --offer WindowsServer --all --output table

latest を指定するず、実行時期によっお䞭身が倉わる。
IaC で環境を再珟したい堎合、これはバヌゞョン固定挏れず同じ問題になる。

マむ・むメヌゞ

  • テンプレヌトになる自䜜の OS むメヌゞを予めマむ・むメヌゞずしお登録
  • テンプレヌトから倚数の仮想マシンを䜜成する堎合に適しおいる。

機胜抂芁

  • 予め、OS むメヌゞ化察象の VM を Azure IaaS 䞊に構築しおおく必芁がある。
  • OS むメヌゞを利甚者の Azure 環境具䜓的には利甚者の Azure Storage の BLOBぞコピヌ
  • Sysprep枈の OS むメヌゞを登録するこずもできるので、
    Sysprep 察応のアプリケヌションをむンストヌルした状態での展開が可胜。
  • ギャラリヌの既定の OS むメヌゞず異なり、Windows Update が適甚されない。

甹途

埌から再利甚しそうな OS むメヌゞに぀いお、
あらかじめ日本語化し、マむ・むメヌゞにキヌプしおおくずよい。

補足最新化Azure Compute Gallery: 「マむ・むメヌゞ」Managed Imageは
珟圚も䜿えるが、Azure Compute Gallery旧 Shared Image Galleryが
埌継ずしお掚奚されおいる。違いは次のずおり。

マむ・むメヌゞ Azure Compute Gallery
バヌゞョン管理 無い別むメヌゞずしお䜜り盎す ある1.0.0, 1.0.1 
耇数リヌゞョンぞの耇補 手動 自動レプリケヌション
スケヌル 同時展開数に限界 倧量展開に察応レプリカ数を指定
共有 サブスクリプション内 サブスクリプションテナントを越えお共有可

本文が別項で扱っおいる
「サブスクリプション間でマむ・むメヌゞを移動」ずいう手間は、
Compute Gallery を䜿えば共有蚭定だけで枈む。

さらに、むメヌゞの䜜成自䜓を自動化する
Azure VM Image BuilderPacker ベヌスもあり、
「元 VM を手で䜜っお Sysprep しお取り蟌む」ずいう
手䜜業を無くせるクラりド・むンフラ自動化。

ストレヌゞ

既定のディスク

そんなものはない

マむ・ディスク

機胜抂芁

  • ギャラリヌ䞊の OS むメヌゞではなく既存 VM の VHD を、新 VM にアタッチする。
  • この、既存 VM の VHD を、「特殊化された VHD」ず蚀う。
  • なお、NIC などのコンフィグはリセットされるので、そこはむメヌゞず倉わらない。

移行メモ䜓裁: 原兞の「既存VMのVHDをを、」は
「を」が重耇しおいたため修正した。

甹途

  • 既存 VM の VHD を個人 PC、業務 PC、業務サヌバ等のバックアップ・リストアなど。
  • 若しくは、既存 VM をサブスクリプション間で移動する堎合など。
  • スナップ・ショットを䜿甚しお、ベヌス・むメヌゞずするこずもできる。

移行メモ䜓裁: 原兞の「-若しくは、-既存VMを」は
箇条曞き蚘号が重耇しおいたため敎理した。

手順

マむ・むメヌゞ

シェルでマむ・むメヌゞを䜜成

サブスクリプション間でマむ・むメヌゞを移動

...

マむ・ディスク

ポヌタルでスナップショットしお別VMを䜜成

  • 管理ディスクをコピヌする
    管理ディスクからスナップショットを䜜成し、
    そのスナップショットから管理ディスクを䜜成。
    • 管理ディスクを遞択し䞊のメニュヌからスナップショットの䜜成を遞択。
      • 名前を入力、リ゜ヌス グルヌプを遞択。
      • スナップショットの皮類でフルを遞択。
      • アカりントの皮類でStandard (HDD)を遞択。
      • 䜜成を遞択しおスナップショットを䜜成。
    • リ゜ヌスの䜜成か、すべおのリ゜ヌスから远加を遞択し、
      怜玢窓に「Managed Disks」ず入力し、衚瀺された管理ディスクの䜜成を抌䞋
      • 名前を入力、リ゜ヌス グルヌプを遞択。
      • ゜ヌスの皮類で、スナップショットを遞択。
      • それ以倖は、コピヌ元の管理ディスクに合わせる。
      • 䜜成を遞択しお管理ディスクを䜜成。
  • 管理ディスクからの VM 䜜成
    管理ディスクが䜜成されたら、ポヌタルを䜿甚しお VM を䜜成できる。
    • 䜿甚する管理ディスクを遞択し抂芁ペヌゞで、
      DISK STATEディスクの状態が未接続であるこずを確認。
    • ペヌゞの䞀番䞊にあるメニュヌで、VM の䜜成を遞択。
    • VM サむズ等を遞択しお、確認および䜜成を遞択。
      その他は既定倀の状態管理ディスクは䜜成枈みのため
    • VM 構成が怜蚌に合栌したら、䜜成を遞択しおデプロむを開始。
  • 䜜成した VM の起動ず実行の確認
    䜜成した VM が、起動し、RDP などで接続できるこずを確認する。

補足未接続の確認が芁点: 手順䞭の
「DISK STATEが未接続であるこずを確認」は読み飛ばしやすいが、
管理ディスクは同時に 1 台の VM にしか接続できないため必須の確認である
共有ディスクを有効にした堎合を陀く。

元の VM が動いたたただず、そのディスクは Attached のたたで
新 VM の䜜成に䜿えない。
スナップショットから新しい管理ディスクを䜜るずいう
本手順の遠回りに芋える段取りは、

  • 元 VM を止めずに枈むスナップショットは皌働䞭でも取れる、
  • コピヌなので元ディスクに圱響しない

ずいう 2 点を満たすためのものである。

なお、スナップショットの皮類で
**フル**を遞んでいる点にも意味がある。

皮類 内容
フル 完党なコピヌ。単独で埩元でき、元を消しおも残る
増分 前回からの差分のみ。安䟡だが元ディスクず同䞀リヌゞョンに䟝存

「別 VM を䜜る」目的ではフルが扱いやすい。

サブスクリプション間でマむ・ディスクを移動

  • 䞀方のサブスクリプションから、
    招埅共同管理者に蚭定Azure Subscriptionの管理手順@゚ンプラしおもらう。

  • Azure CLIでログむン

    az login
    
  • SASトヌクンを取埗。
    オプションに --subscription の指定が必芁になるこずがある。
    名称が重耇しおいるなどの堎合、サブスクリプションを識別できない暡様

    az disk grant-access --duration-in-seconds 3600 --name <ディスク名> --resource-group <リ゜ヌスグルヌプ名>
    {
      "accessSas": "accessSas の URL"
    }
    
  • サブスクリプション間コピヌ

    • コピヌ先ストレヌゞ・アカりント、コンテナは予め䜜成しおおく。
    • なお、パブリック・ネットワヌクからのアクセスを蚱可しおおく必芁がある。
    • 同様に、--subscription の指定が必芁になるこずがある。
    az storage blob copy start --account-name <コピヌ先ストレヌゞ アカりント名> --account-key <コピヌ先ストレヌゞのアクセス キヌ> --destination-container <コピヌ先のコンテナヌ名> --destination-blob <コピヌ埌の VHD 名>.vhd --source-uri "生成した accessSas の URL"
    
  • コピヌ状況の確認

    • 䜕気に、結構長い時間がかかるリヌゞョンを跚ぐ等。

    • ステヌタス取埗には、PowerShell が必芁なので、
      Azure Cloud Shell 蟺りを䜿甚しお以䞋のように行う。

      $storageContext = New-AzureStorageContext -StorageAccountName 'aaaa' -StorageAccountKey 'bbbb'
      Get-AzureStorageBlobCopyState -Context $storageContext -Container "xxxx" -Blob "yyyy"
    • ...ず思ったら、コピヌ先のポヌタルから操䜜すれば確認できるもよう。
      進捗は確認できないが、最終曎新日付、コピヌ状態、完了時間で完了しおいるかどうか解る。

    ※ Status : Pending のたた、BytesCopied が TotalBytes たで増えおいく。

補足この手順が長い理由ず、珟圚の近道: 「SAS トヌクンを発行しお
BLOB ずしおコピヌする」ずいう段取りが必芁なのは、
管理ディスクは盎接 URL でアクセスできないマネヌゞド リ゜ヌスであるためで、
grant-access で䞀時的に読み取り甚の SAS URL を露出させおいる。

珟圚は、より簡単な手段がいく぀かある。

手段 内容
az disk copy拡匵機胜 ディスクのリヌゞョンサブスクリプション間コピヌを 1 コマンドで
AzCopy az storage blob copy より栌段に速い。倧容量 VHD ではこちらを掚奚
Azure Compute Gallery むメヌゞなら共有蚭定だけで他サブスクリプションから䜿える
リ゜ヌスの移動 同䞀テナント内ならディスクごず移動できる埌掲の参考

なお、コマンド䟋の New-AzureStorageContext / Get-AzureStorageBlobCopyState は
旧 AzureRM モゞュヌルのもので、珟圚は Az モゞュヌルの
New-AzStorageContext / Get-AzStorageBlobCopyState を䜿う
Azure PowerShell。

たた、--account-key をコマンドラむンに曞くのは
履歎に残るため望たしくない。
可胜なら --auth-mode loginMicrosoft Entra ID 認蚌を䜿う。

ペヌゞBlobのVHDから埩元する。

※ VHD は、Hyper-Vを䜿甚し、1MB * N のサむズの VHD ずしお䜜成しおおく。
 埌々、リサむズ等をしたら、動かなくなるこずがあったので。127GB が良いのか

  • ペヌゞ Blob の VHD より管理ディスクを䜜成

    • VHD のフル URL は、SASトヌクンではないので泚意。
    • 䜜成元の管理ディスクに合わせお以䞋を蚭定
      • --hyper-v-generation "V1 or V2"
      • --sku "Premium_LRS or StandardSSD_LRS or Standard_LRS or UltraSSD_LRS"
    • 私の堎合、--subscription ず --location の指定が必芁だった。
      • location に指定する倀は、az account list-locationsで出力。
      • ただし、Docs などの HP の方が芋易い。--output table を付けるずマシになる。
    az disk create --resource-group <リ゜ヌス グルヌプ名> --name <䜜成する管理ディスク名> --source <VHD のフル URL> --sku "Premium_LRS or StandardSSD_LRS or Standard_LRS or UltraSSD_LRS" --hyper-v-generation "V1 or V2"
    
  • 管理ディスクより VM を䜜成

    • ポヌタルから実行しようずしたら、
      VM 䜜成ボタンが非掻性だったため CLI で実行。
    • ここでも、念の為、--subscription ず --location を指定。
    • むンバりンドを開けない堎合は「--public-ip-address ""」を指定。
    • VM のサむズは、--size に指定するが、
      • 指定する倀は、az vm list-sizesで出力。
      • ただし、Docs などの HP の方が芋易い。--output table を付けるずマシになる。
      • たた、サむズによっおは、Premium_LRS をサポヌトしおいないこずがある。
    az vm create --name <VM 名> --resource-group <リ゜ヌス グルヌプ名> --attach-os-disk <管理ディスク名> --size "VM のサむズ" --os-type "Windows or Linux"
    
  • 起動しない堎合は、ブヌト蚺断

    • 私の堎合、ココたでやっお、始め OS が起動せず以䞋の切り分けでクリアした。

    • ポヌタルからスナップショットを゜ヌスにしお、䜜成した管理ディスクに、
      「az vm create」コマンドを実行した堎合は䞊手く動䜜した。

    • ポヌタルから BLOB を゜ヌスにしお、䜜成した管理ディスクに、
      「az vm create」コマンドを実行した所、同様に䞊手く動䜜した。

      ...ポヌタルには、「Gen2」ず指定する郚䜍があったため、
      CLI の「az disk create」でも「Gen2」を指定する必芁があるものず思われる。

    • 参考

補足この節の教蚓は「Gen1/Gen2 の取り違え」: 末尟の掚枬
「az disk create でも Gen2 を指定する必芁があるものず思われる」は
正しい。--hyper-v-generation の既定倀は V1 であり、
Gen2UEFI ブヌトの VHD を V1 ずしお取り蟌むず、

  • ブヌト方匏が BIOS になるため UEFI パヌティションを読めず、
  • 結果ずしお起動しない画面に䜕も出ない

ずいう症状になる。たさに本文の「始め OS が起動せず」である。

切り分けの芁点をたずめおおく。

症状 疑うもの
ブヌト蚺断のスクリヌンショットが真っ黒䜕も出ない Gen の䞍䞀臎、ブヌト パヌティション砎損
OS のロゎは出るが進たない ドラむバ、ディスク眲名の衝突
INACCESSIBLE_BOOT_DEVICE ストレヌゞ コントロヌラ ドラむバ
ログむン画面たでは来るが RDP できない NSG、RDP サヌビス、ファむアりォヌル

ブヌト蚺断は最初に有効化しおおくこず
Azureの評䟡環境を入手するの構成䟋でも「オン」になっおいる。
スクリヌンショットずシリアル コン゜ヌルが䜿えるかどうかで、
切り分けの手数がたったく倉わる。

たた、冒頭の「1MB * N のサむズの VHD ずしお䜜成しおおく」も重芁である。
Azure のペヌゞ BLOB は 1MiB の倍数である必芁があり、
端数があるずアップロヌド時に匟かれる。
ツヌルでリサむズするず端数が出るこずがあるため、
**固定サむズ VHDVHDX ではなく VHD**で䜜るのが安党である。

参考

VM起動埌の開発環境のセットアップ

Microsoft Docs

マむ・むメヌゞ

マむ・ディスク

リ゜ヌスの移動

補足移動は「できるもの」ず「できないもの」がある: リ゜ヌスの移動には
サヌビスごずに可吊があり、移動できないものが少なくない。

䟋 可吊
管理ディスク、スナップショット、VM 抂ね可条件あり
パブリック IPStandard SKU 䞍可Basic は可
Azure Bastion 䞍可
VNET 可ただし䟝存リ゜ヌスを党お䞀緒に動かす必芁がある

したがっお、実務では

  • 移動より、IaC で䜜り盎す方が早いこずが倚い、
  • 移動䞭は察象リ゜ヌス グルヌプがロックされる他の操䜜ができない

ずいう前提で蚈画するずよい。
ここでも、クラりド・むンフラ自動化の
「再珟可胜にしおおく」ずいう方針が効いおくる。


Tags: 移行, むンフラストラクチャ, クラりド, Azure

⚠ **GitHub.com Fallback** ⚠