Azure Batchユーザーサブスクリプションで作成されるVMSS名は変更不可?タグ運用と設計ベストプラクティス

Azure Batch の「ユーザー サブスクリプション割り当て」モードでプールを作成すると、サブスクリプション内に自動で VMSS やノードが増えていきます。しかし既定のランダムな名前では、どの VMSS がどのプールなのか一目で分からず、運用やコスト管理の観点で悩む方も多いはずです。本記事では「名前を変えられないのか?」という疑問に答えつつ、実務で取るべき現実的な設計・運用方法を詳しく解説します。

目次

Azure Batch「ユーザー サブスクリプション割り当て」と VMSS の関係

まず前提として、Azure Batch のプール割り当てモードをおさらいしておきます。

  • Batch service モード:VMSS などの計算リソースは Microsoft 管理のサブスクリプション側に作成され、ユーザーのサブスクリプションには見えません。
  • ユーザー サブスクリプション割り当て(User subscription)モード:プールを作成すると、VMSS や NIC などのリソースが Batch アカウントと同じサブスクリプションに直接作成されます。

そのためユーザー サブスクリプション割り当てでは、Azure Portal や Azure Resource Graph 経由で「Batch が裏側で作った VMSS」を直接一覧することができます。可視性が高くなる一方で、以下のような悩みも生まれます。

  • VMSS 名に GUID が含まれており、「どのプール/システムの VM なのか」ぱっと見で分からない
  • 運用時に VMSS 名ベースでフィルタしたいが、命名規則を自分で定義できない
  • コスト管理レポートで、別システムの VMSS と見分けにくい

典型的には、次のような名前の VMSS が自動生成されます。

62688a0b-4313-43fa-9e29-32c3e97fa484-AzureBatch-VMSS

GUID + -AzureBatch-VMSS という形で、Batch の内部ルールに従って自動生成されたものです。

結論:Azure Batch が作成する VMSS/ノード名は「変更・カスタマイズ不可」

結論から言うと、Azure Batch(ユーザー サブスクリプション割り当て)で自動作成される VMSS/ノード名について、

  • 作成時に任意の名前を指定することはできません
  • プレフィックス/サフィックスを付けるオプションもありません
  • 作成後に VMSS 名やノード名をリネームすることもできません

Microsoft Q&A でも、同様の質問に対して「Batch が作成するリソースにはあらかじめ決められた命名規則があり、スケール セットやノードの名前をカスタマイズすることはできない」と明言されています。

また、Azure Virtual Machine Scale Set 自体の仕様としても、いったん作成した VMSS の「コンピューター名プレフィックス」や VM 名を後から変更することはできません。これは Batch 経由かどうかに関わらない制約です。

つまり、

  • 「VMSS 名に prod-*** のようなプレフィックスを付ける」
  • 「既に作られた VMSS 名を後からリネームする」

といった操作は、Azure Batch と VMSS の仕様上できない、というのが正解です。

できること/できないことを整理

項目可否補足
VMSS リソース名の変更(リネーム)不可Azure VMSS 自体がリネーム非対応
VMSS 名のプレフィックス/サフィックス指定不可Batch の API/ポータルに指定項目なし
ノード(VM)名の変更不可VM 名/コンピューター名プレフィックスは作成後変更不可
VMSS/ノードへのタグ付与可Portal/CLI/Policy から自由に設定できる
Batch プール ID/ジョブ名の命名可論理名として人間に分かりやすい命名が可能
リソース グループやサブスクリプションでの分離可環境やシステムごとにスコープを分けて管理可能

したがって、「名前で識別しよう」と考えるのをやめて「タグ」「スコープ設計」で識別するのが、Azure Batch(ユーザー サブスクリプション割り当て)における現実的なベストプラクティスになります。

代替策1:タグで「人間に分かる情報」を付ける(最優先)

Azure Batch が自動で決める VMSS 名は変えられないので、運用上必要な情報は タグ に載せていくのが王道です。Microsoft Q&A の回答でも、名前を変えられない代替策としてリソース タグの活用が推奨されています。

