Git Product home page Git Product logo

azure-iac-comparison's Introduction

Azure の IaC の比較

本リポジトリは Azure にリソースをデプロイする際に用いられる IaC (Infrastructure as Code) の比較を行うためのリポジトリです。

比較対象

本リポジトリで比較する IaC ツールは以下の通りです。

ツール 概要 特徴
1 ARM Template Azure Resource Manager テンプレートは、 Azure のネイティブ IaC ツールで、Azure リソースのプロビジョニングを一元的に行うための宣言型のコード構文を提供します。
  • JSON フォーマットで記述します。
  • Azure の各種リソースに対応しています。
  • Azure のポータル、PowerShell、CLI から実行可能です。
2 Bicep Bicep は、ARM テンプレートをより簡易に書けるように設計された、Azure の新しい DSL (ドメイン特化言語) です。
  • JSON よりもシンプルな表記法で IaC を実現します。
  • ARM テンプレートを自動的に Bicep に変換するツールも提供されています。
  • VS Code では Bicep のための専用の拡張機能が提供されています。
3 Terraform HashiCorp 社が開発したオープンソースの IaC ツールで、マルチクラウドに対応しており、Azure もサポートしています。
  • HCL (HashiCorp Configuration Language) という独自の言語でリソースを記述します。
  • リソースのプロビジョニング状態を tfstate ファイルとして状態管理します。
  • プロバイダープラグインを使用して、異なるクラウドプロバイダのリソースを管理します。
4 Pulumi プログラミングの普通の言語(Python、JavaScript/TypeScript、C# など)を使用して IaC を記述することが可能なため、従来の開発ワークフローとの親和性が高い IaC ツールです。
  • フル機能のプログラミング言語を使用できるため、通常のコードと同じようにテストやロジックの導入が可能です。
  • マルチクラウドに対応しています。
  • 状態は pulumi.com の SaaS ベースのサービスに保存されますが、自己管理も可能です。

作成するリソース一覧

本リポジトリでは以下のリソースを作成します。リージョンは全て Japan East です。

リソース 名前 詳細
1 ストレージアカウント m2sakaistorageaccount
  • パフォーマンス:Standard
  • レプリケーション:LRS
  • アカウントの種類:StorageV2(汎用 v2)
2 App Service Plan m2-sakai-asp
  • SKU:B1
  • OS:Windows
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 によるデプロイ

  1. arm_templateフォルダに移動します。
    cd arm_template
  2. Azure CLI にログインします。
    az login
  3. 各 ARM Template を以下のコマンドでデプロイします。全てのリソースを一括でデプロイする場合は run_deploy_arm.sh を実行します。パラメータは適宜適切なものに変える必要があります。
    az deployment group create --resource-group <リソースグループ名> --template-file <ARM Template> --parameters <パラメータファイル>

Bicep によるデプロイ

  1. bicepフォルダに移動します。
    cd bicep
  2. Azure CLI にログインします。
    az login
  3. 各 Bicep を以下のコマンドでデプロイします。全てのリソースを一括でデプロイする場合は run_deploy_bicep.sh を実行します。パラメータは適宜適切なものに変える必要があります。
    az deployment group create --resource-group <リソースグループ名> --template-file <Bicep ファイル> --parameters <パラメータファイル>

Terraform によるデプロイ

  1. terraformフォルダに移動します。
    cd terraform
  2. Azure CLI にログインします。
    az login
  3. run_deploy_terraform.sh を実行します。パラメータは適宜適切なものに変える必要があります。
    sh run_deploy_terraform.sh

Pulumi によるデプロイ

  1. pulumiフォルダに移動します。
    cd pulumi
  2. Azure CLI にログインします。
    az login
  3. npm install を実行して依存ライブラリを取得します。
    npm install
  4. pulumi up を実行します。パラメータは適宜適切なものに変える必要があります。
    pulumi up

azure-iac-comparison's People

Contributors

m2-sakai avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.