マシン構成パッケージの成果物をテストする方法

PowerShell モジュール GuestConfiguration には、Azure 外部での構成パッケージのテストを自動化するツールが含まれています。 これらのツールは、Azure または Arc に接続された環境でのテストに進む前に、すばやく問題を見つけて反復作業するために使用します。

テストを開始する前に、作成環境を設定し、カスタム コンピューター構成パッケージ成果物を作成する必要があります。

重要

環境の状態を監査するカスタム パッケージと、構成を適用するパッケージは一般公開 (GA) のサポート状態にあります。 ただし、次の制限事項が適用されます。

マシン構成パッケージを使って構成を行うには、Azure VM ゲスト構成拡張のバージョン 1.26.24 以降、または Arc エージェントのバージョン 1.10.0 以降が必要です。

GuestConfiguration モジュールは Ubuntu 18 以降でのみ使用できます。 ただし、モジュールによって生成されるパッケージとポリシーは、Azure または Arc でサポートされるすべての Linux ディストリビューションまたはバージョンで使用できます。

macOS でのテスト パッケージは使用できません。

ワークステーションまたは継続的インテグレーションおよび継続的デプロイ (CI/CD) 環境からパッケージをテストできます。 GuestConfiguration モジュールには、Azure や Arc 対応マシン内で使用されているものと同じ開発環境用エージェントが含まれています。 エージェントには、Windows 用の PowerShell 7.1.3 と Linux 用の 7.2.0-preview.7 のスタンドアロン インスタンスが含まれています。 スタンドアロン インスタンスによって、パッケージのテストが行われるスクリプト環境は、マシン構成を使用して管理しているマシンと一貫性があるものとなります。

Azure および Arc 対応マシンのエージェント サービスは、Windows では LocalSystem アカウントとして、Linux ではルートとして実行されています。 この記事のコマンドは、最適な結果を得るため、特権付きセキュリティ コンテキストで実行してください。

Windows で PowerShell を LocalSystem として実行するには、SysInternals ツールの PSExec を使用します。

Linux で PowerShell をルートとして実行するには、sudo コマンドを使用します。

構成パッケージが要件を満たしていることを検証する

最初に、Get-GuestConfigurationPackageComplianceStatus を使用して、構成パッケージが基本要件を満たしていることをテストします。 コマンドにより、以下のパッケージ要件が検証されます。

  • MOF は存在していて有効であり、正しい場所にある
  • 必須のモジュールや依存関係は正しいバージョンのものが存在していて、重複はない
  • パッケージが署名されていることを検証する (省略可能)
  • TestGet で、コンプライアンスの状態に関する情報が返されることをテストする

Get-GuestConfigurationPackageComplianceStatus コマンドレットのパラメーター:

  • Path: マシン構成パッケージのファイル パスまたは URI。
  • Parameter: ハッシュ テーブルとして提供されるポリシー パラメーター。

このコマンドを初めて実行すると、テスト マシンにマシン構成エージェントがインストールされます。場所は、Windows ではパス C:\ProgramData\GuestConfig\bin、Linux ではパス /var/lib/GuestConfig/bin です。 ユーザー アカウントからはこのパスにアクセスできないため、コマンドの特権の昇格が必要です。

次のコマンドを実行してパッケージをテストします。

Windows では、管理者特権の PowerShell 7 セッションからです。

# Get the current compliance results for the local machine
Get-GuestConfigurationPackageComplianceStatus -Path ./MyConfig.zip

Linux では、sudo を使用して PowerShell を実行します。

# Get the current compliance results for the local machine
sudo pwsh -command 'Get-GuestConfigurationPackageComplianceStatus -Path ./MyConfig.zip'

コマンドからは、リソースごとのコンプライアンスの状態と詳細情報を格納しているオブジェクトが出力されます。

  complianceStatus  resources
  ----------------  ---------
  True              @{BuiltInAccount=localSystem; ConfigurationName=MyConfig; …

構成パッケージによって構成を適用できることをテストする

最後に、構成パッケージのモードが AuditandSet である場合は、Start-GuestConfigurationPackageRemediation コマンドを使用して、Set メソッドによってローカル マシンに設定を適用可能なことをテストできます。

重要

このコマンドでは、それが実行されているローカル環境内で変更が試みられます。

Start-GuestConfigurationPackageRemediation コマンドレットのパラメーター:

  • パス: マシン構成パッケージの完全なパス。

Windows では、管理者特権の PowerShell 7 セッションからです。

# Test applying the configuration to local machine
Start-GuestConfigurationPackageRemediation -Path ./MyConfig.zip

Linux では、sudo を使用して PowerShell を実行します。

# Test applying the configuration to local machine
sudo pwsh -command 'Start-GuestConfigurationPackageRemediation -Path ./MyConfig.zip'

コマンドは、エラーが発生した場合にのみ出力を返します。 Set の間に発生したイベントの詳細をトラブルシューティングするには、-verbose パラメーターを使用します。

Start-GuestConfigurationPackageRemediation コマンドの実行後に再度 Get-GuestConfigurationComplianceStatus コマンドを実行すると、マシンがその時点で正常な状態になっていることを確認できます。

次のステップ