Azure Automation State Configuration とは
- 10 分
Azure Automation State Configuration を使用すると、同じソフトウェアがインストールされ、同じ構成で、クラスター領域内の仮想マシン (VM) が一貫した状態であることを確認できます。
このユニットでは、Azure Automation の機能について学習し、PowerShell Desired State Configuration (DSC) の宣言型モデルを確認し、その利点を確認します。
Azure Automation State Configuration は、PowerShell 上に構築された Azure サービスです。 これにより、すべてのリソースの目的の状態を一貫してデプロイし、確実に監視し、自動的に更新することができます。 Azure Automation には、構成を定義し、実際の仮想マシンに適用するためのツールが用意されています。
Azure Automation State Configuration を使用する理由
サービスを実行するサーバーの正しい一貫性のある構成を手動で維持することは困難でエラーが発生しやすい場合があります。 Azure Automation State Configuration では、PowerShell DSC を使用してこれらの課題に対処します。 DSC アーティファクトと DSC プロセスを一元的に管理します。
Azure Automation State Configuration には、プル サーバーが組み込まれています。 ノードをターゲットにして、このプル サーバーから構成を自動的に受信し、目的の状態に準拠し、そのコンプライアンスを報告することができます。 クラウドまたはオンプレミスの仮想マシンまたは物理 Windows マシンまたは Linux マシンをターゲットにすることができます。
このデータを送信するように Azure Automation State Configuration を構成することで、Azure Monitor ログを使用してノードのコンプライアンスを確認できます。
PowerShell DSC とは
PowerShell DSC は、Azure Automation State Configuration がシステムの構成、デプロイ、制御に使用する宣言型管理プラットフォームです。 宣言型プログラミング言語は、意図 (実行する内容) と実行 (実行する方法) を分離します。 目的の状態を指定し、DSC に処理を実行させます。 DSC リソースが使用可能な場合に機能を実装またはデプロイする方法を知る必要はありません。 代わりに、デプロイ構造に集中できます。
PowerShell を既に使用している場合は、DSC が必要な理由を疑問に思うかもしれません。 下記の例を検討してください。
Windows サーバーで共有を作成する場合は、次の PowerShell コマンドを使用できます。
# Create a file share
New-SmbShare -Name MyFileShare -Path C:\Shared -FullAccess User1 -ReadAccess User2
このスクリプトは簡単でわかりやすいものです。 ただし、運用環境でこのスクリプトを使用すると、いくつかの問題が発生します。 スクリプトが複数回実行される場合や、読み取り専用アクセスではなく、 User2
が既にフル アクセスを持っている場合に何が起こるかを検討してください。
この方法は冪等性を持ちません。 べき等は、1 回実行しても 10,001 回実行しても同じ効果を持つ操作を表します。 PowerShellでべき等性を達成するには、論理とエラー処理を追加する必要があります。 ファイル共有が存在しない場合は、作成します。 共有が存在する場合は、作成する必要はありません。 User2
が存在するが、読み取りアクセス権がない場合は、読み取りアクセス権を追加します。
PowerShell スクリプトは次のようになります。
$shareExists = $false
$smbShare = Get-SmbShare -Name $Name -ErrorAction SilentlyContinue
if($smbShare -ne $null)
{
Write-Verbose -Message "Share with name $Name exists"
$shareExists = $true
}
if ($shareExists -eq $false)
{
Write-Verbose "Creating share $Name to ensure it is Present"
New-SmbShare @psboundparameters
}
else
{
# Need to call either Set-SmbShare or *ShareAccess cmdlets
if ($psboundparameters.ContainsKey("ChangeAccess"))
{
#...etc., etc., etc
}
}
あなたが考慮していない他の特別なケースは、問題が発生したときにのみ明るみになるかもしれません。 DSC は予期しないケースを自動的に処理します。 DSC では、結果を達成するためのプロセスではなく、結果を記述します。
次の DSC コード スニペットは、例を示しています。
Configuration Create_Share
{
Import-DscResource -Module xSmbShare
# A node describes the VM to be configured
Node $NodeName
{
# A node definition contains one or more resource blocks
# A resource block describes the resource to be configured on the node
xSmbShare MySMBShare
{
Ensure = "Present"
Name = "MyFileShare"
Path = "C:\Shared"
ReadAccess = "User1"
FullAccess = "User2"
Description = "This is an updated description for this share"
}
}
}
前の例では、ファイル共有の状態を確認する方法を DSC に指示する xSmbShare
モジュールを使用しています。 DSC リソース キットには、IIS サイトをインストールするためのリソース モジュールを含め、100 を超えるリソース モジュールがあります。 このモジュールの最後にある「まとめ」ユニットに、DSC リソース キットへのリンクがあります。
PowerShell DSC コード構造の詳細については、次のユニットで学習します。
LCM とは
ローカル構成マネージャー (LCM) は、Windows オペレーティング システム上の Windows Management Framework (WMF) のコンポーネントです。 LCM は、目的の状態に一致するように、VM などのノードの状態を更新する役割を担います。 LCM では、実行するたびに次の手順が行われます。
- Get: ノードの現在の状態を取得します。
- テスト: コンパイル済みの DSC スクリプト (.mof ファイル) を使用して、ノードの現在の状態を目的の状態と比較します。
- 設定: .mof ファイルで説明されている目的の状態に一致するようにノードを更新します。
AZURE Automation に VM を登録するときに、LCM を構成します。
DSC でのプッシュおよびプル アーキテクチャ
各ノードの LCM は、2 つのモードで動作できます。
プッシュ モード: 管理者は、構成を 1 つ以上のノードに手動で送信または プッシュします。 LCM は、各ノードの状態が構成で指定されているものと一致することを確認します。
プル モード: プル サーバー は構成情報を保持します。 各ノードの LCM は、プル サーバーを一定の間隔 (既定では 15 分ごと) でポーリングして、最新の構成の詳細を取得します。 これらの要求は、次の図の手順 1 として示されています。 手順 2 では、プル サーバーは構成の変更に関する詳細を各ノードに送り返します。
プル モードでは、各ノードをプル サービスに登録する必要があります。
どちらのモードにも利点があります。
- プッシュモードは簡単に設定できます。 専用のインフラストラクチャは必要ありません。ノート PC で実行できます。 プッシュ モードは、DSC の機能をテストするのに役立ちます。 また、プッシュ モードを使用して、新しくイメージ化されたマシンをベースラインの目的の状態にすることもできます。
- プル モードは、多数のマシンにまたがるエンタープライズ展開で役立ちます。 LCM は定期的にプル サーバーをポーリングし、ノードが目的の状態であることを確認します。 外部ツールまたはチームが修正プログラムを適用すると、個々のコンピューターで構成のずれが発生します。これらのマシンは、設定した構成に沿ってすぐに戻されます。 このプロセスは、セキュリティと規制の義務に対する継続的なコンプライアンスの状態を達成するのに役立ちます。
サポートされているプラットフォームとオペレーティング システム
Azure Automation DSC は、Azure Cloud Services およびその他のクラウド プロバイダー、オンプレミス インフラストラクチャ、またはこれらのすべての環境のハイブリッドによってサポートされています。
Azure Automation DSC では、次のオペレーティング システムがサポートされています。
- ウィンドウズ
- Server 2022
- Server 2019
- Server 2016
- Server 2012 R2
- Server 2012
- Server 2008 R2 SP1
- 11
- 10
- 8.1
- 7
- Linux
- DSC Linux 拡張機能は、 PowerShell DSC ドキュメントに記載されているすべての Linux ディストリビューションをサポートします。
PowerShell DSC は、Azure Automation DSC がサポートするすべての Linux マシンにインストールされます。
Windows の DSC 要件
Windows マシンの場合、Azure Desired State Configuration (DSC) VM 拡張機能では WMF を使用して、Windows PowerShell DSC や Windows リモート管理 (WinRM) などの Windows 機能バージョンを管理します。 Azure DSC では WMF 4.0 以降がサポートされているため、Windows マシンでは Windows Server 2008 R2 SP1、Windows 7 以降を実行する必要があります。
Azure DSC 拡張機能が初めて呼び出されると、Windows Server 2016 以降を除くすべての Windows バージョンに OS 互換バージョンの WMF がインストールされます。 Windows Server 2016 以降のバージョンでは、WMF の最新バージョンが既にインストールされています。 WMF をインストールした後、コンピューターを再起動する必要があります。
WinRM は、Windows Server 2012 以降と Windows 7 以降を実行するマシン ノードで有効になっています。
DSC エージェントのプロキシ サポートは、Windows ビルド 1809 以降で利用できます。 以前のバージョンの Windows では、DSC ではプロキシのサポートを利用できません。
その他の DSC 要件
ノードがプライベート ネットワークにある場合、DSC は Azure Automation と通信するために次のポートと URL を必要とします。
- ポート: 送信インターネット アクセスには TCP 443 のみが必要です
- グローバル URL: *.azure-automation.net
- US Gov バージニアのグローバル URL: *.azure-automation.us
- エージェント サービス: https://
<workspaceId>
.agentsvc.azure-automation.net