次の方法で共有


Desired State Configuration プル サービス

Von Bedeutung

プル サーバー (Windows 機能 DSC-Service) は Windows Server のサポートされているコンポーネントですが、新しい機能を提供する予定はありません。 新しいバージョンの DSC が一般提供され、 ゲスト構成という名前の Azure Policy の機能によって管理されることをお知らせします。 ゲスト構成サービスは、DSC 拡張機能、Azure Automation State Configuration、およびお客様からのフィードバックから最も要望の多かった機能を組み合わせたものです。 ゲスト構成には、 Arc 対応サーバーを介したハイブリッド マシンのサポートも含まれます。

ローカル構成マネージャー (LCM) は、プル サービス ソリューションによって一元的に管理できます。 このアプローチを使用する場合、管理されているノードはサービスに登録され、LCM 設定で構成が割り当てられます。 構成と、構成の依存関係として必要なすべての DSC リソースは、コンピューターにダウンロードされ、LCM が構成の管理に使用されます。 管理されているマシンの状態に関する情報は、レポートのためにサービスにアップロードされます。 この概念は「プルサービス」と呼ばれます。

プル サービスの現在のオプションには、次のものがあります。

  • Azure Automation Desired State Configuration サービス
  • Windows Server で実行されているプル サービス
  • コミュニティが管理するオープンソースソリューション
  • SMB 共有

各ソリューションの推奨スケールは次のとおりです。

解決策 クライアントノード
MDB/ESENT データベースを使用した Windows プル サーバー 最大 500 ノード
SQL データベースを使用した Windows プル サーバー 最大 3500 ノード
Azure Automation DSC 小規模環境と大規模環境の両方

推奨されるソリューションであり、最も多くの機能を使用できるオプションは、 Azure Automation DSC です。 Automation アカウントあたりのノード数の上限は特定されていません。

Azure サービスでは、オンプレミスのプライベート データセンター、または Azure や AWS などのパブリック クラウドでノードを管理できます。 サーバーがインターネットに直接接続できないプライベート環境の場合は、公開された Azure IP 範囲のみに送信トラフィックを制限することを検討してください ( 「Azure IP 範囲とサービス タグ」を参照)。

Windows Server のプル サービスで現在使用できないオンライン サービスの機能には、次のものがあります。

  • すべてのデータは転送中および保存時に暗号化されます
  • クライアント証明書は自動的に作成および管理されます
  • パスワード/資格情報、またはサーバー名や接続文字列などの変数を一元管理するためのシークレットストア
  • ノードLCM構成を一元管理
  • クライアントノードに構成を一元的に割り当てる
  • 本番環境に到達する前にテスト用の「カナリアグループ」に設定変更をリリース
  • グラフィカルなレポーティング
    • DSC リソース レベルの粒度での状態の詳細
    • トラブルシューティングのためのクライアントマシンからの詳細なエラーメッセージ
  • アラート、自動タスク、レポートとアラートのための Android/iOS アプリのための Azure Log Analytics との統合

Windows Server の DSC プル サービス

プル サービスを Windows Server で実行するように構成できます。 Windows Server に含まれるプル サービス ソリューションには、ダウンロード用の構成とモジュールを格納し、レポート データをデータベースにキャプチャする機能のみが含まれていることに注意してください。 Azure のサービスによって提供される機能の多くが含まれていないため、サービスの使用方法を評価するための優れたツールではありません。

Windows Server で提供されるプル サービスは、OData インターフェイスを使用して、ターゲット ノードが要求したときに DSC 構成ファイルをターゲット ノードで使用できるようにする IIS の Web サービスです。

プル サーバーを使用するための要件:

  • 次のサーバーが実行されている。
    • WMF/PowerShell 4.0 以降
    • IIS サーバーの役割
    • DSCサービス
  • 理想的には、証明書を生成する何らかの手段を使用して、ターゲット ノード上の Local Configuration Manager (LCM) に渡される資格情報をセキュリティで保護します

プル サービスをホストするように Windows Server を構成する最善の方法は、DSC 構成を使用することです。 スクリプトの例を以下に示します。

