PowerShell
DSCクラスベースのリソースの作成
サーチ…
前書き
PowerShellバージョン5.0以降では、PowerShellクラス定義を使用してDesired State Configuration(DSC)リソースを作成できます。
DSCリソースの構築を支援するために、クラス定義に適用される[DscResource()]
属性と、DSCリソースユーザーが設定可能なプロパティを指定する[DscProperty()]
リソースがあります。
備考
クラスベースのDSCリソースは、次の条件を満たす必要があります。
-
[DscResource()]
属性で装飾されている -
[bool]
を返すTest()
メソッドを定義します[bool]
- 独自のオブジェクト型を返す
Get()
メソッドを定義する(例:[Ticket]
) -
[void]
を返すSet()
メソッドを定義する - 少なくとも1つの
Key
DSCプロパティ
クラスベースのPowerShell DSCリソースを作成した後は、モジュールマニフェスト(.psd1)ファイルを使用してモジュールから「エクスポート」する必要があります。モジュールマニフェスト内では、 DscResourcesToExport
ハッシュテーブルキーを使用して、DSCリソース(クラス名)の配列をモジュールから「エクスポート」することを宣言します。これにより、DSCモジュールの消費者は、モジュール内のクラスベースのリソースを「見る」ことができます。
DSCリソーススケルトンクラスを作成する
[DscResource()]
class File {
}
この例では、DSCリソースを宣言するPowerShellクラスの外部セクションを作成する方法を示します。クラス定義の内容を入力する必要があります。
Keyプロパティを持つDSCリソーススケルトン
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
}
DSCリソースは、少なくとも1つのキープロパティを宣言する必要があります。重要なプロパティは、他のリソースからリソースを一意に識別するためのものです。たとえば、チケットシステムでチケットを表すDSCリソースを構築しているとします。各チケットはチケットIDで一意に表されます。
DSCリソースのユーザーに公開される各プロパティは、 [DscProperty()]
属性で[DscProperty()]
されていなければなりません。この属性は、プロパティがDSCリソースのキー属性であることを示すために、 key
パラメータを受け入れます。
必須プロパティ付きDSCリソース
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
[DscProperty(Mandatory)]
[string] $Subject
}
DSCリソースを構築する際には、すべてのプロパティが必須である必要はないことがよくあります。ただし、DSCリソースのユーザーによって構成されることを確実にしたいいくつかのコアプロパティがあります。 [DscResource()]
属性のMandatory
パラメータを使用して、DSCリソースのユーザーが必要とするプロパティを宣言します。
上記の例では、 Ticket
リソースにSubject
プロパティを追加しましたSubject
リソースはチケットシステム内の一意のチケットを表し、 Mandatory
プロパティとして指定されています。
必要なメソッドを持つDSCリソース
[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
}
}
これは、有効なリソースを構築するためのすべてのコア要件を示す完全なDSCリソースです。メソッドの実装は完全ではありませんが、基本的な構造を示す意図があります。