Gewenste Status Configuratie (DSC): Het is Makkelijker Dan Je Denkt

Heb je ooit nagedacht over het uitproberen van DSC, maar voelde de leercurve te stijl? Of misschien heeft u het nog nooit zag zelf ooit met het in productie, zodat u niet de moeite?

Met behulp van DSC hoeft niet moeilijk of complex, en je hoeft niet een enorme infrastructuur om het te maken de moeite waard. Dit artikel is van plan om over te praten DSC en hoe de eerste stappen te nemen, en het bevat voorbeelden van hoe u kunt beginnen met het toepassen in de kleine schaal in productie.

Wat Is DSC?

Gewenste Status Configuratie (DSC) is een configuratie management systeem dat is ingebouwd in Windows en stelt u in staat om uw systeem te configureren Als Code. Het maakt gebruik van een configuratie geschreven in PowerShell die later worden omgezet naar een MOF (Managed Object Format).

De MOF-bestand later wordt gelezen en toegepast door de Lokale Configuratie Manager-Service op het doel knooppunt (de computer).

De configuratie die is gemaakt en liep gebruikt verschillende DSC middelen van DSC Modules. DSC Modules zijn als een reguliere PowerShell Module, en de middelen zijn functies. Bijvoorbeeld, u kunt ze met behulp van Installatie-Module, en ze worden opgeslagen onder in de PSModulePath.

Wat Kan ik Gebruik maken van DSC voor?

Het moeilijkste deel over DSC voor velen is het vinden van use cases voor. Mensen hebben de neiging om te praten en te schrijven over de DSC alleen als het gaat om het regisseren en spinning tot grote omgevingen, of testen en QA voor andere apps, dat is een ver verwijderd onderwerp voor veel beheerders.

We kunnen gebruik maken van DSC voor onze dagelijkse routines en veel meer, zonder dat het tot een reorganisatie van onze gehele organisatie. Ik heb een lijst samengesteld van een paar gebieden die u kunt geheel of gedeeltelijk automatiseren met DSC:

  • Basis configuratie van nieuwe servers
  • Het beheren van servers geen lid van het domein
  • Beheer van Windows Defender instellingen
  • Patch management
  • Compliance en rapportage nulmeting
  • Installatie van software op servers en computers

Voorbeeld: het Lezen en Schrijven van een DSC-configuratie

Een paar regels van DSC kan gelijk zijn aan honderden lijnen met raw PowerShell, dat is de reden waarom het zo ongelooflijk krachtig.

Een DSC-configuratie bestaat voornamelijk uit 2 delen: De DSC-configuratie en de configuratie gegevens.

De configuratie-gegevens (zie verder naar beneden) kan worden opgenomen extern, meestal van een PSD-bestand, of opgenomen zijn in het configuratie bestand. De aanbevolen en meest houdbare aanpak is om dit uit een apart bestand.

Volgende is een voorbeeld van hoe u een DSC-MOF die gedownload en geïnstalleerd door een generieke MSI wanneer toegepast:

Configuratie MyDSCConfiguration {
# Importeren DSC-modules met bronnen om te gebruiken in de configuratie
Importeren-DscResource -Modulenaam PSDesiredStateConfiguration
Importeren-DscResource -Modulenaam xPSDesiredStateConfiguration -ModuleVersion “8.10.0.0”

##############################################
# Maakt configuratie voor de server-fileserver-1
##############################################
Het knooppunt “fileserver-1” {

# Creëer C:ProgramDataSoftwarePackages om bestanden te downloaden om op alle knooppunten
Bestand SoftwarePackagesDirectory {
# Identifier “SoftwarePackagesDirectory” het gebruik van de DSC-bron “Bestand” van de DSC-module “PSDesiredStateConfiguration”

DestinationPath = “C:ProgramDataSoftwarePackages”
Type = “Directory” # een map
Zorg ervoor = “Aanwezig” # zorg Ervoor dat het bestaat

}

# Download MSI
xRemoteFile DownloadBackupAgent {
# De xRemoteFile bron van xPSDesiredStateConfiguration DSC-module gebruikt voor het downloaden van een MSI via HTTP

DependsOn = “[File]SoftwarePackagesDirectory” # Vertelt DSC niet uitgevoerd als de vorige stap nog niet voltooid
Uri = “http://web.contoso.com/packages/backupagent.msi” # Waar download het bestand op afstand van
DestinationPath = “C:ProgramDataSoftwarePackagesBackupAgent.msi” # Waar u het gedownloade bestand

}

# Installeer de MSI
xMsiPackage InstallBackupAgent {
# De xMsiPackage bron van xPSDesiredStateConfiguration DSC-module gebruikt voor de installatie van het MSI we zojuist gedownload

DependsOn = “[xRemoteFile]DownloadBackupAgent” # is Afhankelijk van de vorige stap worden voltooid voordat u begint
ProductId = “d29c3fa9-e03e-40e0-a6ed-556c6f05476a” # Het MSI-pakket ProductID
Path = “C:ProgramDataSoftwarePackagesBackupAgent.msi” # Pad naar het MSI-bestand dat u zojuist gedownload
Zorg ervoor = “Aanwezig” # zorg Ervoor dat deze aanwezig zijn (installeer de MSI), ‘Zorgen = “Afwezig”‘ zou het verwijderen van de MSI

}

}
}

