既存の Azure IoT Operations インスタンスを複製して、同じ構成と設定で新しいインスタンスを作成できます。 複製は、インスタンスのバックアップを作成する場合や、テストまたは開発目的で同じ構成で新しいインスタンスを設定する場合に便利です。
複製のユース ケース シナリオは次のとおりです。
- ディザスター リカバリー: 障害が発生した場合にインスタンスを復元するために使用できる Azure IoT Operations インスタンスのバックアップを作成します。
- テストと開発: テストまたは開発の目的で、既存のインスタンスと同じ構成で新しい Azure IoT Operations インスタンスを設定します。
- 移行: 新しい場所にインスタンスを複製して、Azure IoT Operations インスタンスを新しいクラスターまたはリソース グループに移動します。
- スケーリング: Azure IoT Operations インスタンスの複数のインスタンスを作成して、ワークロードの増加を処理するか、複数のインスタンスに負荷を分散します。
注
複製機能はプレビュー段階であり、開発中です。
[前提条件]
クラスターにデプロイされた Azure IoT Operations インスタンス。 詳細については、「Deploy Azure IoT Operations」をご覧ください。
開発マシンにインストールされた Azure CLI。 このシナリオには、Azure CLI バージョン 2.53.0 以降が必要です。
az --versionを使用してバージョンを確認し、必要に応じてaz upgradeを使用して更新します。 詳細については、Azure CLIのインストール方法に関するページを参照してください。Azure CLI 用の Azure IoT Operations 拡張機能。 複製は現在、次の IoT Operations インスタンスのバージョン範囲 (
1.0.34>=,<1.2.0) と互換性があります。 拡張機能を更新またはインストールするには、次のコマンドを使用します。<VERSION_NUMBER>を、インスタンスと互換性のあるバージョンに置き換えます。az extension add --upgrade --name azure-iot-ops --version <VERSION_NUMBER>
Clone コマンドの概要
az iot ops clone コマンドを使用して、既存のインスタンスに基づいて新しい Azure IoT Operations インスタンスを作成します。
clone コマンドは、Azure IoT Operations インスタンスを分析し、ARM テンプレートを使用してコードとしてのインフラストラクチャで再現します。 複製の出力を、レプリケーションと呼ばれる別の接続されたクラスターに適用できます。 後で使用するために複製をローカル ディレクトリに保存し、クラスターに適用する前にいくつかの構成変更を実行することもできます。
複製操作は、3 つの主要なコンポーネント (ソース インスタンスであるモデル、ターゲット、ターゲットインスタンス、テンプレート) で構成されます。 次の図は、複製フローを示しています。
clone コマンドは、ソース インスタンスを分析し、IaC/ARM テンプレートを使用してレプリケートします。 レプリケートされた定義は、1 つ以上の宛先クラスターに適用されます。
モデルの複製
モデルは、コピー元となるインスタンスです。 それは複製操作の真実の源です。 モデルを識別するには、次のパラメーターを入力します。
-
--name/-n: モデル インスタンス名。 -
--resource-group/-g: モデル インスタンスを含むリソース グループ。
ターゲットの複製
ターゲットは、複製定義をレプリケートまたは保存する場所です。 複製は、1 つまたはすべてのターゲットに適用することも、まったく適用しないこともできます。 ターゲット オプションを指定しない場合、プロセスはスコープ内リソースの概要を出力した後に終了します。 ターゲットを識別するには、次のいずれかのパラメーターを入力します。
--to-cluster-id: 複製されたインスタンスをレプリケートするターゲット クラスターの完全な Azure リソース ID を指定します。 このオプションを使用すると、clone コマンドは、複製定義で指定されたバージョンの Azure IoT Operations をターゲット クラスターにデプロイし、関連するすべてのリソースを適用してデプロイを完了します。 現在、ユーザー割り当てマネージド ID (UAMI) 資格情報の自動フェデレーションは、クラスター ターゲットに複製する場合にのみサポートされています。--to-dir: 複製定義をディスクにレプリケートするローカル ディレクトリ パスを指定します。このパスは、既存の ARM デプロイ ツールと共に、変更の有無にかかわらずデプロイできます。 複製定義を検査すると、カスタマイズを容易にするためにさまざまなパラメーター化が実行されます。
Important
ターゲット リソース グループを選択する場合は、既存の IoT Operations インストールが含まれていない、モデルのリソース グループとは別のリソース グループを使用することを検討してください。 既定では、複製定義はモデル インスタンスのリソース名を保持します。 ターゲットとモデルが同じリソース グループを共有し、カスタムの場所を変更すると、リソース名の競合が発生する可能性があります。
テンプレートの複製
clone コマンドは、ターゲットに作成されるリソースを記述する ARM テンプレートを生成します。 テンプレートは、モデル インスタンス内のリソースとその構成に基づいて生成されます。 テンプレートをカスタマイズするには、次の省略可能なパラメーターを入力します。
テンプレートのカスタマイズ パラメーターを複製する
次の省略可能なパラメーターを使用して、生成された ARM テンプレートをカスタマイズできます。
--mode: サブデプロイをテンプレートで編成する方法を指定します。-
nestedモードが使用されている場合 (既定)、すべてのサブデプロイはルート デプロイ ファイル内に自己完結型になります。 -
linkedモードを使用すると、資産関連のサブデプロイが分割され、個別のファイルとして格納され、ルートデプロイによってリンクされます。 インスタンスに多数のデバイスと資産が含まれている場合は、linkedモードを使用して、スケーラビリティと管理性を向上させます。 大規模なデプロイでこの分離が必要な場合を除き、このパラメーターを指定する必要はありません。
-
--param:location形式を使用して、instanceName、adrNamespaceId、key=valueなどの組み込みの既定のパラメーターをオーバーライドできます。--helpを使用して、キーの完全な一覧を表示します。
インスタンスを複製する
インスタンスを複製するには、 az iot ops clone コマンドと適切なパラメーターを使用して、ソース インスタンスとターゲットの場所を指定します。
開始する前に、既定のサブスクリプションをモデル インスタンスと同じサブスクリプションに設定します。 それ以外の場合は、
--subscriptionコマンドを実行するたびにaz iot ops cloneを追加する必要があります。az account set -s $MODEL_SUBSCRIPTION_IDクラスター リソース ID を取得するには、次を実行します。
az resource show --name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --resource-type "Microsoft.Kubernetes/connectedClusters" --query id --output tsv既定のオプションを使用してインスタンスを複製し、ターゲットのアーク接続クラスターにレプリケートするには、次のコマンドを実行します。
az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-cluster-id <CLUSTER_ID>別のクラスターへのレプリケーションをカスタマイズするには、
--paramを使用し、key=value形式で変更するパラメーターを指定します。 たとえば、複製されたインスタンスの場所を変更するには、次を実行します。az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-cluster-id <CLUSTER_ID> --param location=eastusインスタンスをローカル ディスクに複製するには、
--to-dirパラメーターを使用して、複製定義を保存するディレクトリを指定します。 このオプションを選択すると、独自の判断で操作またはデプロイされる標準の ARM テンプレートが生成されます。az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-dir <DIRECTORY>ヒント
現在のディレクトリにインスタンスを複製するには、
--to-dir .インスタンスを複製してターゲット クラスターにレプリケートし、同じ操作でファイルに保存するには、次を実行します。
az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-cluster-id <CLUSTER_ID> --to-dir <DIRECTORY>インスタンスをクラスターに複製し、資産関連のサブデプロイを分割して順次適用するには、
--mode linked.モデル インスタンスに多数の資産関連リソースが含まれている場合に、パラメーターによって最も高いスケールが提供されます。az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-cluster-id <CLUSTER_ID> --mode linkedリンク モードでインスタンスをディスクに複製するには、リンクされた各資産または資産エンドポイント プロファイル テンプレートをルート テンプレートとは別にデプロイできます。
az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-dir . --mode linked
考慮事項と制限事項
- 自動 ID フェデレーションは現在、
--to-cluster-idオプションでのみサポートされています。 - リソース同期規則はキャプチャされません。
- IoT Operations システムマネージド ID とターゲット スキーマ レジストリの間で必要なロールの割り当ては複製によって処理されますが、その他のシステム マネージド ID ロールの割り当ては扱われません。
- Clone はクラウド側の操作です。 クラスターとは直接やり取りしません。 クラスター シークレットは、シークレット プロバイダー クラスとシークレット同期クラウド リソースを含むセキュリティで保護された設定を介してクラウドから同期されます。 モデル クラスターに、モデル IoT Operations ソリューションで参照される構成マップなどの要素がユーザーによって作成されている場合は、それらの要素をターゲット クラスターに対して再適用する必要があります。