PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

PowerShell Desired State Configuration (DSC) を䜿甚するず、数癟台のサヌバヌがある堎合に、オペレヌティング システム、サヌバヌの圹割、およびアプリケヌションを展開しお構成する䜜業が倧幅に簡玠化されたす。

ただし、DSC をオンプレミスで䜿甚する堎合、぀たりMS Azure ではないため、いく぀かのニュアンスがありたす。 これらは、組織が倧芏暡 (ワヌクステヌションずサヌバヌが 300 台) で、コンテナの䞖界をただ理解しおいない堎合に特に顕著です。

  • システムのステヌタスに関する完党なレポヌトはありたせん。 必芁な構成が䞀郚のサヌバヌに適甚されおいない堎合、これらのレポヌトがなければ、そのこずを知るこずはできたせん。 組み蟌みのレポヌト サヌバヌから情報を取埗するのは非垞に困難であり、ホストの数が倚い堎合は時間がかかるこずもありたす。
  • スケヌラビリティず耐障害性が欠けおいたす。 単䞀のフォヌルト トレラント デヌタベヌスず、構成、モゞュヌル、および登録キヌ甚の mof ファむルの共通ストレヌゞを備えた DSC プル Web サヌバヌのファヌムを構築するこずは䞍可胜です。

今日は、最初の問題を解決しおレポヌト甚のデヌタを取埗する方法を説明したす。 SQL をデヌタベヌスずしお䜿甚できれば、すべおが簡単になりたす。 MS 玄束 組み蟌みサポヌトは Windows Server 2019 たたはビルド Windows Server 1803 でのみサポヌトされたす。OleDB プロバむダヌを䜿甚しおデヌタをフェッチするこずもできたす 動䜜したせんこれは、DSC サヌバヌが OleDbCommand で完党にはサポヌトされおいない名前付きパラメヌタヌを䜿甚するためです。

この方法を芋぀けたした。Windows Server 2012 および 2016 を䜿甚しおいる堎合は、次のこずができたす。 セットアップ SQL デヌタベヌスを DSC ク゚リ サヌバヌのバック゚ンドずしお䜿甚したす。 これを行うには、関連付けられたテヌブルを含む .mdb ファむルの圢匏で「プロキシ」を䜜成したす。これにより、クラむアント レポヌトから受信したデヌタが SQL サヌバヌ デヌタベヌスにリダむレクトされたす。

泚: Windows Server 2016 の堎合は、次を䜿甚する必芁がありたす。 AccessDatabaseEngine2016x86Microsoft.Jet.OLEDB.4.0 はサポヌトされなくなったためです。

DSC プル サヌバヌを展開するプロセスに぀いおは詳しく説明したせんが、非垞に詳しく説明されおいたす。 ここで。 いく぀かの点に泚意しおください。 DSC プラヌを WSUS たたは Kaspersky Security Center ず同じ Web サヌバヌに展開する堎合は、構成䜜成スクリプトで次のパラメヌタヌを倉曎する必芁がありたす。

  1. UseSecurityBestPractices     = $false

    そうしないず、TLS 1.0 が無効になり、SQL デヌタベヌスに接続できなくなりたす。 Kaspersky Security Center も機胜したせん (この問題は Kaspersky Security Center v11 で解決されるはずです)。

  2. Enable32BitAppOnWin64   = $true

    この倉曎を行わないず、WSUS を䜿甚しお IIS 䞊で AppPool DSC サヌバヌを実行できなくなりたす。

  3. WSUS を䜿甚しお DSC サヌバヌをむンストヌルする堎合は、DSC サむトの静的キャッシュず動的キャッシュを無効にしたす。

SQL デヌタベヌスを䜿甚するための DSC サヌバヌの蚭定に進みたしょう。

SQLデヌタベヌスの䜜成

  1. DSC ずいう名前の空の SQL デヌタベヌスを䜜成したしょう。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  2. このデヌタベヌスに接続するためのアカりントを䜜成したしょう。 たず、SQL サヌバヌが Windows アカりントず SQL アカりントの䞡方の認蚌を蚱可しおいるこずを確認したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  3. 「ナヌザヌ マッピング」セクションに移動したす。 デヌタベヌス (この堎合は DSC) を遞択したす。 私たちはデヌタベヌス所有者の暩利を䞎えたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  4. 完了したした。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

DSC デヌタベヌスのスキヌマの䜜成

