PowerShell
Creazione di risorse basate su classi DSC
Ricerca…
introduzione
A partire da PowerShell versione 5.0, è possibile utilizzare le definizioni di classe PowerShell per creare risorse DSC (Desired State Configuration).
Per facilitare la creazione di risorse DSC, esiste un [DscResource()]
applicato alla definizione di classe e una [DscProperty()]
per designare le proprietà come configurabili dall'utente DSC Resource.
Osservazioni
Una risorsa DSC basata sulla classe deve:
- Essere decorato con l'
[DscResource()]
- Definire un metodo
Test()
che restituisce[bool]
- Definire un metodo
Get()
che restituisce il proprio tipo di oggetto (ad esempio[Ticket]
) - Definire un metodo
Set()
che restituisce[void]
- Almeno una proprietà
Key
DSC
Dopo aver creato una risorsa DSC PowerShell basata su classi, deve essere "esportata" da un modulo, utilizzando un file manifest (.psd1) del modulo. All'interno del manifest del modulo, la chiave hash DscResourcesToExport
viene utilizzata per dichiarare un array di risorse DSC (nomi di classi) da "esportare" dal modulo. Ciò consente ai consumatori del modulo DSC di "vedere" le risorse basate sulla classe all'interno del modulo.
Creare una classe di scheletro delle risorse DSC
[DscResource()]
class File {
}
Questo esempio dimostra come creare la sezione esterna di una classe PowerShell, che dichiara una risorsa DSC. Devi ancora compilare il contenuto della definizione della classe.
Scheletro di risorse DSC con proprietà chiave
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
}
Una risorsa DSC deve dichiarare almeno una proprietà chiave. La proprietà chiave è ciò che identifica in modo univoco la risorsa da altre risorse. Ad esempio, supponiamo che tu stia creando una risorsa DSC che rappresenta un ticket in un sistema di ticketing. Ogni ticket sarebbe rappresentato in modo univoco con un ticket ID.
Ogni proprietà che verrà esposta all'utente della risorsa DSC deve essere decorata con l' [DscProperty()]
. Questo attributo accetta un parametro key
, per indicare che la proprietà è un attributo chiave per la risorsa DSC.
Risorsa DSC con proprietà obbligatorie
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
[DscProperty(Mandatory)]
[string] $Subject
}
Quando crei una risorsa DSC, troverai spesso che non tutte le proprietà devono essere obbligatorie. Tuttavia, ci sono alcune proprietà di base che vorrete assicurare siano configurate dall'utente della risorsa DSC. Si utilizza il parametro Mandatory
dell'attributo [DscResource()]
per dichiarare una proprietà come richiesto dall'utente della risorsa DSC.
Nell'esempio sopra, abbiamo aggiunto una proprietà Subject
a una risorsa Ticket
, che rappresenta un ticket univoco in un sistema di ticketing, e lo abbiamo designato come proprietà Mandatory
.
Risorsa DSC con metodi richiesti
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
# The subject line of the ticket
[DscProperty(Mandatory)]
[string] $Subject
# Get / Set if ticket should be open or closed
[DscProperty(Mandatory)]
[string] $TicketState
[void] Set() {
# Create or update the resource
}
[Ticket] Get() {
# Return the resource's current state as an object
$TicketState = [Ticket]::new()
return $TicketState
}
[bool] Test() {
# Return $true if desired state is met
# Return $false if desired state is not met
return $false
}
}
Questa è una risorsa DSC completa che dimostra tutti i requisiti fondamentali per creare una risorsa valida. Le implementazioni del metodo non sono complete, ma sono fornite con l'intenzione di mostrare la struttura di base.