Automazione avanzata in Windows con PowerShell DSC e Ansible

Ultimo aggiornamento: 10 marzo 2026
  • PowerShell DSC fornisce risorse approfondite per la configurazione di Windows, mentre Ansible offre orchestrazione e inventario multipiattaforma.
  • Il modulo win_dsc consente di riutilizzare direttamente le risorse DSC dai playbook, integrando autenticazione, WinRM e tipi di proprietà avanzati.
  • PowerShell Gallery e Azure Automation ampliano le opzioni di automazione, insieme a Terraform, Bicep, cloud-init e altri servizi di Azure.
  • Un approccio combinato di PowerShell, DSC e Ansible riduce l'amministrazione manuale, migliora la coerenza e facilita l'adozione dell'infrastruttura come codice.

Automazione con PowerShell DSC e Ansible

Se lavorate con infrastrutture Windows e termini come PowerShell, DSC, Ansible e automazione vi suonano familiari , probabilmente sapete già che combinarli efficacemente può trasformare completamente il modo in cui gestite i server. Passare da clic manuali nella procedura guidata di Windows a una configurazione completamente dichiarativa e ripetibile fa la differenza tra dover continuamente risolvere problemi urgenti e avere un ambiente completamente controllato.

In questo articolo approfondiremo come PowerShell Desired State Configuration (DSC) e Ansible si adattano insieme Per gestire Windows (e Linux) su larga scala, quale ruolo svolgono tecnologie come WinRM, Azure Automation, Terraform o cloud-init e come è possibile sfruttare le risorse DSC esistenti da Ansible grazie al modulo win_dscVedrai esempi pratici, casi d'uso reali e criteri per decidere quando utilizzare DSC nativo, moduli Ansible o altri approcci di automazione.

Panoramica: automazione di Windows con PowerShell, DSC e Ansible

PowerShell e Ansible condividono lo stesso obiettivo : automatizzare la configurazione e l'amministrazione dei sistemi in modo riproducibile. La differenza risiede nell'approccio. DSC è la piattaforma di gestione della configurazione integrata in PowerShell, fortemente focalizzata su Windows (sebbene possa funzionare anche con Linux tramite OMI), mentre Ansible è un motore di automazione multipiattaforma e versatile, progettato per orchestrare infrastrutture ibride ed eterogenee da un unico punto di controllo.

Con Red Hat Ansible Automation Platform, è possibile automatizzare i server Windows senza installare agenti aggiuntivi, sfruttando WinRM o OpenSSH come canali di connessione e utilizzando risorse DSC, moduli Ansible e script PowerShell. Il tutto è organizzato tramite playbook YAML , in cui si definisce lo stato che ogni host deve raggiungere, sia su Windows che su Linux.

PowerShell Desired State Configuration, d'altro canto, offre centinaia di risorse specializzate per configurare praticamente qualsiasi componente di Windows: servizi, funzionalità di sistema, IIS, SQL Server, Active Directory, registro di sistema, file, ecc. Queste risorse incapsulano la logica di verifica e applicazione dello stato desiderato, quindi è sufficiente dichiarare "come si desidera che sia la macchina".

La chiave è che, da Ansible, puoi utilizzare quelle risorse DSC direttamente tramite il modulo ansible.windows.win_dscCombinando la potenza di orchestrazione di Ansible con la profondità di configurazione specifica per Windows offerta da DSC, si ottiene Il meglio di entrambi i mondi senza duplicare gli sforzi.

Integrazione di Ansible con DSC nelle infrastrutture Windows

WinRM e accesso remoto a Windows per Ansible

Affinché Ansible possa gestire i server Windows, è fondamentale comprendere il funzionamento di WinRM (Windows Remote Management) . WinRM è la tecnologia integrata di Microsoft per l'amministrazione remota basata su HTTP/HTTPS ed è il canale standard utilizzato da Ansible per eseguire attività sulle macchine Windows.

Il primo passo consiste nel configurare correttamente WinRM sugli host di destinazione e sul nodo di controllo in cui è in esecuzione Ansible. Ciò implica la regolazione dell'autenticazione, della crittografia, delle autorizzazioni e spesso la gestione di funzionalità come l'accesso non interattivo, in cui i comandi vengono emessi senza una sessione utente attiva. Questo ambiente di sessione non interattiva complica attività come gli aggiornamenti di Windows o gli scenari di autenticazione a due fattori , in cui è necessario accedere a una seconda risorsa remota (ad esempio, una condivisione su un altro server).

