クラウドオートメーションサービス 「Azure Automation」入門

クラウドオートメーションサービス 「Azure Automation」入門

(2020年10月12日掲載)

こんにちは。ソフトバンクの木村です。
MSPサービスの運用に関する開発業務を行っており、CI/CDのパイプラインの整備やAzureの各種機能を用いた運用業務の効率化などを担当しています。

クラウド上で発生する定型的な業務を自動化する方法として、Azureではクラウドオートメーションサービスの「Azure Automation」を提供しています。本記事では、「Azure Automation」の基本的な利用方法と注意点について解説します。

目次

1.Azure Automationとは

「Azure Automation」とは、クラウド上で発生する運用タスクを自動化するクラウドオートメーションサービスです。

1.1.Azure Automationのサービス概要

「Azure Automation」を利用することで、VMなどのリソースを展開することなく、運用タスクを行うPowerShellスクリプトを動作させることができます。また、認証情報やモジュールの管理機能もあわせて備えています。
また、VMに対する構成管理や更新プログラムの適用、VMの自動開始・停止など、基本的な運用タスクについては、ポータル上からの操作のみで自動化を行うことも可能です。

1.2.Azure Automationを利用するメリット・デメリット

「Azure Automation」を利用するメリットとしては以下が挙げられます。

  • 実行時間分だけ課金されるため、多くの場合、VMなどと比較してランニングコストが削減できます。
  • 実行環境の運用に手間をかける必要がないため、運用コストが削減できます。
  • 汎用的な運用タスクについては、簡単な手順を踏むだけで自動化を行うことが可能で、設計・開発コストが削減できます。

一方でデメリットとしては以下が挙げられます。

  • 常時実行するようなタスクの場合、VMなどと比較してランニングコストが高くなる可能性があります。
  • 実行環境の細かいカスタマイズが不可能です(例えば、特定のPowerShellのバージョンを使いたい、といった対応はできない)。
  • 後述する注意点などサービスの癖を把握しておく必要があります。

デメリットはいくつかありますが、実行環境を一から構築して管理するのは面倒だが、常時実行ではない単発のタスクを自動化したい、といった方にお勧めのサービスです。

以下の章から、「Azure Automation」の基本的な利用方法と注意点について解説していきます。

2.Azure Automationの利用方法

それでは、実際のポータル画面を見ながら「Azure Automation」の利用方法を解説していきます。

2.1.オートメーションアカウントの作成

まず、「Azure Automation」の各種リソースを管理するオートメーションアカウントを作成します。オートメーションアカウントは以下の手順で作成します。

①Azure Portalにサインインし「リソースの作成」に移動、「管理ツール」の「オートメーション」を選択します。

②次に、オートメーションアカウントに関する情報を入力し、「作成」をクリックします。

「Azure Automation」では、Azureに対する操作を行うために、実行アカウントというAzure操作用のサービスプリンシパルを利用します。オートメーションアカウントと実行アカウントを同時に作成するために、実行アカウントの作成は「はい」を選択します。

③オートメーションアカウントの作成が完了したら、Azure Portalの検索バーに作成したオートメーションアカウントの名前を入力し、オートメーションアカウントのページに移動します。

2.2.モジュールの管理

「Azure Automation」では、PowerShellのモジュールをオートメーションアカウントごとに管理します。作成したオートメーションアカウントでは、あらかじめ標準的なPowerShellのモジュールがすでに導入された状態になっています。必要に応じて、モジュールの追加を行います。

導入されているモジュールの管理は「モジュール」にて実施できます。また、ギャラリーで公開されているモジュールについては、「モジュールギャラリー」にて、ポータルから直接導入することも可能です。

""

""

2.3.ランブックの作成

次に、実際に処理を行うPowerShellスクリプトである、ランブックの作成を行います。

① 「Runbook」メニューを選択し、「Runbookの作成」をクリックします。

""

② ランブックの名前を入力し、「Runbookの種類」はPowerShellを選択し、「作成」をクリックします。

③運用タスクを実際に行う、PowerShellのスクリプトを作成します。作成が完了したら、「保存」をクリックし、スクリプトの内容を保存します。

""

ここで作成するスクリプトから、Azureリソースに対するアクセスを行うことも可能です。Azureリソースにアクセスする際には、2.1で作成した実行アカウントを利用します。
以下のコードを利用することで、実行アカウントのサービスプリンシパルの情報を取得し、Azureに対して認証を行うことができます。

