Desired State Configuration lekéréses szolgáltatás

Fontos

A Lekéréses kiszolgáló (Windows feature DSC-Service) a Windows Server egyik támogatott összetevője, de nem tervez új funkciókat vagy képességeket kínálni. szeretnénk tudni, hogy a DSC egy újabb verziója már általánosan elérhető, amelyet Azure Policy nevű vendégkonfiguráció egyik funkciója felügyel. A vendégkonfigurációs szolgáltatás egyesíti a DSC-bővítmény funkcióit, a Azure Automation State Configuration és a leggyakrabban kért funkciókat az ügyfelek visszajelzései alapján. A vendégkonfiguráció a hibrid gépek Arc-kompatibilis kiszolgálókon keresztüli támogatását is magában foglalja.

A helyi Configuration Manager (LCM) központilag kezelhető egy lekéréses szolgáltatással. Ha ezt a módszert használja, a felügyelt csomópont regisztrálva lesz egy szolgáltatásban, és hozzárendel egy konfigurációt az LCM-beállításokban. A konfiguráció és a konfiguráció függőségeiként szükséges összes DSC-erőforrás le lesz töltve a gépre, és az LCM használja a konfiguráció kezeléséhez. A rendszer a felügyelt gép állapotával kapcsolatos információkat tölti fel a szolgáltatásba jelentéskészítés céljából. Ezt a fogalmat "lekéréses szolgáltatásnak" nevezzük.

A lekéréses szolgáltatás jelenlegi lehetőségei a következők:

  • Azure Automation Desired State Configuration szolgáltatás
  • Windows Serveren futó lekéréses szolgáltatás
  • A Közösség által fenntartott nyílt forráskódú megoldások
  • SMB-megosztás

Az egyes megoldásokhoz javasolt skálázás a következő:

Megoldás Ügyfélcsomópontok
Windows Lekéréses kiszolgáló MDB/ESENT-adatbázis használatával Legfeljebb 500 csomópont
Windows Lekéréses kiszolgáló SQL-adatbázis használatával Legfeljebb 3500 csomópont
Azure Automation DSC Kicsi és nagy környezetek egyaránt

Az ajánlott megoldás és a legtöbb elérhető funkcióval rendelkező lehetőség a DSC Azure Automation. Nem azonosították az Automation-fiókonkénti csomópontok számának felső korlátját.

Az Azure szolgáltatás képes a helyszíni csomópontok kezelésére privát adatközpontokban vagy nyilvános felhőkben, például az Azure-ban és az AWS-ben. Olyan privát környezetek esetében, ahol a kiszolgálók nem tudnak közvetlenül csatlakozni az internethez, érdemes lehet a kimenő forgalmat csak a közzétett Azure IP-tartományra korlátozni (lásd : Azure Datacenter IP-tartományok).

A Windows Server lekéréses szolgáltatásában jelenleg nem elérhető online szolgáltatás funkciói a következők:

  • Minden adat átvitel közben és inaktív állapotban van titkosítva
  • Az ügyféltanúsítványok létrehozása és kezelése automatikusan megtörténik
  • Titkos kódok tárolója a jelszavak/hitelesítő adatok központi kezeléséhez, vagy változókhoz , például kiszolgálónevekhez vagy kapcsolati sztringekhez
  • Csomópont LCM-konfigurációjának központi kezelése
  • Konfigurációk központi hozzárendelése ügyfélcsomópontokhoz
  • A "kanáricsoportok" konfigurációs módosításainak kiadása teszteléshez az éles környezet elérése előtt
  • Grafikus jelentéskészítés
    • Állapot részletei a DSC-erőforrás részletességi szintjén
    • Részletes hibaüzenetek az ügyfélszámítógépekről a hibaelhárításhoz
  • Integráció az Azure Log Analyticsszel riasztásokhoz, automatizált feladatokhoz, Android/iOS-alkalmazás jelentéskészítéshez és riasztáshoz

DSC lekérési szolgáltatás a Windows Serveren