Il vantaggio di utilizzare Red Hat Ansible Automation Platform è che consente di codificare in modo centralizzato e sicuro le credenziali e i meccanismi di autenticazione , semplificando così la gestione di questi casi complessi. Inoltre, la piattaforma può utilizzare OpenSSH per accedere a Windows Server , una pratica sempre più diffusa nelle versioni moderne di Windows.

In pratica, la combinazione di WinRM, della gestione delle credenziali di Ansible e delle funzionalità DSC consente di creare flussi di automazione robusti che vengono eseguiti senza supervisione, anche in ambienti con elevate restrizioni di sicurezza.

PowerShell DSC: piattaforma di configurazione dichiarativa

PowerShell Desired State Configuration è una piattaforma di gestione della configurazione dichiarativa integrata in Windows. Con DSC, si definisce, tramite codice, come deve essere configurata una macchina: quali ruoli e funzionalità devono essere installati, quali servizi devono essere attivi, quali parametri del registro di sistema, quali file o directory devono esistere e così via.

Le configurazioni DSC descrivono lo stato desiderato per un insieme di nodi. Ogni macchina gestita esegue un Local Configuration Manager (LCM) , che è il motore che legge queste configurazioni, verifica lo stato effettivo e applica le modifiche necessarie. Inoltre, è possibile configurare un pull server che centralizza le configurazioni e dal quale i nodi si aggiornano e segnalano la conformità.

  Guida completa all'ottimizzazione delle prestazioni del tuo SSD su Windows

DSC non si limita a Windows: tramite il server Open Management Infrastructure ( OMI ), può funzionare anche con macchine Linux . Tuttavia, il suo vero punto di forza risiede negli ambienti Windows, dove la community ha sviluppato una vasta raccolta di risorse specializzate per attività diverse come la configurazione di IIS, SQL Server o Active Directory.

Uno dei grandi vantaggi di DSC è che si concentra sul risultato, non sui passaggi . Si dichiara lo stato (ad esempio, "questa funzionalità deve essere presente, questo servizio avviato, questo valore di registro configurato") e il motore si occupa di raggiungerlo, verificando e correggendo eventuali deviazioni nel tempo.

Configurazione dello stato desiderato di PowerShell per Windows

Come Ansible si adatta a DSC: modulo win_dsc e orchestrazione

In teoria, DSC potrebbe essere utilizzato in modo isolato, ma in pratica risulta molto più utile se combinato con Ansible come livello di orchestrazione . Ansible gestisce l'inventario, l'esecuzione ordinata delle attività, il coordinamento tra i sistemi e l'integrazione con le pipeline CI/CD, mentre DSC fornisce le risorse specifiche per manipolare i meccanismi interni di Windows.

Il modulo ansible.windows.win_dsc È il ponte tra i due mondi. Questo modulo invoca un Classe di risorse DSC sull'host Windows di destinazione. Nel playbook, è sufficiente definire:

  • nome_risorsa: il nome della risorsa DSC che si desidera utilizzare (ad esempio, File, WindowsFeature, Service, Registry, xWebsite, Ecc.).
  • I parametri rimanenti, che corrispondono direttamente al proprietà della risorsa DSC (per esempio, DestinationPath, Ensure, Name, State, Ecc.).

