本リポジトリは Azure にリソースをデプロイする際に用いられる IaC (Infrastructure as Code) の比較を行うためのリポジトリです。
本リポジトリで比較する IaC ツールは以下の通りです。
ツール | 概要 | 特徴 | |
---|---|---|---|
1 | ARM Template | Azure Resource Manager テンプレートは、 Azure のネイティブ IaC ツールで、Azure リソースのプロビジョニングを一元的に行うための宣言型のコード構文を提供します。 |
|
2 | Bicep | Bicep は、ARM テンプレートをより簡易に書けるように設計された、Azure の新しい DSL (ドメイン特化言語) です。 |
|
3 | Terraform | HashiCorp 社が開発したオープンソースの IaC ツールで、マルチクラウドに対応しており、Azure もサポートしています。 |
|
4 | Pulumi | プログラミングの普通の言語(Python、JavaScript/TypeScript、C# など)を使用して IaC を記述することが可能なため、従来の開発ワークフローとの親和性が高い IaC ツールです。 |
|
本リポジトリでは以下のリソースを作成します。リージョンは全て Japan East
です。
リソース | 名前 | 詳細 | |
---|---|---|---|
1 | ストレージアカウント | m2sakaistorageaccount |
|
2 | App Service Plan | m2-sakai-asp |
|
3 | Function App | m2-sakai-functionapp |
本リポジトリでは以下の環境としております。
ツール | バージョン | 確認方法 | 備考 |
---|---|---|---|
Azure CLI | 2.58.0 | az version |
|
bicep CLI | 0.26.54 | az bicep version |
|
terraform | v1.7.5 | terraform version |
|
pulumi | v3.111.1 | pulumi version |
|
node | v20.9.0 | node -v |
Pulumi を Typescript で扱うため |
arm_template
フォルダに移動します。cd arm_template
- Azure CLI にログインします。
az login
- 各 ARM Template を以下のコマンドでデプロイします。全てのリソースを一括でデプロイする場合は
run_deploy_arm.sh
を実行します。パラメータは適宜適切なものに変える必要があります。az deployment group create --resource-group <リソースグループ名> --template-file <ARM Template> --parameters <パラメータファイル>
bicep
フォルダに移動します。cd bicep
- Azure CLI にログインします。
az login
- 各 Bicep を以下のコマンドでデプロイします。全てのリソースを一括でデプロイする場合は
run_deploy_bicep.sh
を実行します。パラメータは適宜適切なものに変える必要があります。az deployment group create --resource-group <リソースグループ名> --template-file <Bicep ファイル> --parameters <パラメータファイル>
terraform
フォルダに移動します。cd terraform
- Azure CLI にログインします。
az login
run_deploy_terraform.sh
を実行します。パラメータは適宜適切なものに変える必要があります。sh run_deploy_terraform.sh
pulumi
フォルダに移動します。cd pulumi
- Azure CLI にログインします。
az login
npm install
を実行して依存ライブラリを取得します。npm install
pulumi up
を実行します。パラメータは適宜適切なものに変える必要があります。pulumi up