A lekéréses szolgáltatás konfigurálható a Windows Serveren való futtatásra. Vegye figyelembe, hogy a Windows Server lekéréses szolgáltatásmegoldása csak a konfigurációk és modulok tárolására szolgáló képességeket tartalmazza a jelentésadatok adatbázisba való letöltéséhez és rögzítéséhez. Nem tartalmazza a szolgáltatás által az Azure-ban kínált számos képességet, így nem jó eszköz a szolgáltatás használatának értékelésére.

A Windows Serveren elérhető lekéréses szolgáltatás egy IIS-webszolgáltatás, amely OData-felülettel teszi elérhetővé a DSC-konfigurációs fájlokat a célcsomópontok számára, amikor ezek a csomópontok kérik őket.

Lekéréses kiszolgáló használatának követelményei:

  • A következőt futtató kiszolgáló:
    • WMF/PowerShell 4.0 vagy újabb
    • IIS-kiszolgálói szerepkör
    • DSC szolgáltatás
  • Ideális esetben a tanúsítvány létrehozásának valamilyen módja a célcsomópontokon a helyi Configuration Manager (LCM) számára átadott hitelesítő adatok biztonságossá tételéhez

A Windows Server lekéréses szolgáltatás üzemeltetésére való konfigurálásának legjobb módja egy DSC-konfiguráció használata. Alább talál egy példaszkriptet.

Támogatott adatbázisrendszerek

WMF 4.0 WMF 5.0 WMF 5.1 WMF 5.1 (Windows Server Insider Preview 17090)
MDB ESENT (alapértelmezett), MDB ESENT (alapértelmezett), MDB ESENT (alapértelmezett), SQL Server, MDB

A Windows Server 17090-es kiadásától kezdve a SQL Server a lekéréses szolgáltatás (Windows feature DSC-Service) egyik támogatott lehetősége. Ez egy új lehetőséget biztosít az olyan nagy méretű DSC-környezetek skálázásához, amelyek nem lettek áttelepítve Azure Automation DSC-be.

Megjegyzés

SQL Server támogatás nem lesz hozzáadva a WMF 5.1 (vagy korábbi) korábbi verzióihoz, és csak az 17090-nél nagyobb vagy annál régebbi Windows Server-verziókon lesz elérhető.

A lekéréses kiszolgáló SQL Server használatára való konfigurálásához állítsa az SqlProvider értékét értékre$true, az SqlConnectionString értékét pedig egy érvényes SQL Server kapcsolati sztringre. További információ: SqlClient kapcsolati sztringek. Az xDscWebService SQL Server konfigurálásához először olvassa el az xDscWebService erőforrás használata című cikket, majd tekintse át 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 a GitHubon.

Az xDscWebService erőforrás használata

A webes lekéréses kiszolgáló beállításának legegyszerűbb módja az xPSDesiredStateConfiguration modulban található xDscWebService erőforrás használata. Az alábbi lépések azt mutatják be, hogyan használhatja az erőforrást a Configuration webszolgáltatást beállító szolgáltatásban.

  1. Az xPSDesiredStateConfiguration modul telepítéséhez hívja meg az Install-Module parancsmagot.

    Megjegyzés

    Install-Module A a PowerShellGet modul része, amely a PowerShell 5.0-s és újabb verzióiban található.

  2. Szerezzen be egy SSL-tanúsítványt a DSC lekérési kiszolgálóhoz egy megbízható hitelesítésszolgáltatótól, akár a szervezeten belül, akár egy hatóságnál. A szolgáltatótól kapott tanúsítvány általában PFX formátumú.

  3. Telepítse a tanúsítványt arra a csomópontra, amely a DSC lekéréses kiszolgálójává válik az alapértelmezett helyen, amelynek a következőnek kell lennie CERT:\LocalMachine\My: .

    • Jegyezze fel a tanúsítvány ujjlenyomatát.
  4. Válassza ki a regisztrációs kulcsként használni kívánt GUID azonosítót. Ha a PowerShell használatával szeretne létrehozni egyet, írja be a következőt a PS-parancssorba, és nyomja le az enter billentyűt: [guid]::newGuid() vagy New-Guid. Ezt a kulcsot az ügyfélcsomópontok megosztott kulcsként fogják használni a regisztráció során történő hitelesítéshez. További információkért lásd az alábbi Regisztrációs kulcs szakaszt.

  5. A PowerShell ISE-ben indítsa el (F5) a következő konfigurációs szkriptet (amely az xPSDesiredStateConfiguration modul Sample_xDscWebServiceRegistration.ps1mappájában található) . Ez a szkript beállítja a lekérési kiszolgálót.

    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. Futtassa a konfigurációt, és adja át az SSL-tanúsítvány ujjlenyomatát certificateThumbPrint paraméterként, és egy GUID regisztrációs kulcsot RegistrationKey paraméterként:

    # 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
    

