背景と目的
Azure で作成するリソースをテナント、サブスクリプション、リソースグループをグルーピングする単位として組織やチーム、プロジェクトや本番開発環境ごとに割り当てて使用されているケースがほとんどでは無いかと思います。タグは、テナント、サブスクリプション、リソースグループをまたがって何かしらをグルーピングしたい時に使用するものですが、マイクロソフトのタグ関連のドキュメンのサンプルにも CostCenter というキーワードが出てくるように、このリソースはどこどこ組織やどこどこチームのコストとして集計したい場合が多いように感じます。もちろん、高度に自動化した組織やチームであれば、タグで自動化処理のグルーピング単位を管理して使っていたりと別の用途も考えられます。
今回はリソースグループ単位でチームを分けているケースにおいて、基本的にはリソースグループに付けられている CostCenter タグと同一の値をリソースグループ内のリソースに付与するものの、ある特定のリソースだけ別のチームにコストを負担してもらうため CostCenter タグに違う値を設定する、というのを試してみます。
前提条件
コマンドの実施環境は、Azure Cloud Shell + Azure CLI です。
$ az version
{
"azure-cli": "2.33.0",
"azure-cli-core": "2.33.0",
"azure-cli-telemetry": "1.0.6",
"extensions": {
"ai-examples": "0.2.5",
"ssh": "1.0.0"
}
}
検証用のリソースグループを作成
# 環境変数をセットします
region=japaneast
prefix=mnrtagtest
# リソースグループをタグ付きで作成します
az group create \
--name ${prefix}-rg \
--location $region \
--tags CostCenter=MyTeam
リソースグループのタグを自動でリソースに付与する Azure Policy を作成
# CostCenter タグを自動追加する設定を作成します
az policy assignment create \
--name ${prefix}-rg-tag-costcenter \
--scope $(az group show \
--name ${prefix}-rg \
--query id \
--output tsv) \
--policy $(az policy definition list \
--query "[?displayName=='Append a tag and its value from the resource group'].name" \
--output tsv) \
--params '{"tagName": {"value": "CostCenter"}}'
リソースを作成してタグが自動追加されているか確認
# 仮想ネットワークをタグなしで作成します
az network vnet create \
--resource-group ${prefix}-rg \
--name ${prefix}-vnet
# リソースグループ内のタグを確認します
az resource list \
--resource-group ${prefix}-rg \
--query "[].{Name:name, CostCenter:tags.CostCenter}" \
--output table
Name CostCenter
--------------- ------------
mnrtagtest-vnet MyTeam
リソースを作成してタグに任意の値が設定されているか確認
# 仮想ネットワークをタグ付きで作成します
az network vnet create \
--resource-group ${prefix}-rg \
--name ${prefix}-vnet-otherteam \
--tags CostCenter=OtherTeam
# リソースグループ内のタグを確認します
az resource list \
--resource-group ${prefix}-rg \
--query "[].{Name:name, CostCenter:tags.CostCenter}" \
--output table
Name CostCenter
------------------------- ------------
mnrtagtest-vnet MyTeam
mnrtagtest-vnet-otherteam OtherTeam
参考
# リソースグループを削除します
az group delete \
--name ${prefix}-rg
下記は、参考サイトです。
https://docs.microsoft.com/ja-jp/azure/governance/policy/tutorials/govern-tags