Quando Ansible esegue l'attività, traduce questi parametri in una configurazione DSC temporanea, la applica all'host e raccoglie il risultato (inclusa l'indicazione se si sono verificate modifiche). Ciò consente di riutilizzare l'intero catalogo di risorse DSC senza dover scrivere moduli Ansible specifici per ogni caso.

Di seguito, il flusso di esecuzione segue uno schema coerente: Ansible invia l'attività tramite WinRM, il sistema Windows genera una configurazione DSC in base ai parametri, il motore DSC chiama prima Test-TargetResource per verificare lo stato attuale e, se rileva differenze, esegue Set-TargetResource per applicare le modifiche. Ansible riceve un report che indica se qualcosa è stato modificato e tutti i messaggi rilevanti per il debug.

Questo accoppiamento è particolarmente potente quando si combina Moduli nativi Ansible per Windows (come win_file, win_service, win_regedit, win_psmoduleecc.) con risorse DSC per quelle aree in cui DSC offre opzioni più raffinate o una maggiore copertura funzionale.

Tipi di proprietà DSC e come mapparle in Ansible

Ogni risorsa DSC definisce un insieme di proprietà con un tipo ben specificato (stringa, booleano, array, tipi PowerShell complessi, ecc.). Quando si lavora da Ansible, è necessario tradurre tali proprietà in Sintassi YAML Mantenere il tipo corretto. Il modulo win_dsc Esegue molte conversioni automatiche, ma vale la pena conoscere alcuni casi chiave.

Per tipi semplici come o , la mappatura è semplice: stringhe tra virgolette e booleani minuscoli in stile YAML (true, false), evitando di scrivere $true o $false come faresti in PowerShell. Per le proprietà di tipo , la cosa usuale è usare un Formato ISO 8601 (per esempio, "2019-02-22T13:57:31Z") e assicurati che il valore sia serializzato come stringa, racchiudendolo tra virgolette.

Proprietà del tipo Rappresentano un caso speciale. Poiché questo tipo non può essere serializzato direttamente in JSON, Ansible utilizza una convenzione: si definiscono due parametri separati da un suffisso. _username y _password (per esempio, Credential_username y Credential_passwordIl modulo genera l'oggetto. PSCredential sull'host remoto in base a quei due valori.

Per i tipi Rappresentano dizionari basati su una classe di risorse personalizzata; in YAML, sono espressi come una mappa chiave-valore. Si consiglia di consultare la documentazione della risorsa (solitamente nel file). <nombre_recurso>.schema.mof) per sapere quali chiavi sono consentite e di che tipo è ciascuna. In pratica sono definite come dizionari annidati all'interno del modulo win_dsc.

Infine, le proprietà del tipo e gli array (], ]ecc.) sono rappresentati come dizionari o elenchi YAML. Per gli array, si consiglia di utilizzare un elenco YAML autentico e non una stringa con valori separati da virgole, perché questo evita l'analisi manuale e riduce la probabilità di errori sottili.

Esempi pratici di utilizzo di DSC da Ansible

Una volta padroneggiata la struttura di base del modulo win_dscPuoi combinare le risorse per costruire manuali di configurazione molto completiEcco alcuni scenari comuni che funzionano bene con DSC:

  • Gestione di file e directory con la risorsa File: creazione di strutture di cartelle, distribuzione di file di configurazione con contenuti specifici, verifica dell'esistenza o della rimozione di determinati elementi.
  • Installazione di ruoli e funzionalità di Windows con WindowsFeature: IIS, .NET Framework, Telnet Client, strumenti di amministrazione, ecc.
  • Controllo del servizio con la risorsa Service: stato (avviato/arrestato), tipo di avvio (automatico, manuale), account di servizio, ecc.
  • Impostazioni del registro con Registry: valori di sicurezza, tempi di attesa, parametri di protocollo, rafforzamento del sistema.
  • Impostazioni IIS avanzate con moduli come xWebAdministration e risorse xWebsite, xWebAppPool, ecc.
  Come migliorare l'esperienza di esplorazione dei file in Windows

In tutti questi casi, Ansible descrive semplicemente i parametri della risorsa DSC, mentre Il motore DSC è responsabile del controllo e dell'applicazione lo stato. Inoltre, a partire da Ansible 2.8, il modulo win_dsc Convalida automaticamente i parametri in base alla definizione della risorsa: se si utilizza un nome di proprietà errato, si lascia vuoto un campo obbligatorio o si passa un valore fuori intervallo, l'attività fallirà con un errore evidente.

Se esegui Ansible con un elevato livello di verbosità (ad esempio, -vvv)L'output includerà informazioni dettagliate in invocation.module_args sulle opzioni utilizzate e su quelle disponibili, il che è molto utile sia per il debug che per scoprire quali campi è possibile configurare in ogni risorsa.

Si noti inoltre che è possibile utilizzare il parametro PsDscRunAsCredential Ciò consente alla risorsa DSC di essere eseguita come utente diverso da quello del sistema. Ciò è molto utile per accedere all'hive di registrazione. HKEY_CURRENT_USER dell'utente a cui Ansible è connesso o per scenari in cui è necessario un contesto di sicurezza specifico.

Risorse DSC personalizzate e PowerShell Gallery

Le risorse DSC integrate in Windows coprono molte esigenze, ma la vera potenza emerge quando si utilizzano le risorse pubblicate nella PowerShell Gallery o nei pacchetti di terze parti. Sono disponibili moduli per ogni esigenza: Active Directory, SQL Server, IIS avanzato, criteri di sicurezza e molto altro.