最低限付けておきたいタグ例

タグ名例目的
ProjectSalesDashboardどのプロジェクト/システムかを特定
Environmentprod / stg / dev本番・検証・開発など環境の区別
OwnerDataPlatformTeam責任チーム・担当者の明示
BatchAccountbatch-prod-01どの Batch アカウント由来かを紐付け
BatchPoolIdhpc-pool-aどのプールに対応する VMSS かを特定
CostCenterCC-1001部門別のコスト配賦に利用

VMSS/VM ノードだけでなく、関連するストレージ アカウントやネットワーク、Batch アカウント自体にも同じタグ構成を適用しておくと、コスト分析やトラブルシュートの際に非常に分かりやすくなります。

CLI で既存 VMSS にタグを付与する例

ユーザー サブスクリプション割り当てでは、Batch プールを作成した時点で VMSS がサブスクリプション内に作成されています。作成済み VMSS に対してタグをまとめて付ける場合は、Azure CLI から次のように実行できます。

# 対象 VMSS のリソース ID はポータルや `az vmss list` で確認
az resource tag \
  --ids <vmss-resource-id> \
  --tags Project=SalesDashboard \
         Environment=prod \
         Owner=DataPlatformTeam \
         BatchAccount=batch-prod-01 \
         BatchPoolId=hpc-pool-a

スクリプト化しておき、「新しいプールを作ったら必ず VMSS にタグを付ける」という運用フローに組み込んでしまうと、タグ漏れを防止できます。

代替策2:Azure Policy でタグ付与を自動化・強制

ユーザー サブスクリプション割り当てでは、VMSS が自サブスクリプション内に見えるため、Azure Policy の対象にすることができます。

代表的なパターンは以下のとおりです。

  • 必須タグ(例:Project, Environment, Owner)がない VMSS の作成を拒否する
  • リソース グループに付いているタグを VMSS に自動継承する
  • 特定のリソース タイプ(Microsoft.Compute/virtualMachineScaleSets)に対してのみタグ ポリシーを適用する

タグ継承ポリシーの例

詳細な説明はここでは省きますが、概念的には次のようなポリシーを定義しておくと便利です(実際の assignment 時にはパラメーターやスコープを調整してください)。

{
  "properties": {
    "displayName": "継承: リソース グループのタグを VMSS にコピー",
    "mode": "Indexed",
    "policyRule": {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Compute/virtualMachineScaleSets"
          },
          {
            "field": "tags['Project']",
            "exists": "false"
          }
        ]
      },
      "then": {
        "effect": "modify",
        "details": {
          "operations": [
            {
              "operation": "addOrReplace",
              "field": "tags['Project']",
              "value": "[resourceGroup().tags['Project']]"
            },
            {
              "operation": "addOrReplace",
              "field": "tags['Environment']",
              "value": "[resourceGroup().tags['Environment']]"
            }
          ]
        }
      }
    }
  }
}

このようなポリシーをあらかじめサブスクリプションやリソース グループに割り当てておけば、Batch が新しい VMSS を作るたびに自動でタグが補完され、「タグを付け忘れた VMSS がある」という状態を防止できます。

代替策3:論理名は Batch アカウント/プール/ジョブに集約する

人間にとって意味のある「論理名」は、Batch の上位リソース(アカウント・プール・ジョブ)に寄せるのが設計としては素直です。Azure Batch では、プール ID やジョブ ID には自由に命名規則を適用できます。

例えば以下のような命名ルールを決めておくと、資料や監視画面だけ見ても内容が想像しやすくなります。

レイヤー命名例意味
Batch アカウント名batch-sales-prod-01Sales システム本番用 Batch アカウント(リージョン 1)
プール IDpool-hpc-report-aレポート生成用 HPC プール A 系列
ジョブ名job-daily-report-YYYYMMDD日次レポート バッチ

