Ce este PowerShell DSC (Desired State Configuration): Ghid complet și diferențe cu DSC multiplatformă

Ultima actualizare: 16/10/2025
Autorul: Isaac
  • DSC este un model declarativ și idempotent: descrie starea, iar motorul converge către ea.
  • PSDSC utilizează MOF și LCM în ferestre dinDSC-ul actual este multiplatformă și utilizează JSON/YAML.
  • Se integrează cu Azure Automation, WinGet și alte instrumente pentru orchestrare la scară largă.
  • Cele mai bune practici: modularizare, controlul versiunilor, testare și aliniere cu NIST/FISMA.

Configurarea stării dorite PowerShell DSC

Dacă administrați sisteme Windows, Linux sau macOS, veți întâlni inevitabil conceptul de stare dorită. Configurația stării dorite (DSC) în PowerShell este cea mai directă modalitate de a exprima și menține această stare în timp , prevenind problemele neașteptate, corectând abaterile și accelerând implementările. Aici veți găsi un ghid cuprinzător , cu exemple practice și diferențele dintre DSC-ul PowerShell clasic și cel mai recent DSC multiplatformă.

Dincolo de definițiile formale, gândiți-vă la DSC ca la o promisiune pe care o faceți serverelor dumneavoastră: „Vreau să fiți configurați în acest fel și, dacă îl schimbați, vă voi readuce la site-ul dumneavoastră ”. Cel mai bun lucru este că această promisiune este declarativă și idempotentă: dumneavoastră descrieți rezultatul, iar motorul are grijă să ajungă acolo și să rămână acolo, indiferent de câte ori rulați aceeași configurație.

Ce este DSC și de ce ți-ar putea interesa

DSC este o platformă de configurare declarativă. Este declarativă deoarece descrie starea dorită ( servicii active, roluri și caracteristici , pachete, fișiere, chei de registry etc.), nu secvența minutioasă de pași pentru a o atinge. Motorul compară starea curentă cu starea dorită și face modificările minime necesare pentru convergență.

Unitatea sa de bază este resursa. O resursă DSC încapsulează modul de „obținere”, „testare” și „setare” a stării unui anumit lucru : un serviciu, un fișier, Active Directory , SQL Server etc. Această interfață Get/Test/Set vă permite să verificați dacă un nod este deja în starea corectă și, dacă nu, să aplicați modificarea.

În PowerShell DSC clasic (PSDSC), componenta care acționează ca liant este Local Configuration Manager (LCM). LCM este motorul care aplică configurațiile, le monitorizează și le poate reîmprospăta periodic . Funcționează în modul push (push configurația) sau în modul pull (nodul o descarcă de pe un server pull).

DSC se bazează pe standarde de management precum CIM și IMO. Această fundație deschisă facilitează interoperabilitatea și permite coexistența fără probleme a instrumentelor terțe , ceea ce este crucial dacă infrastructura dvs. combină diferiți producători și platforme.

Diferențe între PowerShell DSC (PSDSC) și DSC-ul multiplatformă actual

Diferențe între PSDSC și DSC multiplatformă

În ultimii ani, Microsoft a promovat un DSC care depășește limitele PowerShell și Windows. Acest „nou” DSC rulează pe Windows, Linux și macOS și este invocat cu instrumentul de linie de comandă dsc , fără a se baza pe PowerShell sau pe modulul său PSDesiredStateConfiguration.

  • Independența PowerShellDSC-ul actual nu necesită PowerShell. Cu toate acestea, puteți utiliza resurse PSDSC folosind adaptoare: Microsoft.DSC/PowerShell pentru resurse în clasele PowerShell și Microsoft.Windows/WindowsPowerShell pentru cei care se bazează pe Windows PowerShell.
  • Formatul documentuluiÎn PSDSC, configurațiile sunt compilate în MOF. În DSC-ul actual, documentele de configurare și schemele de resurse sunt definite în JSON sau YAML.
  • Model de execuțiePSDSC include LCM, care poate rula ca serviciu și poate menține starea. DSC modern este invocat ca o comandă; nu include LCM sau serviciile pentru rezidenți.
  • multilingvisticpoți scrie resurse în bash, Piton, C#, Rust sau orice preferați. Accentul este pus pe platformă, nu pe carcasă.
  • integrareDSC-ul multiplatformă expune scheme JSON pentru integrare cu WinGet, Microsoft Dev Box și Azure Machine Configuration, printre alte instrumente.
  Căutare clasică vs. Căutare îmbunătățită în Windows 11: Diferențe cheie și cum să profitați la maximum de ele