""

④次に作成したスクリプトのテストを行います。「テスト ウィンドウ」をクリックすることで、試験を実施します。

""

パラメータなどを設定し、「開始」をクリックすることでスクリプトが起動し、テストが実行されます。

⑤テストが完了したら、テストのブレードを閉じます。最後に、ランブックの編集ページにて、「公開」をクリックすることで、スクリプトを公式バージョンとして登録します。

""

2.4.スケジュールの作成

次に作成したランブックを実行するための、スケジュールの作成を行います。

① 「スケジュールへのリンク」をクリックし、次に「スケジュール」をクリックします。

""

""

②「新しいスケジュールを作成します」を選択し、スケジュールの名前や実行時間などを設定し、「作成」をクリックします。

② 「パラメータと実行設定」を選択し、ランブックに渡す可変値を入力し、「OK」をクリックします。

④設定が完了したら「OK」を選択し、スケジュールを有効化します。

以上で、「Azure Automation」を利用して、運用タスクを実施するスクリプトの作成から自動化までを実施することができました。今回はポータル画面上から設定を行いましたが、その他のAzureリソースと同様に、「Azure PowerShell」や「ARMテンプレート」を用いて、構築の自動化を行うことも可能です。

3.Azure Automationを利用する上での注意点

この章では、「Azure Automation」を利用する上で注意するべき点について説明していきます。

3.1.実行アカウントの管理に関する注意点

第2章で解説した通り、「Azure Automation」では、実行アカウントというアカウントを発行してAzureリソースに対する認証を行います。この実行アカウントについて、以下の2点に注意する必要があります。

  • オートメーションアカウントを作成する際に自動で作成される実行アカウントには、共同作成者という権限が付与されます。この共同作成者という権限は、サブスクリプション内のあらゆるAzureリソースを作成削除可能な、非常に強い権限になります。そのため、必要に応じて権限を修正し、操作可能な権限を絞るようにしてください。

権限の設定については、該当のサブスクリプションの「アクセス制御 (IAM)」のページから、ロールの割り当てと削除ができます。

""

  • 自動的に作成される実行アカウントでは、自己署名証明書も作成されAzureに対する認証に利用します。この証明書には有効期限が設定されているため、有効期限が過ぎてしまうとAzureに対するコマンド実行が不可になってしまうため、忘れずに更新を実施するようにしてください。

証明書の更新は、該当のオートメーションアカウントの「実行アカウント」のメニューから実施できます。

""

3.2.Azure PowerShellモジュールの管理に関する注意点

「Azure Automation」では、オートメーションアカウントを作成した段階で、Azureリソースを操作するためのモジュール「Azure PowerShell」が標準で導入されています。
しかし、導入されている「Azure PowerShell」のモジュールは、従来まで利用されていたAzureRMモジュールで、最新機能が導入されているAzモジュールではありません。必要に応じて「モジュールギャラリー」からAzモジュールの追加を行ってください。

3.3.ARMテンプレートを利用する際の注意点

「Azure Automation」はその他のAzureリソースと同様に「ARMテンプレート」という機能を利用して、構築するリソースの情報をjson形式で管理し、Infrastructure as Codeを実現できます。

ただし、「Azure Automation」については、以下の2点について「ARMテンプレート」での構築ができません。

  • 実行アカウント
    • 実行アカウントの作成自体がサポートされていません。
  • スケジュール
    • スケジュールの作成自体は可能だが、繰り返し「ARMテンプレート」を実行することができないため、PowerShellやポータルなど別手段でスケジュールを削除しておく必要があります。

これらのリソースについては、「Azure PowerShell」やポータル上での操作などを組み合わせて、構築を実施していく必要があります。

4.まとめ

今回、クラウドオートメーション機能「Azure Automation」の利用方法について解説しました。ソフトバンクでは、仮想マシンの自動起動・停止や、月次でのキャパシティレポートの生成などに「Azure Automation」を活用しています。

「Azure Automation」には今回解説したPowerShellスクリプトを動作させる機能のほかにも、運用タスクの自動化に関する機能もありますので、定型的な運用タスクの自動化に「Azure Automation」を利用してみてはいかがでしょうか。

以上、最後までお読みいただきありがとうございました。

関連サービス

Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。→詳細はこちら