変化の激しい時代において、ビジネスにはスピードとクオリティの両面が求められます。特にクラウドで展開するサービスは、頻繁に繰り返されるタスクや時間のかかる処理を自動化し、間違いを即座に修正することが競合企業に対する優位性を維持します。運用コスト削減も重要です。
厳しいビジネスの要求に対して、Azure上でオンプレミスとクラウド、複数のクラウドのような、ハイブリッドな環境全体を自動化する仕組みが「Azure Automation」です。
ここでは、Azure Automation自体と自動化を作成するツールであるRunbookの概要について解説します。
Azure Automationによる自動化と管理の概要
Azure Automationは、プロセスの自動化、構成の管理、更新の管理をサポートします。それぞれの概要を取り上げます。
プロセスの自動化で、 ビジネス価値を高めて運用コストを削減する
クラウド管理の負荷軽減と運用コスト削減を目的として、Azure Automationはハイブリッドクラウドの環境、WindowsとLinuxのプラットフォームで動作するように設計されています。一貫性のある自動化で、最大のパフォーマンスを発揮させるためのサービスです。
タスク自動化のために、Azure AutomationではグラフィカルなRunbook をサポートしています。他のクラウドやオンプレミスには、Hybrid Runbook Workerを使うことによって一元管理ができます。PowerShellやPythonで自動化することも可能です。
Webhookを使用すると、単独のHTTPによる要求でAzure Automationの特定のRunbookを実行できます。したがって、ITSM(IT Service Management:ITサービス管理)、DevOps、監視システムでWebhookをトリガーとして自動化することによって、継続的デリバリー(CD)を実現します。
DSCをクラウド上で実行して、構成を統合管理する
Azure Automationでは、Azure Automation State ConfigurationによってPowerShellのDesired State Configuration (DSC)をクラウド上で実行可能です。Azure AutomationでDSCのリソースを管理し、Azureクラウド内にあるDSCプルサーバーによる構成を仮想マシンとオンプレミスに適用します。割り当てたノードがエラーを起こした場合には、レポートで通知されます。
また、ゲストリソースの構成要素に関するインベントリを取得して、インストール済みのアプリケーションや構成アイテムを可視化します。さまざまなレポートや検索機能で詳細な情報を取得し、システム構成を把握できます。変更を追跡して問題を引き起こしている原因をすばやく識別するとともに、診断機能によって不要な変更が発生した場合はアラートで知らせることも可能です。
更新の管理を自動化する
Azure Automation State Configurationは、ハイブリッド環境で、クラウドや物理的サーバーまたはオンプレミスのWindowsとLinuxの仮想マシンの構成を監視し、自動的に更新することにも役立ちます。
Azure、オンプレミス、他のクラウドで更新プログラムに準拠しているかどうかを可視化し、 展開スケジュールを作成して、メンテナンス期間中に更新プログラムがインストールされるように調整可能です。必要のない更新プログラムは除外できます。
Azure Automationの共有リソースと統合
大規模の環境における自動化構成の実現のために、Azure Automationには共有リソースがあります。以下が共有リソースです。
スケジュール - |
事前に設定した時刻にオートメーションを開始します。1回実行するだけではなく、時間、日、週、曜日、月や特定の日を単位として設定可能です。 |
モジュール |
モジュールの種類にはMicrosoftやサードパーティによるモジュール、多様なコミュニティのモジュール、カスタム定義のコマンドレットなどがあります。DSCリソース用のAutomationアカウントにインポートします。 |
モジュールギャラリー |
既に作成されたモジュールを利用して、新規にモジュールを作成する時間を節約します。PowerShell RunbookとそのモジュールはPowerShellギャラリーから、Python Runbookはスクリプトセンターギャラリーから取得します。利用するだけではなく、独自に開発したシナリオをコミュニティで共有することもできます。 |
Python 2パッケージ |
AzureとLinux Hybrid Runbook Workerでは、Python 2 Runbookの実行が可能で、簡略化を目的としてPython パッケージによる必要なモジュールのインポートが可能です。 |
資格情報 |
機密性の高い情報はユーザー名とパスワードなどセキュリティの資格情報を含むオブジェクトを保持して格納します。このことにより安全性を保ちます。 |
接続 |
接続リソース内のシステムに、一般的な情報を含む情報の名前と値のペアを格納します。接続資産には、RunbookやDSCの構成から、外部サービスやアプリケーション接続に必要な情報が含まれます。 URLやポートなどの接続情報に加え、ユーザー名とパスワードなど認証に必要な情報を含む場合もあります。 |
証明書 |
証明書を格納して、実行時に認証と展開されるリソースのセキュリティを保護します。新しい証明書の作成は、cerまたは pfxファイルをAzure Automation にアップロードします |
変数 |
変数を作成すると、暗号化による保存を指定できます。 暗号化した変数は、Azure Automation に安全に保存されます。変数の作成によって、Runbook と参照する構成を変更しなくても、値を変更できるようになります。 |
Azure Automationではソースの管理が統合され、GitHubもしくはAzure Reposのソース管理リポジトリ内のスクリプトで、AutomationアカウントのRunbookを最新の状態に維持できます。したがって、チームとの共同作業、変更の追跡、以前のバージョンにRunbookを簡単にロールバック可能です。Runbookや構成をソース管理システムにチェックインするときに、構成をコードに昇格させるソースコントロールとの統合機能があります。
またチームにおける共同作業を想定して、Automationアカウントとリソースへのアクセスを制御するロールベースのアクセス制御がサポートされています。
Azure AutomationにおけるRunbook
一般的に「Runbook」とは、システム管理者や運用者が作業の手順や操作をまとめたものです。その言葉からIT運用管理の自動化技術をRunbookと呼びます。AzureのRunbookには、以下のようなものがあります。
グラフィカルRunbook
Azureポータルのグラフィカルエディターで作成と編集するRunbookで、管理プロセスを視覚的に表現してモジュールによるプログラミングを支援します。他のRunbook を入れ子状態にすることにより、高度なワークフローを作成できます。ただし、Azure ポータル以外のツールではRunbookを編集できません。PowerShell のコードを生成しますが、コードを直接表示したり変更したりできない制限があります。グラフィカルRunbook からテキスト形式への変換、テキスト形式のRunbook をグラフィカルRunbookに変換することもできません。
PowerShell Runbook
Windows PowerShellに基づいたRunbookです。Azureポータルのテキストエディターによるコードの編集、任意のオフラインのテキストエディターからAzure Automationへのインポートが可能です。作成する場合は、PowerShellスクリプトに熟知している必要があります。また、複数のアクションを並列に実行する並行処理が利用できません。エラーの場合は、チェックポイントによってRunbook を再開できない制限があります。他にも現状では変数資産を利用できないことや、大量のデータをストリームに書き込む場合に失敗する可能性が問題とされています。
PowerShellワークフローRunbook
Windows PowerShellワークフローに基づくテキストによるRunbookです。複雑なロジックを実装可能で、エラーの場合はチェックポイントを使って再開できること、並列処理を使用できること、高度なワークフロー作成のためにグラフィカルRunbookやPowerShellワークフローRunbookを組み込めるメリットがあります。しかし、PowerShell Runbookと同様、PowerShellスクリプトに熟知し、逆シリアル化されたオブジェクトなどの複雑さに対応する必要があります。また、実行前にコンパイルするため、開始時はPowerShell Runbookより時間がかかります。
Python Runbook
堅牢な Pythonライブラリを利用し、Python 2 でコンパイルします。Azureポータルのテキストエディターによるコードの編集、任意のオフラインのテキストエディターからAzure Automationへのインポートが可能です。現時点ではPython 2 だけがサポートされ、Python 3の特定の機能を利用する場合にはエラーが生じます。
Azure AutomationのHybrid Runbook Worker
Azure AutomationのRunbookは、Azureのクラウドプラットフォームで実行されるため、他のクラウドやオンプレミスのリソースにアクセスできない場合があります。しかし、Hybrid Runbook Workerを使えば、管理できるリソースを拡張可能です。Hybrid Runbook Workerはエージェントのインストール時に指定するグループのメンバーとして動作し、高可用性グループには複数のエージェントをインストール可能です。
ただし、Linux Hybrid Runbook Workerでは、グラフィックRunbookとPowerShellワークフローRunbookは実行できません・
まとめ
今回は、Azure Automation自体と自動化を作成するツールであるRunbookの概要についてご紹介しました。自動化の処理をプログラムする際には、技術的な理解はもちろん、実際のワークフローを構造的に理解していることが重要です。また、グラフィカルなRunbookとテキスト中心のRunbookでは互換性がない場合もあるので、開発や運用チームで自動化を促進する際には、どのツールを使うかを明確に決めておく必要があります。