Azure Cloud Shell で情報取得する
はじめに
AzureCloudShellを使って、サーバレス&お手軽にAzureの設定情報を取得してみます。
今回記事内の出力形式は、AzurePowershellはcsv形式、AzureCLIはjson形式で出力します。
環境
- Azure Cloud Shell
手順
手順 bash(AzureCLI)編
AzureCloudShell をbashで起動して下記コマンドを実行します。
cd clouddrive
git clone https://github.com/roota5666/AzureCloudShell-GetInfo.git
cd AzureCloudShell-GetInfo
./script/GetAzureInfo.sh
出力されたファイルを確認します。
ls -l export/*
出力例
r_ota [ ~/clouddrive/AzureCloudShell-GetInfo ]$ ls -l export/*
total 2435
-rwxrwxrwx 1 r_ota r_ota 203019 Aug 29 13:03 az_disk_list.json
-rwxrwxrwx 1 r_ota r_ota 59361 Aug 29 13:03 az_group_list.json
-rwxrwxrwx 1 r_ota r_ota 11230 Aug 29 13:03 az_monitor_action-group_list.json
-rwxrwxrwx 1 r_ota r_ota 3760 Aug 29 13:03 az_network_dns_zone_list.json
-rwxrwxrwx 1 r_ota r_ota 85354 Aug 29 13:03 az_network_lb_list.json
-rwxrwxrwx 1 r_ota r_ota 396515 Aug 29 13:03 az_network_nic_list.json
-rwxrwxrwx 1 r_ota r_ota 1095741 Aug 29 13:04 az_network_nsg_list.json
-rwxrwxrwx 1 r_ota r_ota 140109 Aug 29 13:04 az_network_public-ip_list.json
-rwxrwxrwx 1 r_ota r_ota 279668 Aug 29 13:04 az_network_vnet_list.json
-rwxrwxrwx 1 r_ota r_ota 215690 Aug 29 13:04 az_vm_list.json
r_ota [ ~/clouddrive/AzureCloudShell-GetInfo ]$
注 ファイル作成日時は、UTC。出力時のディレクトリ名(%Y%m%d-%H%M)はシェル内でJSTへ変換(UTC-9)しています
json形式のファイルが出力されているかと思います。
手順 powershell(AzurePowershell)編
AzureCLoudShellをbashからpowershellに変更します。
シェル切り替えの補足
下記URLへアクセスすると、直接bash/powershellのAzureCLoudShellを開くことができます。
また、bashのプロンプトで、pwsh
を実行することでシェルをbashに変更もできます。
実行例
Requesting a Cloud Shell.Succeeded.
Connecting terminal...
r_ota [ ~ ]$ pwsh
PowerShell 7.2.5
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
MOTD: To Connect and Manage Exchange Online: Connect-EXOPSSession
VERBOSE: Authenticating to Azure ...
VERBOSE: Building your Azure drive ...
Loading personal and system profiles took 4635ms.
PS /home/r_ota>
cd clouddrive/AzureCloudShell-GetInfo
./script/GetAzureInfo.ps1
出力されたファイルを確認します。
Get-ChildItem -Recurse ./export/*_ps1
出力例
PS /home/r_ota/clouddrive/AzureCloudShell-GetInfo> Get-ChildItem -Recurse ./export/*_ps1
Directory: /home/r_ota/clouddrive/AzureCloudShell-GetInfo/export/20220829-2229_AzureInfo_ps1
UnixMode User Group LastWriteTime Size Name
-------- ---- ----- ------------- ---- ----
-rwxrwxrwx r_ota r_ota 8/29/2022 13:29 5490 Get-AzNetworkSecurityGroup.csv
-rwxrwxrwx r_ota r_ota 8/29/2022 13:29 6375 Get-AzPublicIpAddress.csv
-rwxrwxrwx r_ota r_ota 8/29/2022 13:29 5027 Get-AzResourceGroup.csv
-rwxrwxrwx r_ota r_ota 8/29/2022 13:29 3254 Get-AzVirtualNetwork.csv
-rwxrwxrwx r_ota r_ota 8/29/2022 13:29 2126 Get-AzVM.csv
PS /home/r_ota/clouddrive/AzureCloudShell-GetInfo>
注 ファイル作成日時は、UTC。出力時のディレクトリ名(yyyyMMdd-HHmm)はシェル内でJSTへ変換(addHours(9))しています
csv形式のファイルが出力されているかと思います。
今後の発展・活用について
ファイルは出力できましたか?
クラウドに限らず、サーバーやネットワーク機器を構築/設定すると逃げられないのが、設計書やパラメータシートなどのドキュメントです。もちろん、Azureポータルの見やすい画面を見ながらコピペして書いてもできますが、大規模でサーバーやIPが100以上もあったら、資料作りも大変です・・
一応、AzureポータルからJSONビューが表示できたり、CSVにエクスポート機能もありますが、各メニューを巡ってダウンロード/コピペすると時間もかかりますし、ミスもおきるでしょう。
- 変更作業前後で設定情報を一括エクスポート、作業前後結果でdiffって差分を確認する。
- 定期的に取得して変更管理する ※AzureCloudShellで定期実行(cron)はできないっぽいので、違う手法が必要
など活用できそうです。
まとめ
- AzureCloudShellならサーバーレスで実行できる(できた)
- AzurePowershellとAzureCLIどちらでも、情報取得/出力可能 ※今回記載してませんが、もちろん設定変更も可能
- AzureCloudShellのコストは、ストレージアカウント(約5GB)コストだけ!
Discussion