Gambaran Umum Konfigurasi Status yang Diinginkan untuk Insinyur

Dokumen ini ditujukan bagi tim pengembang dan operasi untuk memahami manfaat PowerShell Desired State Configuration (DSC). Untuk tampilan tingkat yang lebih tinggi dari nilai yang disediakan DSC, silakan lihat Gambaran Umum Konfigurasi Status yang Diinginkan untuk Pembuat Keputusan

Manfaat Konfigurasi Status yang Diinginkan

DSC ada untuk:

  • Mengurangi kompleksitas pembuatan skrip di Windows
  • Meningkatkan kecepatan iterasi

Konsep "penyebaran berkelanjutan" menjadi lebih penting. Penyebaran berkelanjutan berarti kemampuan untuk sering menyebarkan, berpotensi berkali-kali per hari. Tujuan dari penyebaran ini bukan untuk memperbaiki sesuatu tetapi untuk mendapatkan sesuatu yang diterbitkan dengan cepat. Dengan mendapatkan fitur baru melalui pengembangan ke dalam operasi semulus dan andal mungkin, Anda mengurangi waktu-ke-nilai logika bisnis baru.

Langkah menuju komputasi cloud menyiratkan solusi penyebaran yang menggunakan model templat "deklaratif", di mana lingkungan status akhir dinyatakan sebagai teks dan diterbitkan ke mesin penyebaran. Teknik penyebaran ini memungkinkan perubahan cepat, dalam skala besar, dengan ketahanan terhadap ancaman kegagalan karena kapan saja penyebaran dapat diulang secara konsisten untuk menjamin status akhir. Pembuatan alat dan layanan yang mendukung gaya operasi ini melalui otomatisasi adalah respons terhadap perubahan ini.

DSC adalah platform yang menyediakan penyebaran, konfigurasi, dan kesamaan deklaratif dan idempotensi (berulang). Platform DSC memungkinkan Anda memastikan bahwa komponen pusat data Anda memiliki konfigurasi yang benar, yang menghindari kesalahan dan mencegah kegagalan penyebaran yang mahal. Dengan memperlakukan konfigurasi DSC sebagai bagian dari kode aplikasi, DSC memungkinkan penyebaran berkelanjutan. Konfigurasi DSC harus diperbarui sebagai bagian dari aplikasi, memastikan bahwa pengetahuan yang diperlukan untuk menyebarkan aplikasi selalu diperbarui dan siap digunakan.

"Saya memiliki PowerShell, mengapa saya memerlukan Konfigurasi Status yang Diinginkan?"

Konfigurasi DSC memisahkan niat, atau "apa yang ingin saya lakukan", dari eksekusi, atau "bagaimana saya ingin melakukannya." Ini berarti logika eksekusi terkandung dalam sumber daya. Pengguna tidak perlu tahu cara mengimplementasikan atau menyebarkan fitur saat sumber daya DSC untuk fitur tersebut tersedia. Ini memungkinkan pengguna untuk fokus pada struktur penyebaran mereka.

Sebagai contoh, skrip PowerShell akan terlihat seperti ini:

# Create a share in Windows Server 8
New-SmbShare -Name MyShare -Path C:\Demo\Temp -FullAccess Alice -ReadAccess Bob

Skrip ini sederhana, dapat dipahami, dan mudah dipahami. Namun, jika Anda mencoba memasukkan skrip tersebut ke dalam produksi, Anda akan mengalami beberapa masalah. Apa yang terjadi jika skrip tersebut dijalankan dua kali berturut-turut? Apa yang terjadi jika Bob sebelumnya memiliki Akses Penuh ke berbagi?

Untuk mengimbangi masalah ini, versi skrip "nyata" akan terlihat lebih dekat dengan sesuatu seperti:

# But actually creating a share in an idempotent way would be

$shareExists = $false
$smbShare = Get-SmbShare -Name $Name -ErrorAction SilentlyContinue
if($smbShare -ne $null)
{
    Write-Verbose -Message "Share with name $Name exists"
    $shareExists = $true
}

if ($shareExists -eq $false)
{
    Write-Verbose "Creating share $Name to ensure it is Present"
    New-SmbShare @PSBoundParameters
}
else
{
    # Need to call either Set-SmbShare or *ShareAccess cmdlets
    if ($PSBoundParameters.ContainsKey("ChangeAccess"))
    {
       #...etc, etc, etc
    }
}

Skrip ini lebih kompleks, dengan banyak penanganan logika dan kesalahan. Skrip lebih kompleks karena Anda tidak lagi menyatakan apa yang ingin Anda lakukan, tetapi bagaimana melakukannya.

DSC memungkinkan Anda untuk mengatakan apa yang ingin Anda lakukan, dan logika yang mendasar diabstraksi.

# A configuration is a special kind of PowerShell function
Configuration Sample_Share
{
   Import-DSCResource -ModuleName xSmbShare
   # Nodes are the endpoint we wish to configure
   # A Configuration block can have zero or more Node blocks
   Node $NodeName
   {
      # Next, specify one or more resource blocks
      # Resources are simply PowerShell modules that
      # implement the logic of "how" to execute a task
      xSmbShare MySMBShare
      {
          Ensure      = "Present"
          Name        = "MyShare"
          Path        = "C:\Demo\Temp"
          ReadAccess  = "Bob"
          FullAccess  = "Alice"
          Description = "This is an updated description for this share"
      }
   }
}
#Run the function to compile the configuration
Sample_Share
#Pass the configuration to the nodes we defined and configure them
Start-DscConfiguration Sample_Share

Skrip ini diformat dengan bersih dan mudah dibaca. Jalur logika dan penanganan kesalahan masih ada dalam implementasi sumber daya , tetapi tidak terlihat oleh penulis skrip.

Memisahkan Lingkungan dari Struktur

Pola umum di DevOps adalah memiliki beberapa lingkungan untuk penyebaran. Misalnya, mungkin ada lingkungan "dev" yang digunakan untuk membuat prototipe kode baru dengan cepat. Kode dari lingkungan "dev" masuk ke lingkungan "uji", di mana orang lain memverifikasi fungsionalitas baru. Akhirnya, kode masuk ke "prod", atau lingkungan produksi situs langsung.

Konfigurasi DSC mengakomodasi alur dev-test-prod ini melalui penggunaan data konfigurasi. Ini semakin mengabstraksi perbedaan antara struktur konfigurasi dari simpul yang dikelola. Misalnya, Anda dapat menentukan konfigurasi yang memerlukan server SQL, server IIS, dan server tingkat menengah. Terlepas dari simpul apa yang menerima bagian yang berbeda dari konfigurasi ini, ketiga elemen tersebut akan selalu ada. Anda dapat menggunakan data konfigurasi untuk mengarahkan ketiga elemen ke komputer yang sama untuk lingkungan dev, memisahkan tiga elemen ke tiga komputer yang berbeda untuk lingkungan pengujian, dan akhirnya menuju semua server produksi Anda untuk lingkungan prod. Untuk menyebarkan ke lingkungan yang berbeda, Anda dapat memanggil Start-DscConfiguration dengan data konfigurasi yang benar untuk lingkungan yang ingin Anda targetkan.

Lihat juga

Konfigurasi

Data Konfigurasi

Sumber