Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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 janji dukungan bawaan hanya di Windows Server 2019 atau di build Windows server 1803. Ambil data juga menggunakan penyedia OleDB Tidak akan berhasilkarena DSC Server menggunakan parameter bernama yang tidak sepenuhnya didukung oleh OleDbCommand.

Saya menemukan cara ini: bagi yang menggunakan Windows Server 2012 dan 2016, bisa mengatur 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 2016 harus menggunakan AccessDatabaseEngine2016x86karena 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 di sini. 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:

  1. 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).

  2. Enable32BitAppOnWin64   = $true

    Jika Anda tidak melakukan perubahan ini, Anda tidak akan dapat menjalankan server AppPool DSC di IIS dengan WSUS.

  3. 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

  1. Mari kita buat database SQL kosong bernama DSC.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  2. Mari buat akun untuk terhubung ke database ini. Pertama, periksa apakah server SQL mengizinkan otentikasi akun Windows dan SQL.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  4. Selesai

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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.

  1. Untuk mengimpor data, jalankan Wizard Impor dan Ekspor SQL Server.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  3. Pilih file tempat kita mengimpor diagram.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  8. Centang kotak Jalankan Segera dan klik Selesai.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  9. Selesai

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  10. Hasilnya, tabel akan muncul di database DSC.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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:

  1. Buka alat Administratif. Kami memilih sumber data ODBC tergantung pada versi MS Access yang diinstal. Buka tab System DSN dan buat koneksi sistem (Tambah).

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  5. Kami menentukan database dalam pengaturan koneksi DSC.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  6. Klik Selesai.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  8. Selesai

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

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

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  4. Di indeks Anda harus memilih yang berikut ini:
    — TargetName untuk tabel dbo_Devices;

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

    — NodeName atau IPAddress untuk dbo_RegistrationData;

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

    — NodeName atau Alamat IP untuk dbo_StatusReport.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  5. Mari kita ganti nama tabel di MS Access yaitu: hilangkan awalan dbo_ agar DSC dapat menggunakannya.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  6. Selesai

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  7. 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

  1. 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.
  2. 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

  1. Mari kita periksa apakah server DSC dapat diakses melalui browser web.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  2. 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.
  3. Buka C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<module version>DSCPullServerSetupPullServerDeploymentVerificationTest (dalam contoh versi 8.0.0.0.0).

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  4. 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.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  5. Jalankan pullserversetuptests.ps1
    Panggil-Pester.PullServerSetupTests.ps1
    Все работает.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database SQL

  6. 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.

    Konfigurasi dan file Status yang Diinginkan PowerShell: bagian 1. Mengonfigurasi DSC Pull Server agar berfungsi dengan database 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

Tambah komentar