サポートされているデータベースシステム

Windows Server のリリース 17090 以降、WMF 5.1 には、プル サービス (Windows 機能 DSC-Service) の SQL Server オプションのサポートが含まれています。 これにより、 Azure Automation DSC に移行されていない大規模な DSC 環境をスケーリングするための新しいオプションが提供されます。

SQL Server を使用するようにプル サーバーを構成するには、 SqlProvider$true に設定し、 SqlConnectionString を有効な SQL Server 接続文字列に設定します。 詳細については、「 SqlClient 接続文字列」を参照してくださいxDscWebService を使用した SQL Server 構成の例については、まず「xDscWebService リソースの使用」を読んでから、GitHub で 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 を確認してください。

xDscWebService リソースの使用

Web プル サーバーを設定する最も簡単な方法は、xPSDesiredStateConfiguration モジュールに含まれる xDscWebService リソースを使用することです。 次の手順では、Web サービスを設定する Configuration でリソースを使用する方法について説明します。

  1. Install-Module コマンドレットを呼び出して、xPSDesiredStateConfiguration モジュールをインストールします。

  2. DSC プル サーバーの SSL 証明書は、組織内または公的機関の信頼できる認証局から取得します。 機関から受け取る証明書は、通常、PFX 形式です。

  3. DSC プル サーバーになるノードに証明書を既定の場所 ( CERT:\LocalMachine\My) にインストールします。 証明書の拇印をメモします。

  4. 登録キーとして使用する GUID を選択します。 PowerShell を使用して生成するには、PS プロンプトで [guid]::newGuid() または New-Guid キーを押してください。 このキーは、登録時に認証するための共有キーとしてクライアント ノードによって使用されます。 詳細については、以下の「登録キー」セクションを参照してください。

  5. PowerShell ISE で、次の構成スクリプトを起動 (F5) します ( xPSDesiredStateConfiguration モジュールのフォルダーに " Sample_xDscWebServiceRegistration.ps1.

    このスクリプトは、プル サーバーを設定します。

    configuration Sample_xDscWebServiceRegistration
    {
        param
        (
            [string[]]$NodeName = 'localhost',
    
            [ValidateNotNullOrEmpty()]
            [string] $certificateThumbPrint,
    
            [Parameter(HelpMessage='This should be a string with enough entropy (randomness)' +
                ' to protect the registration of clients to the pull server.  We will use new' +
                ' GUID by default.'
            )]
            [ValidateNotNullOrEmpty()]
            [string] $RegistrationKey   # A guid that clients use to initiate conversation with pull server
        )
    
        Import-DSCResource -ModuleName PSDesiredStateConfiguration
        Import-DSCResource -ModuleName xPSDesiredStateConfiguration
    
        Node $NodeName
        {
            WindowsFeature DSCServiceFeature
            {
                Ensure = "Present"
                Name   = "DSC-Service"
            }
    
            xDscWebService PSDSCPullServer
            {
                Ensure                  = "Present"
                EndpointName            = "PSDSCPullServer"
                Port                    = 8080
                PhysicalPath            = "$env:SystemDrive\inetpub\PSDSCPullServer"
                CertificateThumbPrint   = $certificateThumbPrint
                ModulePath              = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules"
                ConfigurationPath       = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration"
                State                   = "Started"
                DependsOn               = "[WindowsFeature]DSCServiceFeature"
                RegistrationKeyPath     = "$env:PROGRAMFILES\WindowsPowerShell\DscService"
                AcceptSelfSignedCertificates = $true
                UseSecurityBestPractices     = $true
                Enable32BitAppOnWin64   = $false
            }
    
            File RegistrationKeyFile
            {
                Ensure          = 'Present'
                Type            = 'File'
                DestinationPath = "$env:ProgramFiles\WindowsPowerShell\DscService\RegistrationKeys.txt"
                Contents        = $RegistrationKey
            }
        }
    }
    
  6. SSL 証明書の拇印を certificateThumbPrint パラメーターとして渡し、GUID 登録キーを RegistrationKey パラメーターとして渡して、構成を実行します。

    # To find the Thumbprint for an installed SSL certificate for use with the pull server list all
    # certificates in your local store and then copy the thumbprint for the appropriate certificate
    # by     reviewing the certificate subjects
    
    dir Cert:\LocalMachine\my
    
    # Then include this thumbprint when running the configuration
    $sample_xDscWebServiceRegistrationSplat = @{
        certificateThumbprint = 'A7000024B753FA6FFF88E966FD6E19301FAE9CCC'
        RegistrationKey = '140a952b-b9d6-406b-b416-e0f759c9c0e4'
        OutputPath = 'C:\Configs\PullServer'
    }
    Sample_xDscWebServiceRegistration @sample_xDscWebServiceRegistrationSplat
    
    # Run the compiled configuration to make the target node a DSC Pull Server
    Start-DscConfiguration -Path c:\Configs\PullServer -Wait -Verbose
    

登録キー

クライアント ノードがサーバーに登録して、構成 ID の代わりに構成名を使用できるようにするために、上記の構成によって作成された登録キーは、C:\Program Files\WindowsPowerShell\DscServiceRegistrationKeys.txt という名前のファイルに保存されます。 登録キーは、クライアントがプル サーバーへの初期登録中に使用される共有シークレットとして機能します。 クライアントは、登録が正常に完了すると、プル サーバーに対して一意に認証するために使用される自己署名証明書を生成します。 この証明書の拇印はローカルに保存され、プル サーバーの URL に関連付けられます。

登録キーは PowerShell 4.0 ではサポートされていません。

プル サーバーで認証するようにノードを構成するには、このプル サーバーに登録するターゲット ノードのメタ構成に登録キーが含まれている必要があります。 次のメタ構成の RegistrationKey は、ターゲット マシンが正常に登録された後に削除され、値はプル サーバー上の RegistrationKeys.txt ファイルに格納されている値 (この例では '140a952b-b9d6-406b-b416-e0f759c9c0e4') と一致する必要があることに注意してください。 登録キーの値は、それを知っていると任意のターゲット マシンをプル サーバーに登録できるため、常に安全に扱います。

[DSCLocalConfigurationManager()]
configuration Sample_MetaConfigurationToRegisterWithLessSecurePullServer
{
    param
    (
        [ValidateNotNullOrEmpty()]
        [string] $NodeName = 'localhost',

        # the key used to set up pull server in previous configuration
        [ValidateNotNullOrEmpty()]
        [string] $RegistrationKey,

        # The name of the pull server, same as $NodeName used in previous configuration
        [ValidateNotNullOrEmpty()]
        [string] $ServerName = 'localhost'
    )

    Node $NodeName
    {
        Settings
        {
            RefreshMode        = 'Pull'
        }

        ConfigurationRepositoryWeb CONTOSO-PullSrv
        {
            ServerURL          = "https://$ServerName`:8080/PSDSCPullServer.svc"
            RegistrationKey    = $RegistrationKey
            ConfigurationNames = @('ClientConfig')
        }

        ReportServerWeb CONTOSO-PullSrv
        {
            ServerURL       = "https://$ServerName`:8080/PSDSCPullServer.svc"
            RegistrationKey = $RegistrationKey
        }
    }
}

$MetaConfigurationSplat = @{
    RegistrationKey = $RegistrationKey
    OutputPath = 'c:\Configs\TargetNodes'
}

Sample_MetaConfigurationToRegisterWithLessSecurePullServer @MetaConfigurationSplat

ReportServerWeb セクションでは、レポート データをプル サーバーに送信できます。

メタ構成ファイルに ConfigurationID プロパティがないということは、プル サーバーがプル サーバー プロトコルの V2 バージョンをサポートしていることを暗黙的に意味するため、初期登録が必要です。 逆に、 ConfigurationID が存在するということは、プル サーバー プロトコルの V1 バージョンが使用され、登録処理が行われないことを意味します。

PUSH シナリオでは、現在のリリースにバグが存在するため、プル サーバーに登録されたことのないノードのメタ構成ファイルで ConfigurationID プロパティを定義する必要があります。 これにより、V1 プル サーバー プロトコルが強制され、登録エラー メッセージを回避できます。

構成とリソースの配置

プル サーバーのセットアップが完了すると、プル サーバー構成の ConfigurationPath プロパティと ModulePath プロパティで定義されたフォルダーに、ターゲット ノードがプルできるモジュールと構成が配置されます。 これらのファイルは、プル サーバーで正しく処理するために、特定の形式である必要があります。

DSC リソース モジュール パッケージ形式

各リソース モジュールは、次のパターン <Module Name>_<Module Version>.zipに従って圧縮し、名前を付ける必要があります。

たとえば、 xWebAdminstration という名前のモジュールで、モジュール バージョンが 3.1.2.0 の場合、 xWebAdministration_3.1.2.0.zip という名前が付けられます。 モジュールの各バージョンは、1 つの zip ファイルに含まれている必要があります。 各 zip ファイルには 1 つのバージョンのリソースしかないため、WMF 5.0 で追加されたモジュール形式 (1 つのディレクトリで複数のモジュール バージョンをサポートする形式) はサポートされていません。 つまり、プル サーバーで使用するために DSC リソース モジュールをパッケージ化する前に、ディレクトリ構造に小さな変更を加える必要があります。 WMF 5.0 の DSC リソースを含むモジュールのデフォルトの形式は <Module Folder>\<Module Version>\DscResources\<DSC Resource Folder>\ です。 プル サーバー用にパッケージ化する前に、 <Module version> フォルダーを削除してパスが <Module Folder>\DscResources\<DSC Resource Folder>\になるようにします。 この変更により、上記のようにフォルダーを圧縮し、これらの zip ファイルを ModulePath フォルダーに配置します。

New-DscChecksum <module zip file> を使用して、新しく追加されたモジュールのチェックサム ファイルを作成します。

構成 MOF 形式

構成 MOF ファイルは、ターゲット ノード上の LCM が構成を検証できるように、チェックサム ファイルとペアにする必要があります。 チェックサムを作成するには、 New-DscChecksum コマンドレットを呼び出します。 このコマンドレットは、構成 MOF が配置されているフォルダーを指定する Path パラメーターを受け取ります。 このコマンドレットは、 ConfigurationMOFName.mof.checksum という名前のチェックサム ファイルを作成します ( ConfigurationMOFName は構成 mof ファイルの名前です)。 指定したフォルダに複数の構成 MOF ファイルがある場合は、フォルダ内の構成ごとにチェックサムが作成されます。 MOF ファイルとそれに関連するチェックサム ファイルを ConfigurationPath フォルダーに配置します。

構成 MOF ファイルを何らかの方法で変更した場合は、チェックサム ファイルも再作成する必要があります。

ツール

プル サーバーを設定、検証、管理するには、最新バージョンの xPSDesiredStateConfiguration モジュールに例として含まれている次のツールを使用します。

  1. プル サーバーで使用するための DSC リソース モジュールと構成ファイルのパッケージ化に役立つモジュール。 PublishModulesAndMofsToPullServer.psm1 です。 以下に例を示します。

    # Example 1 - Package all versions of given modules installed locally and
    # MOF files are in c:\LocalDepot
    $moduleList = @('xWebAdministration', 'xPhp')
    Publish-DSCModuleAndMof -Source C:\LocalDepot -ModuleNameList $moduleList
    
    # Example 2 - Package modules and mof documents from c:\LocalDepot
    Publish-DSCModuleAndMof -Source C:\LocalDepot -Force
    
  2. プル サーバーを検証するスクリプトが正しく構成されている。 PullServerSetupTests.ps1

プルサービスのためのコミュニティソリューション

DSC コミュニティでは、プル サービス プロトコルを実装するための複数のソリューションが作成されています。 オンプレミス環境の場合、これらはプル サービス機能と、段階的な機能強化でコミュニティに貢献する機会を提供します。

プル クライアントの構成

次のトピックでは、プル クライアントの設定について詳しく説明します。

こちらも参照ください