Uso dei dati di configurazione in DSC
Si applica a: Windows PowerShell 4.0, Windows PowerShell 5.0
Con il parametro DSC predefinito ConfigurationData è possibile definire i dati che possono essere usati in una configurazione. Ciò consente di creare una singola configurazione da usare per più nodi o ambienti diversi. Ad esempio, se si sviluppa un'applicazione, è possibile usare una sola configurazione per l'ambiente di sviluppo e per quello di produzione e usare i dati di configurazione per specificare i dati per ogni ambiente.
Questo argomento descrive la struttura della tabella hash ConfigurationData. Per esempi di come usare i dati di configurazione, vedere Separazione dei dati di configurazione e dell'ambiente.
Parametro comune ConfigurationData
Una configurazione DSC accetta il parametro comune ConfigurationData specificato quando si compila la configurazione. Per altre informazioni sulla compilazione di configurazioni, vedere Configurazioni DSC.
Il parametro ConfigurationData è una tabella hash che deve avere almeno una chiave denominata AllNodes. Può avere anche una o più chiavi aggiuntive.
Nota
Gli esempi di questo argomento usano una singola chiave aggiuntiva (diverso dalla chiave denominata AllNodes) denominata NonNodeData
, ma è possibile includere qualsiasi numero di chiavi aggiuntive e assegnare loro un nome qualsiasi.
$MyData =
@{
AllNodes = @()
NonNodeData = ""
}
Il valore della chiave AllNodes è una matrice. Ogni elemento della matrice è anche una tabella hash che deve avere almeno una chiave denominata NodeName:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
},
@{
NodeName = "VM-2"
},
@{
NodeName = "VM-3"
}
);
NonNodeData = ""
}
È anche possibile aggiungere altre chiavi a ogni tabella hash:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
Role = "WebServer"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
}
);
NonNodeData = ""
}
Per applicare una proprietà a tutti i nodi, è possibile creare un membro della matrice AllNodes ha come NodeName*
. Ad esempio, per assegnare a ogni nodo una proprietà LogPath
, è possibile usare questo script:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "*"
LogPath = "C:\Logs"
},
@{
NodeName = "VM-1"
Role = "WebServer"
SiteContents = "C:\Site1"
SiteName = "Website1"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
SiteContents = "C:\Site2"
SiteName = "Website3"
}
);
}
Questo equivale ad aggiungere una proprietà con nome LogPath
e valore "C:\Logs"
a ciascuno degli altri blocchi (VM-1
, VM-2
e VM-3
).
Definizione della tabella hash ConfigurationData
È possibile definire ConfigurationData come variabile all'interno dello stesso file di script di una configurazione, come negli esempi precedenti, o in un file .psd1
separato. Per definire ConfigurationData in un file .psd1
, creare un file che contiene solo la tabella hash che rappresenta i dati di configurazione.
Ad esempio, è possibile creare un file denominato MyData.psd1
con il seguente contenuto:
@{
AllNodes =
@(
@{
NodeName = 'VM-1'
FeatureName = 'Web-Server'
},
@{
NodeName = 'VM-2'
FeatureName = 'Hyper-V'
}
)
}
Compilazione di una configurazione con i dati di configurazione
Per compilare una configurazione per la quale sono stati definiti i dati di configurazione, passare i dati della configurazione come valore del parametro ConfigurationData.
Viene creato un file MOF per ogni voce della matrice AllNodes. Ogni file MOF è denominato con la proprietà NodeName
della voce della matrice corrispondente.
Ad esempio, se si definiscono i dati di configurazione come nel file MyData.psd1
precedente, la compilazione di una configurazione crea entrambi i file VM-1.mof
e VM-2.mof
.
Compilazione di una configurazione con i dati di configurazione usando una variabile
Per usare dati di configurazione definiti come variabile nello stesso file .ps1
, passare il nome della variabile come valore del parametro ConfigurationData durante la compilazione della configurazione:
MyDscConfiguration -ConfigurationData $MyData
Compilazione di una configurazione con i dati di configurazione usando un file di dati
Per usare i dati di configurazione definiti in un file .psd1, passare il percorso e il nome del file come valore del parametro ConfigurationData durante la compilazione della configurazione:
MyDscConfiguration -ConfigurationData .\MyData.psd1
Uso delle variabili ConfigurationData in una configurazione
DSC offre le variabili speciali seguenti che possono essere usate in uno script di configurazione:
- $AllNodes si riferisce all'intera raccolta di nodi definita in ConfigurationData. È possibile filtrare la raccolta AllNodes usando .Where() e .Foreach().
- ConfigurationData fa riferimento all'intera tabella hash che viene passata come parametro durante la compilazione di una configurazione.
- MyTypeName contiene il nome della configurazione in cui viene usata la variabile. Ad esempio, nella configurazione
MyDscConfiguration
, il valore di$MyTypeName
saràMyDscConfiguration
. - Node fa riferimento a una particolare voce della raccolta AllNodes dopo che viene filtrato usando .Where() o .Foreach().
- Sono disponibili altre informazioni su questi metodi in about_arrays
Uso di dati non specifici per un nodo
Come illustrato negli esempi precedenti, la tabella hash ConfigurationData può avere una o più chiavi oltre alla chiave obbligatoria AllNodes. Negli esempi di questo argomento è stato usato un solo nodo aggiuntivo che è stato denominato NonNodeData
. È comunque possibile definire qualsiasi numero di chiavi aggiuntive e assegnare alle chiavi qualsiasi nome.
Per un esempio d'uso di dati non nodo, vedere Separazione dei dati di configurazione e dell'ambiente.