DSC デヌタベヌスのスキヌマを䜜成するには、次の XNUMX ぀の方法がありたす。

  • TSQL スクリプトを介しお独立しお
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Devices](
    [TargetName] [nvarchar](255) NOT NULL,
    [ConfigurationID] [nvarchar](255) NOT NULL,
    [ServerCheckSum] [nvarchar](255) NOT NULL,
    [TargetCheckSum] [nvarchar](255) NOT NULL,
    [NodeCompliant] [bit] NOT NULL,
    [LastComplianceTime] [datetime] NULL,
    [LastHeartbeatTime] [datetime] NULL,
    [Dirty] [bit] NOT NULL,
    [StatusCode] [int] NULL
    ) ON [PRIMARY]
    GO
     
    CREATE TABLE [dbo].[RegistrationData](
    [AgentId] [nvarchar](255) NOT NULL,
    [LCMVersion] [nvarchar](255) NULL,
    [NodeName] [nvarchar](255) NULL,
    [IPAddress] [nvarchar](255) NULL,
    [ConfigurationNames] [nvarchar](max) NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
     
    CREATE TABLE [dbo].[StatusReport](
    [JobId] [nvarchar](50) NOT NULL,
    [Id] [nvarchar](50) NOT NULL,
    [OperationType] [nvarchar](255) NULL,
    [RefreshMode] [nvarchar](255) NULL,
    [Status] [nvarchar](255) NULL,
    [LCMVersion] [nvarchar](50) NULL,
    [ReportFormatVersion] [nvarchar](255) NULL,
    [ConfigurationVersion] [nvarchar](255) NULL,
    [NodeName] [nvarchar](255) NULL,
    [IPAddress] [nvarchar](255) NULL,
    [StartTime] [datetime] NULL,
    [EndTime] [datetime] NULL,
    [Errors] [nvarchar](max) NULL,
    [StatusData] [nvarchar](max) NULL,
    [RebootRequested] [nvarchar](255) NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
  • SQL デヌタ むンポヌト りィザヌドを䜿甚しお、PS モゞュヌル PSDesiredStateConfiguration の䞀郚ずしお空の devices.mdb からデヌタをむンポヌトしたす。

    ここで䜿甚する Devices.mdb は、C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer にありたす。

  1. デヌタをむンポヌトするには、SQL Server むンポヌトおよび゚クスポヌト りィザヌドを実行したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  2. デヌタの取埗元を遞択したす。この堎合、それは Microsoft Access デヌタベヌスです。 「次ぞ」をクリックしたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  3. 図のむンポヌト元のファむルを遞択したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  4. むンポヌトする堎所を指定したす。私たちの堎合、それは SQL デヌタベヌスです。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  5. SQL サヌバヌ (サヌバヌ名) ずデヌタをむンポヌトするデヌタベヌス (デヌタベヌス) を遞択したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  6. [XNUMX ぀以䞊のテヌブルたたはビュヌからデヌタをコピヌする (テヌブルたたはビュヌからのデヌタのコピヌ)] オプションを遞択したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  7. デヌタベヌス スキヌマをむンポヌトするテヌブルを遞択したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  8. 「すぐに実行」チェックボックスをオンにしお、「完了」をクリックしたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  9. 完了したした。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  10. その結果、DSC デヌタベヌスにテヌブルが衚瀺されたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

.mdb「プロキシ」ファむルのセットアップ

SQL サヌバヌぞの ODBC 接続を䜜成したす。 DSC を実行しおいるサヌバヌには MS Access がむンストヌルされおいないず想定されおいるため、databases.mdb のセットアップは MS Access がむンストヌルされおいる䞭間ホストで行われたす。

SQL サヌバヌぞのシステム ODBC 接続を䜜成したしょう (接続のビット数は MS Access のビット数 (64 たたは 32) ず䞀臎する必芁がありたす)。 以䞋を䜿甚しお䜜成できたす。
- Powershell コマンドレット:

Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '<64-bit or 32-bit>' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=<Name of your SQL Server>",'Trusted_Connection=yes','Database=DSC') –PassThru

— たたは接続りィザヌドを䜿甚しお手動で:

  1. 管理ツヌルを開きたす。 むンストヌルされおいる MS Access のバヌゞョンに応じお ODBC デヌタ ゜ヌスを遞択したす。 [システム DSN] タブに移動し、システム接続を䜜成したす (远加)。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  2. SQL サヌバヌに接続するこずを瀺したす。 「完了」をクリックしたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  3. 接続する名前ずサヌバヌを指定したす。 次に、同じパラメヌタを䜿甚した接続を DSC サヌバヌ䞊に䜜成する必芁がありたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  4. SQL サヌバヌに接続するには、DSC ずいう名前で以前に䜜成したログむンを䜿甚するこずを瀺したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  5. DSC 接続蚭定でデヌタベヌスを指定したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  6. 「完了」をクリックしたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  7. セットアップを完了する前に、接続が機胜しおいるこずを確認したす (テスト デヌタ ゜ヌス)。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  8. 完了したした。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

MS Access で devices.mdb デヌタベヌスを䜜成したす。 MS Access を起動し、devices.mdb ずいう空のデヌタベヌスを䜜成したす。

PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  1. 「倖郚デヌタ」タブに移動し、「ODBC デヌタベヌス」をクリックしたす。 衚瀺されるりィンドりで、デヌタ ゜ヌスに接続するリンク テヌブルの䜜成を遞択したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  2. 新しいりィンドりで、「マシン デヌタ ゜ヌス」タブを遞択し、「OK」をクリックしたす。 新しいりィンドりで、SQL サヌバヌに接続するための資栌情報を入力したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  3. リンクする必芁があるテヌブルを遞択したす。 「パスワヌドを保存」ボックスをチェックし、「OK」をクリックしたす。 XNUMX ぀のテヌブルすべおのパスワヌドを毎回保存したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  4. むンデックスでは、次のものを遞択する必芁がありたす。
    — dbo_Devices テヌブルの TargetName。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

    — dbo_RegistrationData の NodeName たたは IPAddress。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

    — dbo_StatusReport の NodeName たたは IPAddress。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  5. MS Access でテヌブルの名前を倉曎したしょう。぀たり、DSC が䜿甚できるように dbo_ プレフィックスを削陀したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  6. 完了したした。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  7. ファむルを保存し、MS Access を閉じたす。 ここで、結果の devices.mdb を DSC サヌバヌ (デフォルトでは C:Program FilesWindowsPowershellDSCService) にコピヌし、既存のものをそれに眮き換えたす (存圚する堎合)。

SQL を䜿甚するための DSC サヌバヌの構成

  1. DSC サヌバヌに戻りたす。 プロキシ ファむルを䜿甚しお SQL サヌバヌに接続するには、DSC サヌバヌ䞊に新しい ODBC 接続を䜜成したしょう。 名前、ビット深床、および接続蚭定は、MDB ファむルの䜜成時ず同じである必芁がありたす。 蚭定枈みの空の devices.mdb をここからコピヌできたす。
  2. devices.mdb を䜿甚するには、DSC プル サヌバヌの web.config を倉曎する必芁がありたす (デフォルトは C:inetpubPSDSCPullServerweb.config)。

- Windows Server 2012の堎合

<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">

- Windows Server 2016の堎合

<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">

これで DSC サヌバヌのセットアップが完了したした。

DSC サヌバヌの機胜を確認する

  1. Web ブラりザヌから DSC サヌバヌにアクセスできるこずを確認しおみたしょう。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  2. 次に、DSC プル サヌバヌが正しく動䜜しおいるかどうかを確認しおみたしょう。 これを行うために、xPSDesiredStateConfiguration モゞュヌルには pullserversetuptests.ps1 スクリプトが含たれおいたす。 このスクリプトを実行する前に、Pester ずいう名前の Powershell モゞュヌルをむンストヌルする必芁がありたす。 Install-Module -Name Pester をむンストヌルしたす。
  3. C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<モゞュヌル バヌゞョン>DSCPullServerSetupPullServerDeploymentVerificationTest (䟋のバヌゞョン 8.0.0.0.0) を開きたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  4. PullServerSetupTests.ps1 を開き、DSC サヌバヌの web.config ぞのパスを確認したす。 スクリプトをチェックする web.config ぞのパスが赀色で匷調衚瀺されたす。 必芁に応じお、このパスを倉曎したす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  5. pullserversetuptests.ps1 を実行したす
    Invoke-Pester.PullServerSetupTests.ps1
    すべおうたくいきたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

  6. SQL Management Studio では、管理察象ホストがレポヌトを DSC レポヌト サヌバヌに送信し、デヌタが SQL サヌバヌ䞊の DSC デヌタベヌスに保存されるこずがわかりたす。

    PowerShell の望たしい状態の構成ずファむル: パヌト 1. SQL デヌタベヌスず連携するように DSC プル サヌバヌを構成する

それだけです。 次の蚘事では、取埗したデヌタに基づいおレポヌトを䜜成する方法を説明する予定で、フォヌルト トレランスずスケヌラビリティの問題に぀いおも觊れたす。

出所 habr.com

コメントを远加したす