Regisztrációs kulcs

Ha engedélyezni szeretné, hogy az ügyfélcsomópontok regisztráljanak a kiszolgálón, hogy konfigurációs azonosító helyett konfigurációneveket használhassanak, a fenti konfiguráció által létrehozott regisztrációs kulcsot a rendszer egy nevű RegistrationKeys.txt fájlba C:\Program Files\WindowsPowerShell\DscServicementi. A regisztrációs kulcs megosztott titkos kódként működik, amelyet az ügyfél és a lekéréses kiszolgáló kezdeti regisztrációja során használ. Az ügyfél létrehoz egy önaláírt tanúsítványt, amely a sikeres regisztrációt követően egyedileg hitelesíti a lekéréses kiszolgálót. A tanúsítvány ujjlenyomata helyileg van tárolva, és a lekérési kiszolgáló URL-címéhez van társítva.

Megjegyzés

A PowerShell 4.0 nem támogatja a regisztrációs kulcsokat.

Ahhoz, hogy egy csomópontot konfigurálhasson a lekéréses kiszolgálóval való hitelesítéshez, a regisztrációs kulcsnak a metakonfigurálásban kell lennie minden olyan célcsomópont esetében, amely ezzel a lekérési kiszolgálóval fog regisztrálni. Vegye figyelembe, hogy az alábbi metakonfigurálásban szereplő RegistrationKey elem a célgép sikeres regisztrálása után törlődik, és az értéknek meg kell egyeznie a RegistrationKeys.txt lekérési kiszolgálón található fájlban ('140a952b-b9d6-406b-b416-e0f759c9c0e4' ebben a példában). Mindig biztonságosan kezelje a regisztrációs kulcs értékét, mert tudva, hogy bármely célgép regisztrálhat a lekérési kiszolgálón.

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

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

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

    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

Megjegyzés

A ReportServerWeb szakasz lehetővé teszi a jelentéskészítési adatok küldését a lekérési kiszolgálónak.

A metakonfigurációs fájl ConfigurationID tulajdonságának hiánya implicit módon azt jelenti, hogy a lekéréses kiszolgáló támogatja a lekéréses kiszolgáló protokolljának V2 verzióját, így kezdeti regisztrációra van szükség. Ezzel szemben a ConfigurationID jelenléte azt jelenti, hogy a rendszer a lekéréses kiszolgáló protokolljának V1 verzióját használja, és nincs regisztrációs feldolgozás.

Megjegyzés

PUSH-forgatókönyv esetén az aktuális kiadásban olyan hiba áll fenn, amely szükségessé teszi egy ConfigurationID tulajdonság definiálását a metakonfigurációs fájlban olyan csomópontokhoz, amelyek még soha nem regisztráltak lekéréses kiszolgálóval. Ez kényszeríti a V1 lekéréses kiszolgáló protokollt, és elkerüli a regisztrációs hibaüzeneteket.

Konfigurációk és erőforrások elhelyezése

