Menggunakan data konfigurasi di DSC

Berlaku Untuk: Windows PowerShell 4.0, Windows PowerShell 5.0

Dengan menggunakan parameter ConfigurationData DSC bawaan, Anda dapat menentukan data yang dapat digunakan dalam konfigurasi. Ini memungkinkan Anda membuat satu konfigurasi yang dapat digunakan untuk beberapa simpul atau untuk lingkungan yang berbeda. Misalnya, jika Anda mengembangkan aplikasi, Anda dapat menggunakan satu konfigurasi untuk lingkungan pengembangan dan produksi, dan menggunakan data konfigurasi untuk menentukan data untuk setiap lingkungan.

Topik ini menjelaskan struktur hashtable ConfigurationData . Untuk contoh cara menggunakan data konfigurasi, lihat Memisahkan konfigurasi dan data lingkungan.

Parameter umum ConfigurationData

Konfigurasi DSC mengambil parameter umum, ConfigurationData, yang Anda tentukan saat mengkompilasi konfigurasi. Untuk informasi tentang mengkompilasi konfigurasi, lihat Konfigurasi DSC.

Parameter ConfigurationData adalah hashtable yang harus memiliki setidaknya satu kunci bernama AllNodes. Ini juga dapat memiliki satu atau beberapa kunci lainnya.

Catatan

Contoh dalam topik ini menggunakan satu kunci tambahan (selain kunci AllNodes bernama ), NonNodeDatatetapi Anda dapat menyertakan sejumlah kunci tambahan, dan memberi nama apa pun yang Anda inginkan.

$MyData =
@{
    AllNodes = @()
    NonNodeData = ""
}

Nilai kunci AllNodes adalah array. Setiap elemen array ini juga merupakan tabel hash yang harus memiliki setidaknya satu kunci bernama NodeName:

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
        },


        @{
            NodeName = "VM-2"
        },


        @{
            NodeName = "VM-3"
        }
    );

    NonNodeData = ""
}

Anda juga dapat menambahkan kunci lain ke setiap tabel hash:

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
            Role     = "WebServer"
        },


        @{
            NodeName = "VM-2"
            Role     = "SQLServer"
        },


        @{
            NodeName = "VM-3"
            Role     = "WebServer"
        }
    );

    NonNodeData = ""
}

Untuk menerapkan properti ke semua simpul, Anda dapat membuat anggota array AllNodes yang memiliki NodeName .* Misalnya, untuk memberi setiap simpul LogPath properti, Anda dapat melakukan ini:

$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"
        }
    );
}

Ini setara dengan menambahkan properti dengan nama LogPath dengan nilai "C:\Logs" ke masing-masing blok lain (VM-1, VM-2, dan VM-3).

Menentukan hashtable ConfigurationData

Anda dapat menentukan ConfigurationData baik sebagai variabel dalam file skrip yang sama dengan konfigurasi (seperti dalam contoh kami sebelumnya) atau dalam file terpisah .psd1 . Untuk menentukan ConfigurationData dalam .psd1 file, buat file yang hanya berisi hashtable yang mewakili data konfigurasi.

Misalnya, Anda dapat membuat file bernama MyData.psd1 dengan konten berikut:

@{
    AllNodes =
    @(
        @{
            NodeName    = 'VM-1'
            FeatureName = 'Web-Server'
        },

        @{
            NodeName    = 'VM-2'
            FeatureName = 'Hyper-V'
        }
    )
}

Mengkompilasi konfigurasi dengan data konfigurasi

Untuk mengkompilasi konfigurasi yang telah Anda tentukan data konfigurasinya, Anda meneruskan data konfigurasi sebagai nilai parameter ConfigurationData .

Ini akan membuat file MOF untuk setiap entri dalam array AllNodes . Setiap file MOF akan diberi nama dengan NodeName properti entri array yang sesuai.

Misalnya, jika Anda menentukan data konfigurasi seperti pada file di MyData.psd1 atas, mengkompilasi konfigurasi akan membuat file dan VM-2.mof .VM-1.mof

Mengkompilasi konfigurasi dengan data konfigurasi menggunakan variabel

Untuk menggunakan data konfigurasi yang didefinisikan sebagai variabel dalam file yang sama .ps1 dengan konfigurasi, Anda meneruskan nama variabel sebagai nilai parameter ConfigurationData saat mengkompilasi konfigurasi:

MyDscConfiguration -ConfigurationData $MyData

Mengkompilasi konfigurasi dengan data konfigurasi menggunakan file data

Untuk menggunakan data konfigurasi yang ditentukan dalam file .psd1, Anda melewati jalur dan nama file tersebut sebagai nilai parameter ConfigurationData saat mengkompilasi konfigurasi:

MyDscConfiguration -ConfigurationData .\MyData.psd1

Menggunakan variabel ConfigurationData dalam konfigurasi

DSC menyediakan variabel khusus berikut yang dapat digunakan dalam skrip konfigurasi:

  • $AllNodes mengacu pada seluruh koleksi simpul yang ditentukan dalam ConfigurationData. Anda dapat memfilter koleksi AllNodes dengan menggunakan . Where() dan . ForEach().
  • ConfigurationData mengacu pada seluruh tabel hash yang diteruskan sebagai parameter saat mengkompilasi konfigurasi.
  • MyTypeName berisi nama konfigurasi tempat variabel digunakan. Misalnya, dalam konfigurasi MyDscConfiguration, $MyTypeName akan memiliki nilai MyDscConfiguration.
  • Simpul mengacu pada entri tertentu dalam koleksi AllNodes setelah difilter dengan menggunakan . Where() atau . ForEach().
    • Anda dapat membaca selengkapnya tentang metode ini di about_arrays

Menggunakan data non-simpul

Seperti yang telah kita lihat dalam contoh sebelumnya, hashtable ConfigurationData dapat memiliki satu atau beberapa kunci selain kunci AllNodes yang diperlukan. Dalam contoh dalam topik ini, kami hanya menggunakan satu simpul tambahan, dan menamainya NonNodeData. Namun, Anda dapat menentukan sejumlah kunci tambahan, dan memberi nama apa pun yang Anda inginkan.

Untuk contoh penggunaan data non-simpul, lihat Memisahkan konfigurasi dan data lingkungan.

Lihat juga