È possibile scoprire le risorse disponibili con il cmdlet Find-DscResource oppure navigando direttamente nella PowerShell Gallery. Una volta identificato il modulo di tuo interesse (ad esempio, xWebAdministration o SqlServerDsc), hai diversi modi per installarlo sui tuoi host:

  • Installazione manuale con Install-Module da PowerShell sul server di destinazione.
  • Utilizzo del modulo Ansible win_psmodule per automatizzare l'installazione da PowerShell Gallery.
  • Scaricare in anticipo e copiare a mano ai server che non hanno accesso a internet, salvando il modulo in una directory inclusa in PSModulePath (per esempio, C:\Program Files\WindowsPowerShell\Modules).

Quando si lavora in ambienti disconnessi, una strategia comune è quella di utilizzare un server con accesso a Internet per salva il modulo con Save-Module in un percorso locale, quindi copiare quella directory sulle macchine di produzione. Dopodiché, configurare PSModulePath Può essere regolato anche con Ansible, ad esempio con il modulo win_pathin modo che PowerShell possa rilevare tali risorse senza intervento manuale.

Una volta installato, il modulo win_dsc può richiamare qualsiasi risorsa da quei pacchetti semplicemente indicando il nome in resource_nameCiò apre le porte al riutilizzo di soluzioni consolidate, come i moduli Active Directory DSC, per attività come creare utenti, unità organizzative, gruppi o configurare policytutto gestito dai tuoi playbook.

Inoltre, esiste persino un modulo PowerShell che consente di generare automaticamente moduli Ansible a partire da risorse DSC . L'idea è quella di analizzare la risorsa DSC, creare un modulo Ansible che ne mappi i parametri uno per uno e utilizzarlo come se fosse un modulo standard. Questi generatori possono scaricare risorse dalla PowerShell Gallery e creare decine di moduli che espandono ulteriormente l'ecosistema di automazione di Windows con Ansible.

Oltre DSC e Ansible: altri strumenti di automazione in Azure

Se la tua infrastruttura è in esecuzione (o sarà in esecuzione) su Azure, vale la pena tenere d'occhio altri strumenti che integrano PowerShell DSC e Ansible . Non si tratta di sceglierne uno solo, ma di capire come si inseriscono nella catena complessiva: creazione dell'infrastruttura, configurazione del sistema, distribuzione delle applicazioni e gestione operativa continua.

Nell'ambito dell'"infrastruttura come codice", soluzioni come Terraform o i linguaggi nativi di Azure (ARM Templates e Bicep) consentono di definire reti, macchine virtuali, storage e servizi gestiti tramite file dichiarativi. Terraform utilizza il proprio linguaggio HCL, mentre Bicep semplifica la sintassi dei vecchi modelli ARM, ma tutti si integrano bene nelle pipeline CI/CD e possono essere combinati con Ansible per configurare le macchine virtuali dopo la loro creazione.

Per la fase di configurazione iniziale delle macchine LinuxAzure supporta cloud-initche esegue script e configura utenti, pacchetti o file di configurazione al primo avvio. I file #cloud-config, solitamente codificati in base64, sono indipendenti dalla distribuzione e si basano sul gestore dei pacchetti di ogni distribuzione, senza che tu debba preoccuparti.

Nell'ambito dell'automazione operativa , Azure Automation riveste un ruolo interessante. Utilizza runbook (generalmente script PowerShell o Python) che possono essere eseguiti su richiesta o in base a una pianificazione, sia su risorse Azure che in ambienti locali tramite Hybrid Runbook Worker. Inoltre, offre un servizio DSC gestito che consente di pubblicare configurazioni e monitorare la conformità su un insieme di macchine.

Infine, strumenti di CI/CD e di gestione del ciclo di vita delle applicazioni come Azure DevOps, Jenkins, Chef, Puppet e Packer completano l'ecosistema. Ognuno di essi copre un tassello del puzzle: dalla compilazione e dal test del codice alla generazione di immagini di macchine personalizzate o alla garanzia della conformità normativa tramite test automatizzati.

  WinScript: lo strumento open source per personalizzare Windows

Aggiornamenti, pacchetti e gestione delle applicazioni di Windows

