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
Saya menemukan cara ini: bagi yang menggunakan Windows Server 2012 dan 2016, bisa
Catatan: Untuk Windows Server 2016 harus menggunakan
Saya tidak akan menjelaskan secara rinci tentang proses penerapan server tarik DSC, ini dijelaskan dengan sangat baik
-
UseSecurityBestPractices = $false
Jika 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 = $true
Jika 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 buat akun untuk terhubung ke database ini. Pertama, periksa apakah server SQL mengizinkan otentikasi akun Windows dan 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.
Devices.mdb yang akan kita kerjakan 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 kita salin devices.mdb yang dihasilkan ke server DSC (secara default di C: Program FilesWindowsPowershellDSCService) dan ganti yang sudah ada dengan itu (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 WindowsServer 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 WindowsServer 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<module version>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