
Konfigurasi Status yang Diinginkan PowerShell (DSC) sangat menyederhanakan pekerjaan penerapan dan konfigurasi sistem operasi, peran server, dan aplikasi ketika Anda memiliki ratusan server.
Namun saat menggunakan DSC lokal, mis. tidak di MS Azure, ada beberapa perbedaan. Hal ini terutama terlihat jika organisasinya besar (dengan 300 workstation dan server) dan belum mengenal dunia container:
- Tidak ada laporan lengkap mengenai status sistem. Jika konfigurasi yang diperlukan belum diterapkan pada beberapa server, maka tanpa laporan ini kami tidak akan mengetahuinya. Mendapatkan informasi dari server pelaporan internal cukup sulit, dan untuk sejumlah besar host, hal ini juga dapat memakan waktu lama.
- Tidak memiliki skalabilitas dan toleransi kesalahan. Tidak mungkin membangun kumpulan server web tarik DSC yang memiliki database tunggal yang toleran terhadap kesalahan dan penyimpanan umum file mof untuk konfigurasi, modul, dan kunci registrasi.
Hari ini saya akan memberi tahu Anda bagaimana Anda dapat memecahkan masalah pertama dan mendapatkan data untuk pelaporan. Semuanya akan lebih sederhana jika SQL bisa digunakan sebagai database. MS dukungan bawaan hanya di Windows Server 2019 atau dalam pembangunan Windows server 1803. Kumpulkan data menggunakan penyedia OleDB juga. karena DSC Server menggunakan parameter bernama yang tidak sepenuhnya didukung oleh OleDbCommand.
Saya menemukan cara ini: bagi mereka yang menggunakan Windows Server Tahun 2012 dan 2016, ya. menggunakan database SQL sebagai backend untuk server kueri DSC. Untuk melakukan ini, kita akan membuat "proxy" dalam bentuk file .mdb dengan tabel terkait, yang akan mengarahkan data yang diterima dari laporan klien ke database server SQL.
Catatan: untuk Windows Server Tahun 2016 harus digunakan karena Microsoft.Jet.OLEDB.4.0 tidak lagi didukung.
Saya tidak akan menjelaskan secara rinci tentang proses penerapan server tarik DSC, ini dijelaskan dengan sangat baik . Saya hanya akan mencatat beberapa poin. Jika kita menerapkan penarik DSC di server web yang sama dengan WSUS atau Kaspersky Security Center, maka dalam skrip pembuatan konfigurasi kita perlu mengubah parameter berikut:
UseSecurityBestPractices = $falseJika tidak, TLS 1.0 akan dinonaktifkan dan Anda tidak akan dapat terhubung ke database SQL. Pusat Keamanan Kaspersky juga tidak akan berfungsi (masalahnya harus diselesaikan di Kaspersky Security Center v11).
Enable32BitAppOnWin64 = $trueJika Anda tidak melakukan perubahan ini, Anda tidak akan dapat menjalankan server AppPool DSC di IIS dengan WSUS.
- Saat memasang Server DSC dengan WSUS, nonaktifkan cache statis dan dinamis untuk situs DSC.
Mari beralih ke menyiapkan server DSC untuk menggunakan database SQL.
Membuat database SQL
- Mari kita buat database SQL kosong bernama DSC.


- Mari kita buat akun untuk terhubung ke basis data ini. Pertama, periksa apakah server SQL mengizinkan otentikasi akun sebagai Windows, serta SQL.


- Buka bagian Pemetaan Pengguna. Pilih database, dalam hal ini DSC. Kami memberikan hak kepada pemilik database.

- Selesai