În concluzie, PSDSC rămâne esențial în Windows și este foarte matur pentru gestionarea sistemului de operare și a rolurilor. DSC multi-platformă oferă o abordare mai amplă, mai portabilă și independentă de limbaj, ideală pentru organizațiile hibride.

Sisteme și cerințe acceptate pe Windows

Implementarea clasică a DSC pe Windows este disponibilă nativ sau prin Windows Management Framework. Sunt acceptate Windows Server 2016, 2019 și 2022, precum și Windows 10 și Windows 11. Pachetul recomandat pentru mediile care nu rulează cea mai recentă versiune este WMF 5.1.

Există o excepție importantă: Microsoft Hyper-V Server (produs independent) nu include DSC , deci nu îl veți putea gestiona cu PSDSC sau Azure Automation State Configuration.

Pentru a opera de la distanță, Windows trebuie să aibă WinRM configurat corect. Îl puteți activa cu privilegii de administrator rulând Set-WsManQuickConfig -ForceAceasta pregătește computerul să primească comenzi PowerShell la distanță, chiar dacă aplicați setările pe localhost.

Dacă trebuie să diagnosticați, evenimentele DSC din Windows sunt înregistrate în jurnal. Microsoft-Windows-Dsc/OperationalAcestea pot fi activate busteni suplimentar pentru depanare avansată atunci când trebuie să aprofundați detaliile.

Introducere în PowerShell DSC pe Windows

Abordarea obișnuită este de a începe cu resursele încorporate și de a adăuga module din Galeria PowerShell. Modulul „PSDscResources” oferă resurse actualizate pentru a acoperi scenarii comune :

# Instalar recursos DSC desde PowerShell Gallery
Install-Module 'PSDscResources' -Verbose

O configurație PSDSC este definită cu cuvântul cheie Configuration și se compilează în MOF. Mai jos este un exemplu care creează o variabilă de mediu și se asigură că aceasta este prezentă.:

Configuration CrearVariableEntorno {
  param ()
  Import-DscResource -ModuleName 'PSDscResources'
  Node localhost {
    Environment CrearRutaVariableEntorno {
      Name   = 'CrearVariableEntorno'
      Value  = 'Hola mundo'
      Ensure = 'Present'
      Path   = $true
      Target = @('Process','Machine')
    }
  }
}

# Compilar el MOF en una carpeta de salida
CrearVariableEntorno -OutputPath './CrearVariableEntorno'

Odată ce MOF-urile au fost generate, este timpul să le aplicăm. Cmdletul Start-DscConfiguration invocă LCM pentru a procesa configurația și poate fi rulat în mod interactiv pentru a urmări detaliile:

Start-DscConfiguration -Path 'C:\CrearVariableEntorno' -Wait -Verbose

Pentru a inspecta aspectul nodului, puteți verifica starea curentă pe care o vede DSC. Get-DscConfiguration returnează valorile reale aplicate y Get-DscLocalConfigurationManager arată metaconfigurația curentă:

# Estado efectivo del nodo
Get-DscConfiguration

# Metaconfiguración (LCM)
Get-DscLocalConfigurationManager

Dacă trebuie să „anulați fixarea” unei configurații, există și o cale de ieșire. Remove-DscConfigurationDocument -Stage Current -Verbose șterge documentul aplicat și lasă nodul pregătit să primească un alt MOF.