Na het uitvoeren van deze code, het maakt een Configuratie van de Functie in de huidige PowerShell-sessie die gebruikt kan worden. Het wordt een submap met dezelfde naam als de configuratie waarin het slaat de gegenereerde MOF-bestanden:

PS51> MyDSCConfiguration

Directory: C:TutorialsDSCMyDSCConfiguration

Mode LastWriteTime Lengte Naam
—- ————- —— —-
-een—- 2019-10-28 16:38 3952 fileserver-1.mof

Je kan toepassen op alle DSC-configuraties in de MyDSCConfiguration map van hun gastheer door het uitvoeren van:

PS51> Start-DscConfiguration -Pad .MyDSCConfiguration -Wacht

Met behulp van DSC met ConfigurationData

Configuratie-Gegevens bevat configuratiegegevens voor de DSC-configuratie. De informatie omvat een knooppunt naam (naam van de computer), en bevat andere gegevens, zoals informatie over het installeren van een MSI-pakket of register sleutel waarden, enz. Dit geeft ons een dynamische en veelzijdige benadering van DSC, zodat het hergebruikt kan worden en eenvoudig worden aangepast.

Laten we zeggen dat je deze drie servers die moeten elk een unieke combinatie van pakketten:

  • fileserver-1
    • Behoeften: BackupAgent
  • database-1
    • Behoeften: BackupAgent, BackupAgent-DatabaseAddon
  • appserver-1
    • Behoeften: BackupAgent, MonitoringAgent

De beste aanpak is om een bestand te maken met de configuratie van de gegevens die u nodig hebt, niet alleen het opgeven van de nodes (servers), maar ook het toevoegen van een lijst van pakketten in het:

# Opslaan als ConfigurationData.psd1

@{
#############################
# Geef server nodes
#############################
AllNodes = @(
@{
Knooppuntnaam = “*”
}

# File server node
@{
Knooppuntnaam = “fileserver-1”
Rol = “Fileserver”

# Selecteert wat er pakketten om te installeren
Pakketten = @(
‘BackupAgent’
)
},

# Databank-server node
@{
Knooppuntnaam = “database-1”
Rol = “Database”

# Selecteert wat er pakketten om te installeren
Pakketten = @(
‘BackupAgent’,
‘BackupAgent-DataBaseAddon’
)
},

# Appserver knooppunt
@{
Knooppuntnaam = “appserver-1”
Rol = “Appserver”

# Selecteert wat er pakketten om te installeren
Pakketten = @(
‘BackupAgent’,
‘MonitoringAgent’
)
}
)

#############################
# Define elk pakket
#############################
Pakketten = @(
@{
Name = “BackupAgent”
ProductId = “3c4e21b5-8de2-408e-84e0-a42b0507b8b1”
FileName = “BackupAgent.msi”
Zorg Ervoor = “Aanwezig”
},
@{
Name = “BackupAgent-DataBaseAddon”
ProductId = “97f860f6-0a58-4bf3-aef8-abc0f796e9df”
FileName = “BackupAgent-DataBaseAddon.msi”
Zorg Ervoor = “Aanwezig”
},
@{
Name = “MonitoringAgent”
ProductId = “77b29b12-c222-4d85-b812-bbd4136ad0ff”
FileName = “MonitoringAgent.msi”
Zorg Ervoor = “Aanwezig”
}
)
}

