Runbook使ったAzure Database for MySQL Flexible Serverの開始と停止
AutomationアカウントのRunbookを利用した、Azure Database for MySQL フレキシブルサーバーの開始停止方法です。
開始停止はスケジュール設定の手順まで確認しています。
Azure Database for MySQL フレキシブルサーバーは停止している間は課金が発生しません。
利用していない時間帯は停止させておく事でコストを抑える事ができます。
Azure PowerShellやAzure CLIを使って停止や開始させる事ができます。
PowerShellをスケジュール実行させる環境の1つにAutomationアカウントのRunbookがあります。
今回はAzure Database for MySQL フレキシブルサーバーを開始停止するRunbookの作成から、スケジュール実行設定まで確認しています。
RunbookはPowerShellを利用しています。
※Azure Database for PostgreSQL フレキシブルサーバーでも同様の事が可能です。
事前準備
AutomationアカウントやAzure Database for MySQL フレキシブルサーバーは事前に作成しておいたリソースを利用しています。
それぞれのリソース作成手順についてはこちらの記事で紹介しています。
Automationアカウントのシステム割り当てマネージドID設定
AutomationアカウントでAzureのリソースを操作する場合は、リソース操作するためのロール付与が必要になります。
Azure Database for MySQL フレキシブルサーバーの起動停止に必要なロールを付与します。
Azure Database for MySQL フレキシブルサーバーで、Automationアカウントに共同作成者のロールを割り当てています。
※今回はシステム割り当てマネージドIDを利用しています。
Automationアカウントでロールの割り当てを行う場合の手順です。
Automationアカウントでロールの割り当てを行う場合 | |
左側のメニューでIDを選択します。 Azureロールの割り当てを選択します。 ロールの割り当てを追加します。 |
|
ロールの割り当てが出来てない場合はRunbook実行時にエラーになります
Azure Database for MySQL フレキシブルサーバーの操作権限が割り当てされていない場合は、Runbook実行時に"AuthorizationFailed"のエラーが表示されます。
Automationアカウントのロール割り当て状況を再度確認します。
[AuthorizationFailed] : The client 'オブジェクトID’ with object id 'オブジェクトID’ does not have authorization to perform action 'Microsoft.DBforMySQL/flexibleServers/start/action’ over scope '/subscriptions/サブスクリプションID/resourceGroups/リソースグループ名/providers/Microsoft.DBforMySQL/flexibleServers/リソース名’ or the scope is invalid. If access was recently granted, please refresh your credentials.
|
Runbookのリソースを作成
Runbookのリソースを作成します。
今回はRunbookの実行環境にはPowerShellを使っています。
-
- 設定内容
- 名前(開始用):mysql-start-02
- 名前(停止用):mysql-stop-02
- Runbookの種類:PowerShell
- ランタイム言語:PowerShell
- ランタイムバージョン:7.2
- 設定内容
Runbookのリソースを作成 | |
左側のメニューでRunbookを選択し作成します。 名前、Runbookの種類、ランタイム環境を選択します。 内容を確認し作成します。 |
|
—広告—
Azure Database for MySQL フレキシブルサーバーを開始停止するRunbook
Azure Database for MySQL フレキシブルサーバーを開始するRunbook
Azure Database for MySQL フレキシブルサーバーを開始する場合は、Start-AzMySqlFlexibleServerを使います。
操作対象となるAzure Database for MySQL フレキシブルサーバーのリソースグループ、リソース名はパラメーターとして指定するようにしています。
Runbookをテスト実行
作成したRunbookをテストします。
対象となるAzure Database for MySQL フレキシブルサーバーのリソースグループ、リソース名をパラメーターとして指定します。
テスト実行 | |
パラメーターを指定します。 開始します。 |
|
完了の表示を確認します。 またエラーメッセージが表示されていない事を確認します。 |
※テスト実行後、Azure Database for MySQL フレキシブルサーバーのステータスが実行中となっている事が確認できます。
Azure Database for MySQL フレキシブルサーバーを停止するRunbook
Azure Database for MySQL フレキシブルサーバーを停止する場合Stop-AzMySqlFlexibleServerを使います。
操作対象となるAzure Database for MySQL フレキシブルサーバーのリソースグループ、リソース名はパラメーターとして指定するようにしています。
|
Runbookを公開
利用開始時には、Runbookを公開する必要があります。
-
- 保存:テスト実行環境に編集内容が反映される
- 公開:実環境に編集内容が編集内容が反映される
※Runbookの編集内容を反映させる場合には、保存後に公開が必要になります。テスト実行時は保存されているRunbookの内容が実行
Runbookの公開 | |
Runbookの編集画面で公開を選択します。 |
—広告—
Azure Database for MySQL フレキシブルサーバーの開始、停止をスケジュール化
Runbookはスケジュール実行させる事ができます。
Runbookのスケジュール設定を使ってAzure Database for MySQL フレキシブルサーバーの開始、停止をスケジュール化します。
Runbookのスケジュール設定内容などについてはこちらで紹介しています。
平日のみ実行などの設定方法についてもこちらで紹介しています。
Runbookのスケジュールを作成
Automationアカウントで、スケジュールを作成し、Runbookと関連付けします。
関連付けすることでRunbookをスケジュール実行させる事ができます。
関連付け時には、パラメーターと実行設定も指定します。
操作したいAzure Database for MySQL フレキシブルサーバーのリソースグループ、リソース名をパラメーターとして指定します。
スケジュール設定 | |
Runbookにあるスケジュールのメニューを選択します。 |
【Runbook内のスケジュール設定メニュー】 |
【Automationアカウント内のスケジュール設定メニュー】 |
|
スケジュールを追加します。 | |
スケジュールの作成画面が表示されます。 |
|
パラメータと実行設定を選択します。 操作するAzure Database for MySQL フレキシブルサーバーのリソースグループ名とリソース名を指定します。 |
|
設定を保存します。 Runbookに関連付けされているスケジュールが確認できます。 |
|
※開始のRunbookとスケジュールを関連付けした場合の画面です。
Runbookのスケジュール実行状況を確認
Runbookのスケジュール実行状況を確認します。
Runbookの実行履歴はジョブのメニューで確認できます。
ジョブ確認 | |
スケジュール設定した時間にRunbookが実行され、完了している事が確認できます。 |
Azure Database for PostgreSQL フレキシブル サーバーでも同じ事ができます
Azure Database for PostgreSQL フレキシブル サーバーの場合でも同様の事が可能です。
コマンドレットを置き換えるだけで同じ事ができます。
Azure CLIやAzure PowerShellを利用したAzure Database for PostgreSQL フレキシブル サーバーの開始、停止方法についてはこちらで紹介しています。
最後に
今回はAutomationアカウントのRunbookを使ったAzure Database for MySQL フレキシブルサーバーの開始、停止を確認してみました。
スケジュール設定する事で、定時にシャットダウンと言った事も可能です。
データベースなので停止させる事も少ないかとは思いますが、検証環境では夜間、週末など使ってない時間帯があると思います。
週末夜間は停止させ、朝起動させるような事もできそうです。
引き続き色々試してみたいと思います。
Runbook内での実行時間制限方法についてはこちらで紹介しています。
意図しない時間帯にRunbookが実行される事を防ぐことが事ができます。
Logic AppsでもAzureのリソース操作が可能です。
仮想マシンを例に手順を紹介しています。