În scenariile gestionate, uneori este posibil să doriți să aplicați o metaconfigurație LCM (de exemplu, pentru a schimba modul de reîmprospătare sau a viza un server Pull). Acest lucru se realizează prin generarea unui MOF de metaconfigurare și aplicarea acestuia cu Set-DscLocalConfigurationManager -Path 'c:\metaconfig\localhost.meta.mof' -Verbose.

Manager de configurare locală: moduri, frecvență și configurații parțiale

LCM definește cum și când sunt impuse configurațiile. Parametri precum ConfigurationMode (DoarAplică, AplicăȘiMonitorizează sau AplicăȘiCorectareAutomată) și frecvențele RefreshFrequencyMins y ConfigurationModeFrequencyMins Acestea controlează dacă nodul aplică o singură dată, monitorizează sau monitorizează și corectează automat.

  Modul IE în Edge pentru compatibilitate cu versiunile vechi: ghid complet și riscuri

În plus, puteți lucra în modul push sau pull. În modul pull, nodurile interoghează un server de configurare (Pull Server) pentru a descărca MOF-uri și module pe baza identificatorului lor. Această abordare este foarte utilă la scară largă, deoarece centralizează controlul versiunilor și conformitatea.

Începând cu Windows Server 2016 (DSC v2), LCM a acceptat configurații parțiale. Aceasta implică descompunerea configurației în fragmente independente pe care LCM le combină apoi: de exemplu, o echipă își definește porțiunea de securitate, iar o altă echipă își definește porțiunea de aplicație, fără suprapunere.

Scenarii de utilizare din viața reală

DSC este ideal pentru „standarde de operare” repetabile și audibile. Aplicațiile tipice includ configurarea rolurilor și caracteristicilor, securizarea serviciilor, pregătirea IIS, instalarea pachetelor, modificarea Registrului și definirea variabilelor de mediu . Puteți găsi ghiduri utile despre cum să modificați Registrul cu PowerShell pentru a-l integra în configurațiile dvs.

Pentru aplicații, puteți automatiza instalarea, configurarea dependențelor, publicarea site-ului și reglajele fine. Cheia este ca implementarea rezultată să fie consistentă în toate nodurile, fie într-un mediu de laborator, fie într-un mediu de producție.

În ceea ce privește securitatea și conformitatea, DSC este o alegere perfectă. Politicile de consolidare a securității, parametrii firewall-ului, conturile locale și directivele de auditare devin o configurație versionalizată și auditabilă, nu o „rețetă” manuală.

Gestionarea rețelei ( adaptoare , adrese IP, reguli, servicii) este, de asemenea, inclusă. Dacă se modifică ceva, motorul detectează acest lucru și, în funcție de mod, restabilește starea , reducând problemele neașteptate și timpul de asistență.

Ca o idee simplă, imaginați-vă că doriți ca un serviciu critic să funcționeze mereu. Cu o resursă Service și modul ApplyAndAutoCorrect, dacă cineva îl oprește, LCM îl preia din nouTe poți baza chiar și pe sarcini programate pentru a consolida verificarea.

Integrare cu Azure și orchestrare

DSC iese în evidență atunci când face parte dintr-un lanț de automatizare. Azure Automation poate orchestra aprovizionarea (runbook-uri, fluxuri de lucru) și delega configurația mașinilor virtuale către DSC , atât în ​​Azure, cât și local.

Un model comun este publicarea configurației pe un depozitare și asociați-l cu mașini virtuale cu extensia DSC. Comenzi precum Publish-AzureVMDscConfiguration împachetează-ți scenariu într-un fișier .zip cu modulele necesare, Și Set-AzureVMDSCExtension o aplică în creație.

# Publicar la configuración (convierte el .ps1 y módulos en .zip)
Publish-AzureVMDscConfiguration -ConfigurationPath './MiConfig.ps1' -Force

# Asignar la configuración a una VM al desplegarla
Set-AzureVMDSCExtension -VM $vm -ConfigurationArchive 'MiConfig.zip' -ConfigurationName 'NombreDeConfig'