Uno dei compiti più critici per qualsiasi team di sistemi è mantenere Windows aggiornato con patch e aggiornamenti . Microsoft offre Windows Update e, in molti ambienti aziendali, Microsoft Configuration Manager (SCCM) per gestire la distribuzione. Tuttavia, quando entrano in gioco riavvii multipli, finestre di manutenzione ristrette o requisiti di orchestrazione complessi, questi meccanismi possono risultare inadeguati o inaffidabili.

Ansible Automation Platform facilita l' esecuzione controllata degli aggiornamenti , integrandosi con Windows Update e gestendo automaticamente i riavvii necessari, in modo che una singola attività possa installare decine o centinaia di patch mantenendo il controllo sullo stato finale dei nodi.

Per quanto riguarda l'installazione delle applicazioni, Windows non dispone di un gestore di pacchetti nativo unificato come quelli presenti nelle distribuzioni Linux. Il Microsoft Store non è progettato per distribuzioni di massa automatizzate: manca di strumenti a riga di comando maturi e si basa fortemente sull'interfaccia grafica, il che ne rende difficile l'utilizzo in pipeline automatizzate.

Per ovviare a questa limitazione, Ansible integra moduli che consentono una gestione di base dei pacchetti in Windows e, soprattutto, funziona molto bene con soluzioni come Chocolatey o Winget in Windows , offrendo un approccio idempotente simile a quello di un classico gestore di pacchetti. Combinando Chocolatey, DSC e i playbook di Ansible, è possibile standardizzare i cataloghi software per server o VDI con uno sforzo manuale minimo.

Se a tutto ciò si aggiunge l'utilizzo delle risorse DSC per imporre configurazioni del registro di sistema, servizi e criteri relativi a queste applicazioni, si ottiene un'automazione completa del ciclo di vita del software negli ambienti Windows, dall'installazione iniziale alle configurazioni di sicurezza e agli aggiornamenti periodici.

Formazione, best practice e adozione nei team Windows

In molti team IT che utilizzano esclusivamente sistemi Windows, il punto di partenza è ancora l'amministrazione basata su clic nella console grafica e procedure guidate. È comune avere decine o centinaia di macchine virtuali in esecuzione su VMware o Hyper-V, dove il processo di creazione dei server viene eseguito manualmente. Il passaggio all'automazione avviene solitamente quando qualcuno del team si stanca di ripetere le stesse attività e inizia a scrivere script PowerShell.

In questo contesto, sorge spontanea una domanda: "Continuo a usare PowerShell da solo, passo a DSC, configuro Ansible... o faccio tutto in una volta?" La risposta più pragmatica è solitamente quella di combinarli: sfruttare le conoscenze pregresse di PowerShell e DSC e, allo stesso tempo, introdurre Ansible come livello di orchestrazione per ottenere vantaggi in termini di standardizzazione e integrazione con altre piattaforme.

Esistono corsi specifici per amministratori Windows che partono da zero con Ansible e si concentrano proprio su questo: come configurare i sistemi Windows per essere gestiti con Ansible, come scrivere playbook efficaci, come integrare Ansible Tower o AWX per avviare automazioni da un'interfaccia web centralizzata e sicura e come riutilizzare il codice DSC da questi playbook in modo da non buttare via il lavoro già svolto.

In pratica, molti team adottano una strategia evolutiva: iniziano automatizzando attività semplici (servizi, ruoli, installazione di moduli PowerShell), proseguono con le risorse DSC per configurazioni ripetitive (IIS, AD, SQL, policy di sicurezza) e integrano gradualmente l'automazione nella pipeline di distribuzione delle applicazioni e nelle attività operative ricorrenti.

È inoltre importante definire linee guida di stile, controllo del codice sorgente e test dei playbook e delle configurazioni DSC, in modo che l'automazione diventi una vera e propria "infrastruttura come codice" e non solo una manciata di script sparsi senza controllo di versione o revisioni.

Automazione del server Windows con DSC e Ansible

Combinando PowerShell DSC, moduli Ansible, WinRM, Chocolatey e strumenti Azure , si crea un ecosistema robusto in cui la creazione di macchine virtuali, la configurazione dettagliata, la distribuzione delle applicazioni e la manutenzione continua non dipendono più da sessioni RDP manuali. Il risultato è un ambiente più coerente, verificabile e riproducibile, in cui le modifiche vengono documentate automaticamente nel codice e l'errore umano è drasticamente ridotto.

finestre 11
Articolo correlato:
I migliori strumenti e trucchi per la manutenzione di Windows 11