コードとしてのインフラストラクチャ
コードとしてのインフラストラクチャ (IaC) は、コンピューターで読み取り可能な、ソース管理に格納されているコードを使用して、クラウド インフラストラクチャ リソースを管理およびプロビジョニングするプロセスです。 このプラクティスが "コードとしてのインフラストラクチャ" と呼ばれるのは、インフラストラクチャを他のソース コードと同様に扱うことができるためです。
IaC は、インフラストラクチャの構成とデプロイを自動化できるため、DevOps の重要なコンポーネントです。 この自動化により、インフラストラクチャの管理とプロビジョニングに必要な時間と労力が削減されると同時に、インフラストラクチャの構成は一貫性と信頼性を備えたものとなります。 IaC は、インフラストラクチャがセキュリティで保護され、組織のポリシーに準拠していることを確認するのにも役立ちます。
Azure ネイティブ ツールとクラウドに依存しないツール
IaC ツールを選択する要因のうち最も重要なものの 1 つに、クラウド環境があります。
Azure ネイティブ ツール: Azure CLI、Azure PowerShell、Bicep などの IaC ツールは、Azure でのみ使用できます。 クラウド インフラストラクチャと IaC ツールの両方が同じ会社から提供されるため、クラウド機能とリリースとツール内でのサポートの間でかかる時間が短縮されるという利点があります。
クラウドに依存しないツール: Terraform などの IaC ツールを使用すると、混合クラウド環境でコードとしてのインフラストラクチャを管理できます。 IaC ツールによっては、新しくリリースされた Azure 機能がすぐにサポートされない場合があります。
命令型 IaC ツールと宣言型 IaC ツール
IaC 構成ツールには 2 種類あります。
命令型 IaC ツール: 命令型ツール (言語) は、実行する内容とその方法がコードによって明示的に指定されるツールです。 記述するコードによって、一度に 1 ステップずつ、特定の順序でアクションが実行されて、インフラストラクチャが構成されます。 構成は段階的に実行されるため、ほとんどの命令型 IaC ツールはべき等ではありません。
Azure でリソースを管理およびプロビジョニングするための命令型 IaC ツールは次のとおりです。
- Azure CLI
- Azure PowerShell
宣言型 IaC ツール: 宣言型ツール (言語) を使用すると、各ステップの実行方法ではなく、目的の結果を指定できます。 ほとんどの宣言型 IaC ツールは、一般的なパターンに準拠しています。 インフラストラクチャの定義を作成したら、コマンドを実行して、定義した内容をプロビジョニングします。 インフラストラクチャの構成の状態に関係なく構成を複数回適用できるため、宣言型 IaC ツールはべき等です。 この機能により、準拠していないインフラストラクチャを準拠状態に戻すことで、構成のずれを防ぐことができます。
Azure でリソースを管理およびプロビジョニングするための宣言型 IaC ツールは次のとおりです。
- Bicep
- Terraform
Recommendations
- Azure デプロイに対するデプロイ、管理、サポートに IaC アプローチを採用します。
- 次のシナリオでは、IaC に非 Azure ネイティブ ツールを使用します。
- Azure ネイティブ ツールのみを使用したいと考えています。 組織はこれまでに、Azure Resource Manager テンプレート (ARM テンプレート) をデプロイした経験があります。
- 組織は、すべてのプレビュー バージョンと一般提供 (GA) バージョンの Azure サービスに対して、即時サポートを必要としています。
- 次のシナリオでは、IaC にネイティブではないツールを使います。
- 組織が混合クラウド環境でインフラストラクチャを管理しています。
- 組織は、すべてのプレビュー バージョンと GA バージョンの Azure サービスに対して、即時サポートを必要としていません。