運用設計のポイントは、「VMSS の名前を見に行かなくても、Batch 側の情報だけで十分に状況が把握できる」状態を作ることです。どうしても物理リソースとの対応が必要であれば、

  • プール ID ⇔ VMSS リソース ID の一覧を Wiki や構成管理ツールに記録しておく
  • 前述の BatchPoolId タグにプール ID を必ず入れておく

といった手段で「論理 ⇔ 物理」の橋渡しをしておくとよいでしょう。

代替策4:リソース グループ/サブスクリプションでの分離

Batch のプールを環境ごと・システムごとに明確に分離したい場合は、リソース グループやサブスクリプションを分けるのも有効です。

  • 本番/検証/開発でリソース グループを分割する
  • 基幹システムと事業部門システムでサブスクリプションを分ける
  • それぞれに Batch アカウントを作成し、プールもその中に閉じ込める

こうしておけば、たとえ VMSS 名がランダムでも、

  • 「このサブスクリプションにある VMSS はすべて ○○ システム用」
  • 「このリソース グループ配下の VMSS はすべて本番環境」

とスコープで切り分けられるので、視覚的な混乱をかなり抑えられます。また、サブスクリプション/リソース グループ単位で RBAC(権限)やコスト管理も整理できるため、運用ガバナンスの観点でもメリットがあります。

代替策5:Azure Resource Graph/CLI で Batch 由来 VMSS を可視化・レポート

ユーザー サブスクリプション割り当てでは、VMSS が通常の Azure リソースとして管理されるため、Azure Resource Graph で一括検索・集計が可能です。

Azure CLI(Resource Graph)で Batch 由来 VMSS を一覧する例

az graph query -q '
resources
| where type =~ "microsoft.compute/virtualmachinescalesets"
| where name contains "AzureBatch-VMSS"
| project name, resourceGroup, tags, id
'

ここで tags を投影しているため、前述の BatchPoolId や Environment をタグに入れておけば、Kusto クエリで集計が行えます。

タグ別に VMSS の台数やコストをざっくり把握する例

より踏み込んだ例として、タグごとの VMSS 台数を集計するクエリ例を挙げます(Resource Graph Explorer での実行を想定)。

resources
| where type =~ "microsoft.compute/virtualmachinescalesets"
| where name contains "AzureBatch-VMSS"
| summarize count() by tostring(tags['Project']), tostring(tags['Environment'])
| order by tags_Project asc, tags_Environment asc

ここからさらに Log Analytics や Power BI に連携しておけば、「どのプロジェクト・環境でどれだけ Batch VMSS が動いているか」をダッシュボード化することも難しくありません。

運用シナリオ別の考え方

HPC バッチ処理(大量・短命なプールが頻繁に立ち上がるケース)

HPC ワークロードのように、ジョブごとに短命なプール/VMSS を立てたり消したりするパターンでは、そもそも「個々の VMSS を名前で追いかける」こと自体をやめてしまう方が安全です。

  • プールは「ジョブ種別 × 優先度」くらいの粒度でまとめる
  • VMSS の詳細は見に行かず、Batch のジョブ/タスク レベルでモニタリングする
  • 課金・台数の把握は Tags + Resource Graph で集計する

このように「VMSS は完全に裏方」と割り切ることで、名前がランダムであることを気にしなくてよくなります。

長期稼働の常駐バッチ(固定プールで運用するケース)

常時稼働するバッチ基盤では、プール自体が長寿命になるため、

  • プール ID に十分意味のある名前を付ける
  • 対応する VMSS にも同じ情報をタグとして持たせる
  • 監視通知などの文言にはプール ID/ジョブ名を含める

といった形で、「人間が見る名前はすべて Batch 側に寄せる」設計がおすすめです。VMSS 名そのものは、あくまでシステム内部の識別子と考えます。

複数システム/複数チームで共用するサブスクリプション