În implementările IaaS, ideea este simplă: orchestrarea creează și conectează resursele cloud (rețea, stocare, mașini virtuale), iar DSC configurează sistemul de operare și aplicațiile din cadrul fiecărei mașini virtuale . Dacă, de asemenea, versionați și testați configurațiile, veți avea medii reproductibile.

Instalarea și utilizarea DSC-ului multiplatformă

DSC-ul modern este distribuit ca fișiere binare portabile. Puteți descărca cea mai recentă versiune din depozitul PowerShell/DSC GitHub, puteți extrage fișierele și puteți adăuga folderul la PATH . Nu sunt necesare instalări complicate sau dependențe suplimentare.

  Fișierele dispar de pe computer fără motiv: cauze reale și soluții

Pe Windows, îl puteți instala și din Microsoft Store folosind WinGet. Mai întâi, localizați pachetul și apoi instalați fie versiunea stabilă, fie versiunea de previzualizare.

# Buscar los paquetes publicados
winget search DesiredStateConfiguration --source msstore

# Instalar la versión estable
winget install --id 9NVTPZWRC6KQ --source msstore

# Instalar la versión preliminar
winget install --id 9PCX3HX4HZ0Z --source msstore

Acest DSC funcționează cu documente de configurare scrise în JSON sau YAML și cu scheme, de asemenea, în JSON. Interfața de comandă (CLI) dsc vă permite să invocați resurse individuale, să aplicați documente întregi și să scrieți resurse în orice limbăÎn plus, adaptoarele menționate anterior vă permit să valorificați resursele PSDSC existente.

Prin standardizarea structurii documentelor și a ieșirilor folosind scheme JSON, integrarea cu alte instrumente ale platformei (WinGet, Dev Box, Azure Machine Configuration) este mai simplă, facilitând conductele și fluxurile de lucru moderne.

Bune practici și conformitate cu reglementările

Pentru a evita haosul, modularizarea este esențială. Împărțiți configurațiile în componente reutilizabile și creați module de resurse pentru piese complexe . Acest lucru vă permite să întrețineți și să scalați cu mai puține dificultăți.

Controlul versiunilor se face prin Git. Salvarea configurațiilor și resurselor în repozitorii facilitează munca în echipă, urmărirea istoricului și revenirile la versiunea inițială . Utilizarea ramurilor și a cererilor de extragere a versiunilor va asigura, de asemenea, reviziile și calitatea.

Testați înainte de implementarea în producție. Instrumente precum Pester ajută la validarea resurselor și configurațiilor și la evitarea efectelor secundare, iar un mediu de pre-producție ar trebui să facă parte din proces.

Multe organizații respectă standarde precum NIST SP 800-53 (de exemplu, controlul CM-2 asupra configurațiilor de bază) sau FISMA. DSC oferă consecvență și auditabilitate pentru a alinia sistemele la politici și standarde , reducând efortul manual de conformitate.

Înregistrări și diagnostic

Când ceva nu se leagă, jurnalul de evenimente este aliatul tău. Pe Windows, canalul Microsoft-Windows-Dsc/Operational centralizează ce s-a întâmplat (implementare resurse, remedieri, erori etc.). Dacă aveți nevoie de mai multe detalii, activați jurnale suplimentare orientate spre depanare.

În Azure, examinați și jurnalele de extensie DSC și diagnosticarea mașinilor virtuale. Corelați rezultatul Start-DscConfiguration -Verbose cu vizualizatorul de evenimente economisești timp pentru a localiza exact resursa care a eșuat.

DSC, fie că este versiunea clasică PowerShell sau versiunea multiplatformă, vă oferă o bază solidă pentru Infrastructure as a Computer (IaC) pe servere și stații de lucru. Definiți starea, partajați-o ca și cod, testați-o și lăsați motorul să se ocupe de munca repetitivă ; acest lucru permite echipelor dvs. să se concentreze pe valoarea reală, nu pe stingerea incendiilor.

Pentru ce este DSC (Configurația stării dorite)-2?
Articol asociat:
La ce se folosește DSC (Configurația stării dorite)? Ghid definitiv, utilizări și exemple