📄

Bicepを使ってAzureでIaC

2024/04/14に公開

はじめに

AzureでIaCをやってみました。IaCの記法はBicepを用いています。

https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/overview?tabs=bicep

概要

  • コードを書いて、コマンドでデプロイします
    • サンプルとしてリソースグループを作成しています
  • Cloud Shell上で行いますので、最初に作成します

やってみた

GUI(Azure Portal)での操作

まずサブスクを選び、次にCloud Shellから作りますので、環境を作ります。

CLI(Cloud Shell)での操作

Bashモードで以下のコマンドを実行してファイルを作成し、エディタを起動させます。

mkdir sample
touch sample/main.bicep
code sample/

エディタ上でmain.bicepを開いて、以下を参考に記述していきます。

https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/create-resource-group

サンプルよりさらに簡素にしてみました。

main.bicep
targetScope = 'subscription'

resource newRG 'Microsoft.Resources/resourceGroups@2022-09-01' = {
  name: 'sampleResourceGroup'
  location: 'japaneast'
}

デプロイ

デプロイは以下のコマンドで行います。subという記述についてはAWSのCloudFormationと異なり、スコープの概念が必要な模様です。

az deployment sub create \
  --name SampleSubDeployment \
  --location japaneast \
  --template-file main.bicep

以下のような注意が出ますが、作成されます。

Warning no-hardcoded-location: A resource location should not use a hard-coded string or variable value. Please use a parameter value, an expression, or the string 'global'. Found: 'japaneast' [https://aka.ms/bicep/linter/no-hardcoded-location]

以下のように作成されました。

デプロイ履歴は、サブスクリプションから見れます

更新

少しコードを書き換えて、タグを追加してみます。

main.bicep
targetScope = 'subscription'

resource newRG 'Microsoft.Resources/resourceGroups@2022-09-01' = {
  name: 'sampleResourceGroup'
  location: 'japaneast'
  tags: {
    Dept: 'Finance'
    Environment: 'Production'
  }
}

更新時も、デプロイ時と同じコマンドで行います。
更新箇所を確認するために、--confirm-with-what-ifのオプションを追加します。

az deployment sub create \
  --confirm-with-what-if \
  --name SampleSubDeployment \
  --location japaneast \
  --template-file main.bicep

オプションを追加すると、以下のように追加箇所を表示して更新の確認を行います。

削除

削除する際はaz deployment sub deleteを使います。

az deployment sub delete \
  --name SampleSubDeployment

その他コマンドは以下を参照にください。
https://learn.microsoft.com/ja-jp/cli/azure/deployment/sub?view=azure-cli-latest

おわりに

今回はAzureでIaCをやってみました。簡単なサンプルでしたが、これをベースに色々やってみようと思います。

またAzureはIaCにも力を入れるようですので、今後ドンドン使いやすくなっていってほしいです。
https://techblog.ap-com.co.jp/entry/2024/02/23/185500

この記事がどなたかのお役に立てれば幸いです。

Discussion