Azure Automation: Runbook のスケジュールが編集出来るようになりました

こんにちは、Azure サポートチームの山口です。 Azure Automation をお使いの皆様へ、アップデートのお知らせです。 更新内容 この度、Azure Automation において、Runbook のスケジュールが編集出来るようになりました。 以前までは、Runbook のスケジュールに対して行えるアクションは「停止」または「削除」だけでした。 そのため、スケジュールを再設定したい時は、既存のスケジュールを一旦削除してから同じ Runbook に対して新たなスケジュールを設定する必要がありましたが、今回のアップデートにより、このような手間を掛けることなくスケジュールだけを変更することが可能となりました。 参考: Azure Automation の Runbook をスケジュール設定する https://docs.microsoft.com/ja-jp/azure/automation/automation-schedules スケジュールの編集方法 Azure ポータルにログインして、[Automation アカウント] ブレードから対象の Automation アカウントを選択します。 ハブから [スケジュール] を選び、編集するスケジュールを選択します。 以下のような画面になるので、スケジュールの再設定を行った後、[保存] ボタンを押すと編集した内容が反映されます。


Azure Automation : Runbook Webhook を使って仮想マシンの自動垂直スケール(スケールアップ / ダウン)

こんにちは、Azure サポートチームの山口です。 今回は Azure 仮想マシンのインスタンス サイズを垂直スケール(スケールアップ / スケールダウン)するための Runbook をご紹介したいと思います。 はじめに 突然ですが、お使いの Azure 仮想マシンは、トラフィックが少なくなる夜間や休日などの間、無駄に強力なパワーで稼働していませんか? 同じインスタンス サイズで静的に固定された仮想マシンは、ワークロードが少ない時間帯が来るとコンピューティング リソースが余ってしまいます。それだけでなく、ワークロードが増加する時間帯にはリソースが枯渇し、サーバーダウンにつながる恐れもあります。 この手の問題に対処する一番シンプルな方法は、想定される最大の負荷に耐えられるインスタンス サイズにあらかじめ設定しておくことですが、これは費用の観点から見るとベストな方法といえないこともあります。なぜなら、耐えられる負荷の量が大きくなると、掛かるコストも高くなるからです。 「負荷がかかる時間になれば自動的にスケールアップし、負荷が少ない時にはスケールダウンする」といったインスタンス サイズの動的スケーリングは、コスト最適化を実現する上では必ず考慮すべき対策のひとつです。 与えられたワークロードに必要な分のコンピューティング リソースだけを割り当て続けることが出来れば、必要最低限の出費だけで済みますよね。:) この記事では、そんな動的スケーリングを実現するための Runbook を紹介したいと思います! スケールアップ / ダウン後のインスタンス サイズの取得 まずは、インスタンス サイズを与えると、スケールアップ(スケールダウン)した後のインスタンス サイズを返す PowerShell の関数から紹介します。 後のセクションでこの関数を使った Runbook を説明しますので、「とにかく速く動的な垂直スケールを実現したい!」という方はこのセクションを飛ばして頂いても構いません。 関数中のデフォルトのスケール セット $Default_VerticalScaleTable は、本記事執筆時における東日本 / 西日本リージョンで利用可能なすべてのインスタンス サイズに対応しています。しかしながら、インスタンス サイズ名や利用可能なインスタンス サイズは、今後変更される可能性もございますのでご注意ください。 PowerShell スクリプト Function Get-UpOrDownScaledVmSize { Param ( [Parameter(Mandatory…


Azure Automation : try / catch を利用した Runbook のリトライ処理

こんにちは、Azure サポートチームの山口です。 本記事では、Azure Automation の PowerShell Runbook に、try / catch 構文を利用したリトライ処理を実装する方法を紹介したいと思います。 はじめに 『複数の仮想マシンを一斉起動する Runbook をスケジュールしていて、時間になって確認してみると一台の仮想マシンだけ起動に失敗していた、、、』といったお問い合わせを最近多く頂きます。Azure にアクセスするタイミングによっては、コマンドレットやパラメータの指定は正しいのに、Azure 内部が起因となるエラーが偶に生じてしまいます。このような不運なエラーが起きる原因は、排他制御など様々な要因がありますが、Azure Automation の観点から可用性を高めるためには、Runbook 内でのリトライ処理が非常に有効となります。本記事で紹介するリトライ処理を実装すると、成功するまで Runbook を繰り返し実行するので、上記のようなエラーを回避することが出来ます。 リトライ処理の実装には、PowerShell v2.0 からサポートされている try / catch 構文を使用します。try / catch (/ finally) に関する詳細は、MS 公式ブログ An Introduction to Error Handling in PowerShell (英語) などのサイトを参考にしていただけたらと思います。 リトライ処理のテンプレート 早速、リトライ処理を実現する PowerShell スクリプトのテンプレートを紹介したいと思います。 このスクリプトは、Azure Automation での PowerShell Runbook 環境だけでなく、通常の PowerShell…


Azure Automation: PowerShell Runbook で Azure VM の起動 / 停止(割り当て解除)

こんにちは、Azure サポートチームの山口です。 今回は Azure Automation を使用して、Azure 仮想マシンを起動 / 停止(割り当て解除)する PowerShell Runbook を紹介したいと思います。 本記事は、主にスクリプトコードの紹介となります。ポータル上での Runbook の作成方法やスケジュール設定については、以下の記事を参考にしてください。 Azure Automation で VM を自動停止する https://blogs.technet.microsoft.com/jpaztech/2017/09/01/azure-automation-%E3%81%A7-vm-%E3%82%92%E8%87%AA%E5%8B%95%E5%81%9C%E6%AD%A2%E3%81%99%E3%82%8B/ Runbook 以下は、Azure 仮想マシンを起動 / 停止(割り当て解除)する PowerShell Runbook のスクリプトコードです。 PowerShell Runbook Param ( [Parameter(Mandatory=$false)] [String] $SubscriptionNameOrId, [Parameter(Mandatory=$false)] [String] $ResourceGroupName, [Parameter(Mandatory=$false)] [String] $VMName, [Parameter(Mandatory=$false)] [Bool] $StartVM = $true ) Function Get-AzureRmVMPowerState { Param ( [Parameter(Mandatory=$true)] [Object]…


Azure Automation で VM を自動停止する

こんにちは、Azure サポートチームの山口です。 今日は、Azure Automation を使用して、サブスクリプション内の Azure VM を自動停止する Runbook の実装方法をご紹介させていただきます。   はじめに この記事は、4つのセクションで構成されています。 Automation アカウントの作成 Azure Automation 機能を使用するのに必須である Automation アカウントを作成する手順を紹介します。 Azure モジュールの更新 Runbook を実行する環境を構築します。 Azure モジュールを最新版に更新していないと、PowerShell 上では正常に動作するスクリプトコードが、Runbook として実行した場合にエラーを返す可能性があります。 もしそのような状況に陥っているのであれば、このセクションを見直してみてください。 Runbook の作成 / テスト Azure VM を自動停止する PowerShell スクリプトの Runbook を作成して、それが正しく動くかテストします。 今回は、動作する PowerShell スクリプトを用意していますので、Azure Automation が簡単に実装できることをぜひ体感してみてください。 スケジュールの設定 作成した Runbook を定期的に実行するためのスケジュール設定を行います。 このスケジュール機能によって、例えば、毎日退社の時間になれば全 VM を自動停止させるような構成が作成できます。   §1: Automation…