U kunt nu gebruik maken van dit Configuratie bestand met Gegevens voor het genereren van dynamisch DSC-configuraties voor uw servers:

Configuratie MyDSCConfiguration {
# Importeren DSC-modules met bronnen om te gebruiken in de configuratie
Importeren-DscResource -Modulenaam PSDesiredStateConfiguration
Importeren-DscResource -Modulenaam xPSDesiredStateConfiguration -ModuleVersion “8.10.0.0”

# Krijg Pakketten van de ConfigurationData
$Packages = $ConfigurationData.Pakketten

##############################################
# Is van toepassing op alle knooppunten
##############################################
Knooppunt $AllNodes.Knooppuntnaam {

# Creëer C:ProgramDataSoftwarePackages om bestanden te downloaden om op alle knooppunten
Bestand SoftwarePackagesDirectory {
DestinationPath = “C:ProgramDataSoftwarePackages”
Type = “Directory” # een map
Zorg ervoor = “Aanwezig” # zorg Ervoor dat het bestaat
}

# Start-dynamisch genereren van DSC configuratie door het uitvoeren van de package-namen in Knooppunt.Pakketten
Foreach($PackageName in $Node.Pakketten){

$Package = $Pakketten.Where{$_.Naam -eq $Pakketnaam}

xRemoteFile “PackageDownload-$($Pakket.De naam)” {
DependsOn = “[File]SoftwarePackagesDirectory”
DestinationPath = “C:SoftwarePackages$($Pakket.Bestandsnaam)”
Uri = “http://web.contso.com/packages/$($Pakket.Bestandsnaam)”
}

xMsiPackage “Installeren$($Pakket.De naam)” {
DependsOn = “[xRemoteFile]PackageDownload-$($Pakket.De naam)”
ProductId = $Pakket.Productnummer
Path = “C:ProgramDataSoftwarePackages$($Pakket.Bestandsnaam)”
Zorg Ervoor = $Pakket.Verzekeren
}
}
}
}

Als u dit uitvoert, de DSC-functie genereert een MOF-bestand voor elk van uw servers die kunnen worden gebruikt om de pakketten te installeren die u hebt gedefinieerd in de ConfigurationData.psd1 bestand:

PS51> MyDSCConfiguration -ConfigurationData .ConfigurationData.psd1

Directory: C:TutorialsDSCMyDSCConfiguration

Mode LastWriteTime Lengte Naam
—- ————- —— —-
-een—- 2019-10-28 17:25 3962 fileserver-1.mof
-een—- 2019-10-28 17:25 6012 database-1.mof
-een—- 2019-10-28 17:25 5894 appserver-1.mof

# Past de configuratie van de servers
PS51> Start-DscConfiguration -Pad .MyDSCConfiguration -Wacht

Als u wilt toevoegen van nieuwe pakketten te selecteren, verander je ConfigurationData.psd1-bestand en voer de oude code nog een keer.

Conclusie

Het kan een vrij korte en steile leercurve aan de slag met DSC. Maar het moeilijkste voor velen is het vinden van use cases waar ze het kunnen gebruiken.

Bij de vorige methode die gebruik maakt van HTTP-of HTTPS) op te halen pakketten geeft u een veelzijdige manier voor het distribueren van software op uw servers. En omdat het HTTPS, het is makkelijker bloot te leggen, en je kunt het gebruiken om Software te beheren in de DMZ en andere minder-vertrouwde netwerken.

Bovendien, met behulp van configuratie-gegevens in plaats van de vaste codering van alles in de DSC-configuraties geeft je een veel meer gemakkelijk te onderhouden aanpak. U kunt ook het genereren van deze configuratie worden gegevens uit externe bronnen, zoals CSV, SQL, Sharepoint en alles dat kan worden gelezen met PowerShell.

Ik hoop dat u nog wat ideeën voor uw omgeving om te beginnen het maken van uw dagelijkse taken eenvoudiger met DSC.


Posted

in

by

Tags: