PowerShellとAzure Automationの導入と活用方法:インフラ運用の効率化を目指して

Azure Automationは、MicrosoftのクラウドサービスであるAzure上で、自動化プロセスを作成し、管理するためのツールです。

IT業務の効率化やリソースの最適化を目指し、PowerShellやPythonのスクリプトを使って、リソースのデプロイやメンテナンス、インフラ管理のタスクを自動化できます。

Azure Automationでは以下の機能が提供されています:

  • Runbook: Azure上でPowerShellやPythonスクリプトを実行するための環境
  • Update Management: 仮想マシンのパッチ適用を管理
  • Configuration Management: 仮想マシンの状態を管理し、一貫性を保つ
  • Change Tracking: 仮想マシンの設定変更をトラッキング

これにより、管理者は日々の繰り返し作業を自動化し、エラー削減や運用コストの削減を図れます。


Azure Automationのメリット

  1. コスト削減: 手動で行っていた作業が自動化されることで、人件費や作業時間の削減が期待できます。
  2. エラー削減: スクリプトを使用することで、手動操作によるヒューマンエラーを軽減できます。
  3. スケーラビリティ: 自動化プロセスはAzureのリソースを活用してスケールするため、業務規模の増大にも対応可能です。
  4. セキュリティ向上: 定期的なパッチ適用や設定管理によって、セキュリティリスクを低減できます。

Azure Automationの導入手順

1. Azureアカウントの作成

Azure Automationを利用するには、まずAzureアカウントが必要です。

無料アカウントを利用して、30日間の無料試用を始めることができます。

2. Azure Automationアカウントの作成

Azure Portalにサインイン後、Azure Automationアカウントを作成します。

  1. Azure Portalで「Automationアカウント」を検索し、「作成」をクリックします。
  2. サブスクリプション、リソースグループ、アカウント名、リージョンを選択します。
  3. 必要に応じて、Run Asアカウントの設定を行います。

3. Runbookの作成

Azure Automationの基本的な自動化処理はRunbookと呼ばれるスクリプトで行います。

PowerShellやPythonのコードをRunbookとして記述し、自動化の流れを設計できます。

  1. Azure PortalのAutomationアカウントに移動します。
  2. 左側のメニューから「Runbook」を選択し、「作成」をクリックします。
  3. Runbookの種類(PowerShell、Python)を選択し、名前を付けます。
  4. エディタでスクリプトを入力し、保存して公開します。

4. Runbookの実行とスケジュール設定

Runbookを作成したら、スケジュールを設定して定期的に実行させることが可能です。

  1. Runbookの「スケジュール」セクションに移動し、「新しいスケジュールをリンク」をクリックします。
  2. スケジュールの作成画面で実行時間や頻度を設定します。
  3. スケジュールを保存し、設定完了です。

PowerShellとAzure Automationの活用例

例1:仮想マシンの自動停止

夜間の業務外時間に仮想マシンを自動的に停止するRunbookを作成することで、コスト削減が期待できます。

# Azureのモジュールインポート
Import-Module Az.Compute

# 認証情報設定
$connection = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -TenantId $connection.TenantId `
    -ApplicationId $connection.ApplicationId -CertificateThumbprint $connection.CertificateThumbprint

# 仮想マシンの停止処理
$resourceGroupName = "YourResourceGroupName"
$vmName = "YourVMName"
Stop-AzVM -ResourceGroupName $resourceGroupName -Name $vmName -Force

例2:Azure SQLデータベースのバックアップ

PowerShellを使用して、定期的にAzure SQLデータベースのバックアップを取得することも可能です。

# Azureのモジュールインポート
Import-Module Az.Sql

# 認証情報設定
$connection = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -TenantId $connection.TenantId `
    -ApplicationId $connection.ApplicationId -CertificateThumbprint $connection.CertificateThumbprint

# データベースバックアップの取得
$resourceGroupName = "YourResourceGroupName"
$serverName = "YourSqlServerName"
$databaseName = "YourDatabaseName"
Start-AzSqlDatabaseExport -ResourceGroupName $resourceGroupName -ServerName $serverName -DatabaseName $databaseName `
    -StorageKeyType "StorageAccessKey" -StorageKey "<YourStorageKey>" -StorageUri "<YourStorageUri>"

演習問題

演習1:仮想マシンの自動起動Runbook作成

  1. Azure Automationで新しいRunbookを作成し、仮想マシンを毎朝7時に自動的に起動するように設定してください。
  2. 仮想マシンのリソースグループ名と名前は「TestResourceGroup」「TestVM」とします。

解答例

# Azureのモジュールインポート
Import-Module Az.Compute

# 認証情報設定
$connection = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -TenantId $connection.TenantId `
    -ApplicationId $connection.ApplicationId -CertificateThumbprint $connection.CertificateThumbprint

# 仮想マシンの起動処理
$resourceGroupName = "TestResourceGroup"
$vmName = "TestVM"
Start-AzVM -ResourceGroupName $resourceGroupName -Name $vmName

演習2:ストレージアカウントのログクリアRunbook作成

  1. ストレージアカウントのログを定期的にクリアするRunbookを作成してください。
  2. ストレージアカウントの名前は「TestStorageAccount」、リソースグループ名は「TestResourceGroup」とします。

解答例

# Azureのモジュールインポート
Import-Module Az.Storage

# 認証情報設定
$connection = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -TenantId $connection.TenantId `
    -ApplicationId $connection.ApplicationId -CertificateThumbprint $connection.CertificateThumbprint

# ストレージアカウントのログクリア処理
$resourceGroupName = "TestResourceGroup"
$storageAccountName = "TestStorageAccount"
$context = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName).Context
Get-AzStorageContainer -Context $context | ForEach-Object { $_.Delete() }

まとめ

Azure Automationは、PowerShellと組み合わせることで、ITインフラの自動化や効率化を実現できる強力なツールです。

企業や個人事業主が時間を要する運用作業を簡略化し、スケーラブルかつ信頼性の高いインフラ運用を実現するのに非常に有用です。