こんにちは、アーキテクトのやまぱんです。
補足コメントや質問、いいね、拡散、是非お願いします🥺!
間違ってたら優しく教えてください!
モチベ
Azure Site Recovery をAzure CLI で実行するときの引数が初見殺しでややこしいなーと思ったので、誰かの役に立てばと思いメモしておきます。
具体的にどれ?
例えば以下のフェールオーバを実行コマンドの引数です。
az site-recovery protected-item unplanned-failover
引数は以下があります。
説明は MS Learn からの引用です
--fabric-name
一意のファブリック名。
--failover-direction
フェールオーバーの方向。
--ids
1 つまたは複数のリソース ID (スペース区切り)。 これは、'Resource Id' 引数のすべての情報を含む完全なリソース ID である必要があります。 --ids または他の 'Resource Id' 引数を指定する必要があります。
--name --replicated-protected-item-name -n
レプリケーションで保護された項目名。--no-wait
実行時間の長い操作の終了を待機しません。
承認された値: 0, 1, f, false, n, no, t, true, y, yes--protection-container --protection-container-name
保護コンテナー名。--provider-details --provider-specific-details
プロバイダー固有の設定。 短縮構文、json-file、yaml-file をサポートします。 詳細を表示するには、"??" を試してください。--resource-group -g
リソース グループの名前。 az configure --defaults group= を使用して、既定のグループを構成できます。--source-site-operations
ソース サイトの操作の状態。--subscription
サブスクリプションの名前または ID。 az account set -s NAME_OR_ID を使用して、既定のサブスクリプションを構成できます。--vault-name
Recovery Services コンテナーの名前。
また以下は MS Learn に記載のある A2A (Azure 環境同士のDR構成) 時のコマンド例です。
az site-recovery protected-item unplanned-failover
--fabric-name fabric1_name
--protection-container container1_name
--replicated-protected-item-name protected_item_name -g rg
--vault-name vault_name
--failover-direction PrimaryToRecovery
--provider-details '{a2a:{}}'
--source-site-operations NotRequired
パッとみわかりそうなものもありますが、MS Learn の説明や例コマンドを読んでもわかりにくいものもあります。
具体的には以下です。結構初見殺しだと思います。
- --name / --replicated-protected-item-name / -n
レプリケーションを構成しているAzure VM の名前かと思いきや、そうではありません。 - --protection-container --protection-container-name
Recovery Services コンテナー名かと思いきや、そうではありません。別にRecovery Services コンテナーの名前を指定する引数 --vault-name があります。 - --fabric-name
ファブリックネームって何ですの
これらの引数の確認方法
実際にAzure Portal やAzure CLI で確認してみましょう。
Azure Portal
DR を構成している Recovery Services コンテナー からかきのように遷移してリソース ID をコピーします。
以下がその内容です。Subscription ID は 伏字にしています
/Subscriptions/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX83/resourceGroups/Site-Recovery-vault-australiaeast/providers/Microsoft.RecoveryServices/vaults/Site-recovery-vault-australiaeast/replicationFabrics/asr-a2a-default-eastasia/replicationProtectionContainers/asr-a2a-default-eastasia-container/replicationProtectedItems/fec4de0b-c810-50c5-8483-a4dcbbb762c2
見やすく改行します
- /Subscriptions/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX83
- /resourceGroups/Site-Recovery-vault-australiaeast
- /providers/Microsoft.RecoveryServices
- /vaults/Site-recovery-vault-australiaeast
- /replicationFabrics/asr-a2a-default-eastasia
- /replicationProtectionContainers/asr-a2a-default-eastasia-container
- /replicationProtectedItems/fec4de0b-c810-50c5-8483-a4dcbbb762c2
上記を見ればわかるかと思います。
引数との対応を表にしたものが以下です。
引数 | 項目名 | 値(上記の例の場合) |
---|---|---|
--resource-group | リソースグループ | Site-Recovery-vault-australiaeast |
-- vault-name | Recovery Services コンテナー名 | Site-recovery-vault-australiaeast |
--fabric-name | ファブリック名 | asr-a2a-default-eastasia |
--protection-container | プロテクションコンテナー名 | asr-a2a-default-eastasia-container |
--name | 保護対象のVMを指し示す値 (VM 名ではない) | fec4de0b-c810-50c5-8483-a4dcbbb762c2 |
Azure CLI
続いて Azure CLI で--fabric-name、--protection-container、--name の値を取得します。
リソースグループ名 (Site-Recovery-vault-australiaeast)、Recovery Services コンテナー名 (Site-recovery-vault-australiaeast) を引数に取ることで可能です。
- -fabric-name
az site-recovery fabric list --resource-group '<リソース グループ名>' --vault-name '<Recovery Services コンテナー名>' --output table
これで --fabric-name が取得できました。
asr-a2a-default-eastasia が --fabric-name です。
- --protection-container
さきほど取得した --fabric-name も利用して取得します。
az site-recovery protection-container list --fabric-name '<ファブリック名>' --resource-group '<リソース グループ名>' --vault-name '<Recovery Services コンテナー名>' --output table
asr-a2a-default-eastasia-container が --protection-container です。
- --name / --replicated-protected-item-name / -n
さきほど取得した --fabric-name に加えて、--protection-container も利用して取得します。
az site-recovery protected-item list --fabric-name '<ファブリック名>' --protection-container '<保護コンテナー名>' --resource-group '<リソース グループ名>' --vault-name '<Recovery Services コンテナー名>' --query "[].{FriendlyName:properties.friendlyName,Name:name}" --output table
fec4de0b-c810-50c5-8483-a4dcbbb762c2 が --name です。
また FriendlyName の VM-asr-origin が、保護対象の アイテム名 (Azure VM 名) です。
まとめ
Azure CLI で ASR を操作するときに以下の引数に注意。
- --name / --replicated-protected-item-name / -n
レプリケーションを構成しているAzure VM の名前かと思いきやそうではありません。 - --protection-container --protection-container-name
Recovery Services コンテナー名かと思いきや、そうではありません。 - --fabric-name
ファブリックネーム
Azure Portal でも確認できるし、Azure CLI でも対象の Recovery Services コンテナーのリソースグループとRecovery Services コンテナー名が分かれば取得することが可能❣
おまけ Azure CLI でフェールオーバーした際の画面ショット
以下のように正常にコマンドは実行されていることが分かります。
フェールオーバー実施後に得られる name 値
今回の場合、ba10407f-2909-4013-8064-a449b3bbebfa は Job 識別子と呼ばれるものです。
Azure CLI (Az site-recovery job show コマンド) で以下のように使うことができます。
az site-recovery job show -g Site-Recovery-vault-australiaeast --vault-name Site-Recovery-vault-australiaeast --job-name ba10407f-2909-4013-8064-a449b3bbebfa
参考) az site-recovery job
https://learn.microsoft.com/ja-jp/cli/azure/site-recovery/job?view=azure-cli-latest
参考