Azure Bicepデプロイ時のオプション活用

前回の記事では、Bicepを用いたネットワークリソースの構築を実践いたしました。
Bicepを含むIaCを活用するメリットは、インフラの状態をコードで定義し、その構成を確実に再現できる点にあります。
そこで今回は、Bicepデプロイをより使いこなすために試した、2つのオプションをご紹介します。実際に試して分かった活用のポイントや、使用上の注意点についても併せてお伝えします。

オプション①:–confirm-with-what-if

このオプションを設定することで、デプロイ実行前に差分確認を行うことができます。
現在の環境とBicepファイルの内容を比較し、どのような変更が発生するかを事前にシミュレーションできます。

実行例

コマンドを実行すると、以下のように変更内容が可視化されます。

ターミナル上には、変更内容が色付きの記号で表示されます。
Create (+):新規に作成されるリソース
Modify (~):既存の設定が変更されるリソース
Delete (-):削除されるリソース(Completeモード時など)
NoChange (=):変更がないリソース

表示内容に問題がなければ「y」で実行、想定外であれば「n」で中断してコード修正へ戻れます。
デプロイ前にこの差分をしっかりと検証することで、環境への予期せぬ影響を未然に防ぐことができます。

オプション②:–mode Complete

このオプションを設定することで、コードを環境の正として管理することができます。
Bicepのデプロイモードには「Incremental(増分)」と「Complete(完全)」の2種類があります。

Incremental(デフォルト):コードにあるリソースを追加・更新します。コードにないリソースが環境に存在していても、そのまま残ります。
Complete:環境の状態をコードと完全に一致させます。コードに記述されていないリソースは、デプロイ時に自動的に削除されます。

デフォルトはIncrementalですが、より厳格な構成管理を目指す場合にはCompleteモードが有効です。

※補足:現在、MicrosoftではCompleteモードよりも、さらに安全にリソースの削除や保護を管理できる「デプロイスタック(Deployment Stacks)」の使用を推奨しています。Completeモードは強力ですが、影響範囲が広いため、より厳格かつ安全な管理を求める場合は、デプロイスタックの活用も検討してみてください。 

実行例

コードの一部をコメントアウトし、Completeモードでコマンドを実行すると、以下のようにリソースの削除が行われます。
①コメントアウト

ここでは、削除したいリソースをコードから完全に消去するのではなく、コメントアウトにてデプロイを行いました。
あえてコメントアウトを利用することで、どのリソースを、どのタイミングで削除しようとしているのかという作業過程が明確になります。
②デプロイ前

③デプロイ実施

④デプロイ後

Incrementalモードでは、コードにないリソースは「変更なし」と判断されて環境に残ってしまいますが、Completeモードであれば不要なリソースを確実に削除できます。

注意点

すでに運用されている環境でいきなりCompleteモードを適用すると、Bicepで管理していない共有リソースや、別メンバーが作成したリソースが削除されてしまうリスクがあります。
適用する際は、以下のルールを徹底することをおすすめします。

影響範囲の確認

Completeモードは、デプロイ対象のスコープ全体に影響します。

What-Ifとの併用

Completeモードを使う際は、必ず事前にWhat-Ifを実行し、削除対象に意図しないリソースが含まれていないかを確認してください。

まとめ

自動化されたデプロイにおいて、What-If による事前の差分確認や、Complete モードの仕組みを理解することは、作業の確実性を高めるための助けとなると考えます。
管理方法はプロジェクトの規模や方針によって様々だと思いますが、まずはこうしたオプションを試してみて、ご自身の環境に合った安全な構築・運用を検討してみてください。

著者について

入社4年目です。
現在、AWSやGoogle Cloudを用いたインフラ構築業務に取り組みながら、日々勉強中です。

s.e.をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(Azure)は、Azureを最大限活用するためのオールインワンサービスです。40年以上の様々なシステム構築・運用実績で得た業界理解と、Azure構築ナレッジを強みに、クラウドへの移行から運用までトータルでサポートし、お客様のAzure活用を実現します。

Azureクラウド
シェアする
タイトルとURLをコピーしました