1 つのサブスクリプション内で複数チームが Batch を使う場合は、タグとガバナンス設計が特に重要になります。

  • 全チーム共通のタグ標準(Project, Environment, Owner, CostCenter 等)を決める
  • Azure Policy でタグ必須/継承を強制する
  • サブスクリプション/リソース グループ レベルで RBAC を分離する
  • Resource Graph でチームごとの Batch 利用状況レポートを配布する

こうしておけば、「誰が作ったのかよく分からない VMSS が大量にある」といった状況を避けられます。

名前変更が本当に必要になった場合の唯一の選択肢:「作り直す」

どうしても VMSS 名やプール構成を変えたい場合、現時点で取りうる選択肢は実質的に 「新しいプールを作り直す」ことだけです。

  1. 新しい名前・タグ設計に基づいて、別の Batch プールを作成する
  2. プールに対応する VMSS/ネットワークに必要なタグや設定を適用する
  3. テスト環境でジョブ/タスクが正常に動くことを確認する
  4. 本番ワークロードを段階的に新しいプールへ切り替える
  5. 旧プールからジョブ/スケジュールを削除し、不要になったらプールを削除する

この手順は VM サイズや OS イメージを変えたい場合にもよく使われる「作り直しパターン」であり、Azure Batch の仕様と相性がよいアプローチです。

よくある質問(FAQ)

REST API や ARM テンプレート/Bicep から、VMSS 名やプレフィックスを指定できませんか?

Azure Batch のプール作成 API(pools/create)を見ても、指定できるのはプール ID、VM サイズ、イメージ、ノード数、ネットワーク設定などであり、VMSS 名そのものを指定するパラメーターは存在しません。

そのため、ARM テンプレートや Bicep であっても、Batch 経由で作られる VMSS 名をコントロールすることはできません。

VM のコンピューター名(ホスト名)だけでも変えられませんか?

VMSS では computerNamePrefix という形でコンピューター名のプレフィックスを持ちますが、これもリソース作成後に変更することはできません。

Batch が VMSS を作成する際にも、このプレフィックスは内部的に決定されており、ユーザーが指定する手段は用意されていません。

将来のアップデートで、名前をカスタマイズできるようになる可能性はありますか?

現時点では、公式ドキュメントや公開情報の範囲で「VMSS 名やノード名のカスタマイズに対応する計画」が明示されているわけではありません。ただし Azure のサービスは頻繁に更新されるため、重要な要件であれば、

  • 公式ドキュメント(特に Azure Batch と VMSS 関連)
  • Microsoft Q&A/GitHub Issues などのコミュニティ

を定期的に確認し、変更が入っていないかをウォッチしておくとよいでしょう。

まとめ:名前は諦めて「タグ+ポリシー+可視化」で戦う

本記事のポイントを最後に整理します。

  • Azure Batch(ユーザー サブスクリプション割り当て)で作成される VMSS/ノード名は、Batch の内部ルールで自動生成されるため変更・カスタマイズできない
  • VMSS 自体の仕様としても、作成後のリネームやコンピューター名プレフィックスの変更はサポートされない
  • 「名前で人間が識別する」のを諦め、タグでプロジェクト/環境/プール ID/オーナーなどを明示することが最も実務的
  • Azure Policy を使えば、VMSS に対するタグ必須・継承を自動化でき、タグ漏れ防止に効果的
  • 論理的な名前付けは Batch アカウント/プール/ジョブに寄せ、「VMSS は裏方」と割り切る設計がシンプル
  • ユーザー サブスクリプション割り当てでは VMSS がサブスクリプションに直接見えるため、Resource Graph や Power BI と組み合わせて可視化・レポートを整備すると運用が楽になる
  • どうしても構成を変えたい場合は、新しい設計でプールを作り直し、ワークロードを段階的に移行するのが唯一かつ安全な選択肢

つまり、Azure Batch では「名前を変える」のではなく、「名前に頼らなくても困らない運用を設計する」ことが重要です。タグ+ポリシー+可視化を組み合わせることで、GUID ベースの VMSS 名でも実務上の課題は十分解決できます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次