Membuat Skema untuk Database DSC
Ada dua cara untuk membuat skema untuk database DSC:
- secara mandiri, melalui skrip TSQL
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Devices]( [TargetName] [nvarchar](255) NOT NULL, [ConfigurationID] [nvarchar](255) NOT NULL, [ServerCheckSum] [nvarchar](255) NOT NULL, [TargetCheckSum] [nvarchar](255) NOT NULL, [NodeCompliant] [bit] NOT NULL, [LastComplianceTime] [datetime] NULL, [LastHeartbeatTime] [datetime] NULL, [Dirty] [bit] NOT NULL, [StatusCode] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[RegistrationData]( [AgentId] [nvarchar](255) NOT NULL, [LCMVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [ConfigurationNames] [nvarchar](max) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[StatusReport]( [JobId] [nvarchar](50) NOT NULL, [Id] [nvarchar](50) NOT NULL, [OperationType] [nvarchar](255) NULL, [RefreshMode] [nvarchar](255) NULL, [Status] [nvarchar](255) NULL, [LCMVersion] [nvarchar](50) NULL, [ReportFormatVersion] [nvarchar](255) NULL, [ConfigurationVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [StartTime] [datetime] NULL, [EndTime] [datetime] NULL, [Errors] [nvarchar](max) NULL, [StatusData] [nvarchar](max) NULL, [RebootRequested] [nvarchar](255) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO - mengimpor data dari devices.mdb kosong sebagai bagian dari modul PS PSDesiredStateConfiguration melalui SQL Data Import Wizard.
File devices.mdb yang akan kita gunakan terletak di C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- Untuk mengimpor data, jalankan Wizard Impor dan Ekspor SQL Server.

- Kami memilih dari mana kami akan mendapatkan data - dalam kasus kami ini adalah database Microsoft Access. Klik Berikutnya.

- Pilih file tempat kita mengimpor diagram.

- Kami menunjukkan tempat untuk mengimpor - bagi kami ini adalah database SQL.

- Pilih server SQL (Nama Server) dan database tempat kita akan mengimpor data (DataBase).

- Pilih opsi Salin data dari satu atau beberapa tabel atau tampilan (menyalin data dari tabel atau tampilan).

- Kami memilih tabel dari mana kami akan mengimpor skema database.

- Centang kotak Jalankan Segera dan klik Selesai.

- Selesai

- Hasilnya, tabel akan muncul di database DSC.

Menyiapkan file "proksi" .mdb
Membuat koneksi ODBC ke server SQL. Diasumsikan bahwa MS Access tidak diinstal pada server yang menjalankan DSC, jadi pengaturan databases.mdb dilakukan pada host perantara dengan MS Access diinstal.
Mari kita buat koneksi sistem ODBC ke server SQL (bitness koneksi harus sesuai dengan bitness MS Access - 64 atau 32). Itu dapat dibuat menggunakan:
- Cmdlet Powershell:
Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '<64-bit or 32-bit>' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=<Name of your SQL Server>",'Trusted_Connection=yes','Database=DSC') –PassThru— atau secara manual, menggunakan wizard koneksi:
- Buka alat Administratif. Kami memilih sumber data ODBC tergantung pada versi MS Access yang diinstal. Buka tab System DSN dan buat koneksi sistem (Tambah).

- Kami menunjukkan bahwa kami akan terhubung ke server SQL. Klik Selesai.

- Tentukan nama dan server yang akan dihubungkan. Kemudian koneksi dengan parameter yang sama perlu dibuat di server DSC.

- Kami menunjukkan bahwa untuk terhubung ke server SQL, kami menggunakan login yang dibuat sebelumnya dengan nama DSC.

- Kami menentukan database dalam pengaturan koneksi DSC.

- Klik Selesai.

- Sebelum menyelesaikan pengaturan, kami memeriksa apakah koneksi berfungsi (Uji Sumber Data).

- Selesai

Membuat database devices.mdb di MS Access. Luncurkan MS Access dan buat database kosong bernama devices.mdb.

- Buka tab Data Eksternal dan klik Database ODBC. Di jendela yang muncul, pilih Buat tabel tertaut untuk menyambungkan ke sumber data.

- Di jendela baru, pilih tab Sumber Data Mesin dan klik OK. Di jendela baru, masukkan kredensial untuk menyambung ke server SQL.

- Pilih tabel yang perlu ditautkan. Centang kotak Simpan kata sandi dan klik OK. Simpan kata sandi setiap kali untuk ketiga tabel.

- Di indeks Anda harus memilih yang berikut ini:
— TargetName untuk tabel dbo_Devices;
— NodeName atau IPAddress untuk dbo_RegistrationData;
— NodeName atau Alamat IP untuk dbo_StatusReport.
- Mari kita ganti nama tabel di MS Access yaitu: hilangkan awalan dbo_ agar DSC dapat menggunakannya.

- Selesai

- Simpan file dan tutup MS Access. Sekarang salin file devices.mdb yang dihasilkan ke server DSC (secara default, di C:\Program Files).WindowsPowershellDSCService) dan ganti yang sudah ada dengan yang baru (jika ada).
Mengonfigurasi Server DSC untuk Menggunakan SQL
- Kami kembali ke server DSC. Untuk terhubung ke server SQL dengan file proxy kita, mari buat koneksi ODBC baru di server DSC. Nama, kedalaman bit, dan pengaturan koneksi harus sama seperti saat membuat file MDB. Anda dapat menyalin devices.mdb kosong yang sudah dikonfigurasi dari sini.
- Untuk menggunakan devices.mdb, Anda perlu membuat perubahan pada web.config server tarik DSC (defaultnya adalah C:inetpubPSDSCPullServerweb.config):
- untuk Windows Server 2012
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">- untuk Windows Server 2016
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">Ini menyelesaikan pengaturan server DSC.
Memeriksa fungsionalitas server DSC
- Mari kita periksa apakah server DSC dapat diakses melalui browser web.

- Sekarang mari kita periksa apakah server penarik DSC berfungsi dengan benar. Untuk melakukan hal ini, modul xPSDesiredStateConfiguration menyertakan skrip pullserversetuptests.ps1. Sebelum menjalankan skrip ini, Anda harus menginstal modul Powershell bernama Pester. Instal Instal-Modul -Nama Pester.
- Buka C:\Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<versi modul>DSCPullServerSetupPullServerDeploymentVerificationTest (dalam contoh, versi 8.0.0.0.0).

- Buka PullServerSetupTests.ps1 dan periksa jalur ke web.config server DSC. Jalur ke web.config, yang akan memeriksa skrip, disorot dengan warna merah. Jika perlu, kami mengubah jalur ini.

- Jalankan pullserversetuptests.ps1
Panggil-Pester.PullServerSetupTests.ps1
Все работает.
- Di SQL Management Studio kita melihat bahwa host yang dikelola mengirimkan laporan ke server pelaporan DSC dan data berakhir di database DSC di server SQL.

Itu saja. Dalam artikel berikut saya berencana untuk memberi tahu Anda cara membuat laporan berdasarkan data yang diperoleh, dan saya akan membahas masalah toleransi kesalahan dan skalabilitas.
Sumber: www.habr.com





