A lekérési kiszolgáló beállítása után a lekérési kiszolgáló konfigurációjában a ConfigurationPath és a ModulePath tulajdonságok által meghatározott mappákban olyan modulokat és konfigurációkat helyezhet el, amelyek a lekérésre szolgáló célcsomópontok számára elérhetők lesznek. Ezeknek a fájloknak egy adott formátumban kell lenniük ahhoz, hogy a lekérési kiszolgáló megfelelően feldolgozhassa őket.

DSC-erőforrásmodul csomagformátuma

Minden erőforrásmodult az alábbi minta {Module Name}_{Module Version}.zipszerint kell tömöríteni és elnevezni.

Egy xWebAdminstration nevű modul például a 3.1.2.0-s modulverzióval lesz elnevezve xWebAdministration_3.1.2.0.zip. A modul minden verzióját egyetlen zip-fájlban kell tárolni. Mivel minden zip-fájlban csak egyetlen erőforrás-verzió található, a WMF 5.0-ban hozzáadott modulformátum nem támogatott egyetlen könyvtár több modulverziójának támogatásával. Ez azt jelenti, hogy a lekéréses kiszolgálóhoz használható DSC-erőforrásmodulok csomagolása előtt egy kis módosítást kell végeznie a könyvtárszerkezeten. A WMF 5.0-s verziójában DSC-erőforrást tartalmazó modulok alapértelmezett formátuma a {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\. A lekéréses kiszolgáló becsomagolása előtt távolítsa el a {Module version} mappát, hogy az elérési út a következő legyen {Module Folder}\DscResources\{DSC Resource Folder}\: . Ezzel a módosítással tömörítse a mappát a fent leírt módon, és helyezze ezeket a zip-fájlokat a ModulePath mappába.

A használatával New-DscChecksum {module zip file} ellenőrzőösszegfájlt hozhat létre az újonnan hozzáadott modulhoz.

Konfigurációs MOF formátum

A konfigurációs MOF-fájlt egy ellenőrzőösszegfájllal kell párosítani, hogy a célcsomópont LCM-je érvényesíthesse a konfigurációt. Ellenőrzőösszeg létrehozásához hívja meg a New-DscChecksum parancsmagot. A parancsmag egy Path paramétert vesz fel, amely meghatározza azt a mappát, ahol a konfigurációs MOF található. A parancsmag létrehoz egy ellenőrzőösszegfájlt nevű ConfigurationMOFName.mof.checksumnéven, ahol ConfigurationMOFName a konfigurációs mof fájl neve. Ha egynél több konfigurációs MOF-fájl található a megadott mappában, a rendszer ellenőrzőösszeget hoz létre a mappában lévő összes konfigurációhoz. Helyezze a MOF-fájlokat és a hozzájuk tartozó ellenőrzőösszegfájlokat a ConfigurationPath mappába.

Megjegyzés

Ha bármilyen módon módosítja a konfigurációs MOF-fájlt, újra létre kell hoznia az ellenőrzőösszeg-fájlt is.

Eszközök

A lekéréses kiszolgáló beállításának, érvényesítésének és kezelésének megkönnyítése érdekében az xPSDesiredStateConfiguration modul legújabb verziójában az alábbi eszközök szerepelnek példaként:

  1. Egy modul, amely segít a DSC-erőforrásmodulok és konfigurációs fájlok becsomagolásában a lekérési kiszolgálón való használatra. PublishModulesAndMofsToPullServer.psm1. Példák az alábbiakra:

    # 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. Egy szkript, amely ellenőrzi, hogy a lekérési kiszolgáló megfelelően van-e konfigurálva. PullServerSetupTests.ps1.

Közösségi megoldások lekéréses szolgáltatáshoz

A DSC-közösség több megoldást is létrehozott a lekéréses szolgáltatás protokolljának implementálásához. A helyszíni környezetek esetében ezek lekéréses szolgáltatási képességeket kínálnak, és lehetőséget kínálnak arra, hogy növekményes fejlesztésekkel járuljanak hozzá a közösséghez.

Lekéréses ügyfélkonfiguráció

A következő témakörök részletesen ismertetik a lekéréses ügyfelek beállítását:

Lásd még