🔥
検証用Azure Firewallを確実に停止するためのPowerShellスクリプト with GitHub Copilot
モチベ
- 検証用Azure Firewallの割り当て解除が面倒で放置しておくと結構お金がかかる
- 毎回スクリプトのリソースグループ名を変えたりするのが面倒でつい後回しにしてしまう
- スケジュールで検証サブスクリプションのAzure Firewallを全部割り当て解除してくれれば落なのではないか?
- Azure Automation Runbook + Azure PowerShellでやってみよう
- ついでにVSCodeにGitHub Copilotが入っているので試したい
スクリプト
- Get-AzResourceGroupでリソースグループ一覧を取得
- それをforeachで回してAzure Firewallの有無によって挙動を変更
-
Get-AzFirewall -ResourceGroupName $r.ResourceGroupName
で特定RG内のAzure Firewallを複数取得できるため、さらにそれらに対してforeachを回す
-
- Azure Firewallの割り当て状況は
ipConfigurations
から判別でき、構成されていれば割り当て解除する - GitHub Copilotが大筋を立ててくれているのと、何か関数を実行するときにPlaceholderにするのではなく、自分で定義した変数をきちんと再利用してくれるので気持ちいい
Azure Automation Runbook
- Azure AutomationはいろいろとAzure環境の自動化ツールがまとまったサービス
- 中でも、RunbookはPowerShellのスクリプトやPythonのスクリプトを自動実行してくれる
- Azure Functionsのイメージにも近い
- 各種アラートから呼び出すことができるので、自動復旧とか通知の作りこみのシナリオで用いられたり、定期タスクの自動化などに利用される
Runbook 作成
- スクリプトの貼り付け
- 保存して公開
実行スケジュールの追加
- とりあえず日次で朝2時に割り当て済みAzure Firewallがあったら割り当て解除するイメージでスケジュールを作成
- Azure Firewallの再割り当てはオンデマンドにやるので、一旦リセットされればいい
Runbookと実行スケジュールの紐づけ
おわり
これで安心だ
GitHubで編集を提案
Discussion
助かりまっす