Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

Cấu hình trạng thái mong muốn của PowerShell (DSC) đơn giản hóa đáng kể công việc triển khai và định cấu hình hệ điều hành, vai trò máy chủ và ứng dụng khi bạn có hàng trăm máy chủ.

Nhưng khi sử dụng DSC tại chỗ, tức là. không có trong MS Azure, có một số sắc thái. Chúng đặc biệt đáng chú ý nếu tổ chức có quy mô lớn (từ 300 máy trạm và máy chủ) và chưa khám phá ra thế giới container:

  • Không có báo cáo đầy đủ về tình trạng của hệ thống. Nếu cấu hình được yêu cầu chưa được áp dụng trên một số máy chủ thì nếu không có những báo cáo này, chúng tôi sẽ không biết về nó. Việc lấy thông tin từ máy chủ báo cáo tích hợp là khá khó khăn và đối với một số lượng lớn máy chủ, việc này cũng có thể mất nhiều thời gian.
  • Thiếu khả năng mở rộng và khả năng chịu lỗi. Không thể xây dựng một nhóm máy chủ web kéo DSC có một cơ sở dữ liệu có khả năng chịu lỗi duy nhất và một bộ lưu trữ chung các tệp mof cho cấu hình, mô-đun và khóa đăng ký.

Hôm nay tôi sẽ cho bạn biết cách giải quyết vấn đề đầu tiên và lấy dữ liệu để báo cáo. Mọi thứ sẽ đơn giản hơn nếu SQL có thể được sử dụng làm cơ sở dữ liệu. bệnh đa xơ cứng lời hứa chỉ hỗ trợ tích hợp trong Windows Server 2019 hoặc trong bản dựng Windows server 1803. Tìm nạp dữ liệu bằng nhà cung cấp OleDB sẽ không làm việcvì Máy chủ DSC sử dụng tham số được đặt tên không được OleDbCommand hỗ trợ đầy đủ.

Tôi đã tìm thấy phương pháp này: đối với những người sử dụng Windows Server 2012 và 2016, bạn có thể thiết lập sử dụng cơ sở dữ liệu SQL làm phụ trợ cho máy chủ truy vấn DSC. Để thực hiện việc này, chúng tôi sẽ tạo một “proxy” ở dạng tệp .mdb với các bảng được liên kết, tệp này sẽ chuyển hướng dữ liệu nhận được từ báo cáo của khách hàng đến cơ sở dữ liệu máy chủ SQL.

Lưu ý: Đối với Windows Server 2016 bạn phải sử dụng AccessDatabaseEngine2016x86vì Microsoft.Jet.OLEDB.4.0 không còn được hỗ trợ.

Tôi sẽ không đi sâu vào chi tiết về quá trình triển khai pull server DSC, nó được mô tả rất rõ ràng đây. Tôi sẽ chỉ lưu ý một vài điểm. Nếu chúng ta triển khai trình kéo DSC trên cùng một máy chủ web với WSUS hoặc Kaspersky Security Center, thì trong tập lệnh tạo cấu hình, chúng ta cần thay đổi các tham số sau:

  1. UseSecurityBestPractices     = $false

    Nếu không, TLS 1.0 sẽ bị tắt và bạn sẽ không thể kết nối với cơ sở dữ liệu SQL. Kaspersky Security Center cũng sẽ không hoạt động (vấn đề cần được giải quyết trong Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64   = $true

    Nếu không thực hiện thay đổi này, bạn sẽ không thể chạy máy chủ AppPool DSC trên IIS bằng WSUS.

  3. Khi cài đặt Máy chủ DSC với WSUS, hãy tắt bộ đệm ẩn tĩnh và động cho trang DSC.

Hãy chuyển sang thiết lập máy chủ DSC để sử dụng cơ sở dữ liệu SQL.

Tạo cơ sở dữ liệu SQL

  1. Hãy tạo một cơ sở dữ liệu SQL trống có tên DSC.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  2. Hãy tạo một tài khoản để kết nối với cơ sở dữ liệu này. Trước tiên, hãy kiểm tra xem máy chủ SQL có cho phép xác thực cả tài khoản Windows và SQL hay không.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  3. Chuyển đến phần Bản đồ người dùng. Chọn cơ sở dữ liệu, trong trường hợp này là DSC. Chúng tôi cung cấp quyền của chủ sở hữu cơ sở dữ liệu.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  4. Thực hiện.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

Tạo lược đồ cho cơ sở dữ liệu DSC

Có hai cách để tạo lược đồ cho cơ sở dữ liệu DSC:

  • độc lập, thông qua tập lệnh 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
  • nhập dữ liệu từ devices.mdb trống như một phần của mô-đun PS PSDesiredStateConfiguration thông qua Trình hướng dẫn nhập dữ liệu SQL.

    Devices.mdb mà chúng ta sẽ làm việc nằm trong C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Để nhập dữ liệu, hãy chạy Trình hướng dẫn Xuất và Nhập SQL Server.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  2. Chúng tôi chọn nơi chúng tôi sẽ lấy dữ liệu - trong trường hợp của chúng tôi đó là cơ sở dữ liệu Microsoft Access. Bấm tiếp.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  3. Chọn tệp mà chúng tôi nhập sơ đồ.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  4. Chúng tôi chỉ ra nơi cần nhập - đối với chúng tôi đó là cơ sở dữ liệu SQL.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  5. Chọn máy chủ SQL (Tên máy chủ) và cơ sở dữ liệu mà chúng tôi sẽ nhập dữ liệu (DataBase).

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  6. Chọn tùy chọn Sao chép dữ liệu từ một hoặc nhiều bảng hoặc dạng xem (sao chép dữ liệu từ bảng hoặc dạng xem).

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  7. Chúng tôi chọn các bảng mà chúng tôi sẽ nhập lược đồ cơ sở dữ liệu.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  8. Chọn hộp kiểm Chạy ngay lập tức và nhấp vào Kết thúc.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  9. Thực hiện.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  10. Kết quả là các bảng sẽ xuất hiện trong cơ sở dữ liệu DSC.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

Thiết lập tệp “proxy” .mdb

Tạo kết nối ODBC tới máy chủ SQL. Giả định rằng MS Access chưa được cài đặt trên máy chủ chạy DSC, do đó việc thiết lập cơ sở dữ liệu.mdb được thực hiện trên máy chủ trung gian có cài đặt MS Access.

Hãy tạo kết nối ODBC hệ thống với máy chủ SQL (bitness kết nối phải khớp với bitness MS Access - 64 hoặc 32). Nó có thể được tạo bằng cách sử dụng:
- Lệnh ghép ngắn 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

— hoặc thủ công, sử dụng trình hướng dẫn kết nối:

  1. Mở công cụ quản trị. Chúng tôi chọn nguồn dữ liệu ODBC tùy thuộc vào phiên bản MS Access đã cài đặt. Chuyển đến tab DSN hệ thống và tạo kết nối hệ thống (Thêm).

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  2. Chúng tôi cho biết rằng chúng tôi sẽ kết nối với máy chủ SQL. Bấm vào Kết thúc.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  3. Chỉ định tên và máy chủ để kết nối. Sau đó, một kết nối có cùng tham số sẽ cần được tạo trên máy chủ DSC.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  4. Chúng tôi chỉ ra rằng để kết nối với máy chủ SQL, chúng tôi sử dụng thông tin đăng nhập được tạo trước đó với tên DSC.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  5. Chúng tôi chỉ định cơ sở dữ liệu trong cài đặt kết nối DSC.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  6. Bấm vào Kết thúc.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  7. Trước khi hoàn tất thiết lập, chúng tôi kiểm tra xem kết nối có hoạt động không (Nguồn dữ liệu thử nghiệm).

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  8. Thực hiện.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

Tạo cơ sở dữ liệu devices.mdb trong MS Access. Khởi chạy MS Access và tạo cơ sở dữ liệu trống có tên devices.mdb.

Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  1. Chuyển đến tab Dữ liệu ngoài và nhấp vào Cơ sở dữ liệu ODBC. Trong cửa sổ xuất hiện, chọn Tạo bảng được liên kết để kết nối với nguồn dữ liệu.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  2. Trong cửa sổ mới, chọn tab Nguồn dữ liệu máy và nhấn OK. Trong cửa sổ mới, nhập thông tin đăng nhập để kết nối với máy chủ SQL.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  3. Chọn các bảng cần liên kết. Chọn hộp Lưu mật khẩu và nhấp vào OK. Lưu mật khẩu mỗi lần cho cả ba bảng.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  4. Trong các chỉ mục, bạn cần chọn như sau:
    — Tên mục tiêu cho bảng dbo_Devices;

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

    — NodeName hoặc IPAddress cho dbo_RegistrationData;

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

    — NodeName hoặc IPAddress cho dbo_StatusReport.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  5. Hãy đổi tên các bảng trong MS Access, cụ thể là: bỏ tiền tố dbo_ để DSC có thể sử dụng.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  6. Thực hiện.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  7. Lưu tệp và đóng MS Access. Bây giờ chúng tôi sao chép devices.mdb kết quả vào máy chủ DSC (theo mặc định trong C: Program FilesWindowsPowershellDSCService) và thay thế cái hiện có bằng nó (nếu nó tồn tại).

Định cấu hình máy chủ DSC để sử dụng SQL

  1. Chúng tôi quay trở lại máy chủ DSC. Để kết nối với máy chủ SQL bằng tệp proxy của chúng tôi, hãy tạo kết nối ODBC mới trên máy chủ DSC. Tên, độ sâu bit và cài đặt kết nối phải giống như khi tạo tệp MDB. Bạn có thể sao chép devices.mdb trống đã được cấu hình từ đây.
  2. Để sử dụng devices.mdb, bạn cần thực hiện các thay đổi đối với web.config của máy chủ kéo DSC (mặc định là C:inetpubPSDSCPullServerweb.config):

- dành cho 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;">

- dành cho 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;">

Điều này hoàn tất việc thiết lập máy chủ DSC.

Kiểm tra chức năng của máy chủ DSC

  1. Hãy kiểm tra xem máy chủ DSC có thể truy cập được thông qua trình duyệt web hay không.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  2. Bây giờ hãy kiểm tra xem máy chủ kéo DSC có hoạt động chính xác không. Để thực hiện việc này, mô-đun xPSDesiredStateConfiguration bao gồm tập lệnh pullserversetuptests.ps1. Trước khi chạy tập lệnh này, bạn phải cài đặt mô-đun Powershell có tên Pester. Cài đặt nó Install-Module -Name Pester.
  3. Mở C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<module version>DSCPullServerSetupPullServerDeploymentVerificationTest (trong phiên bản ví dụ 8.0.0.0.0).

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  4. Mở PullServerSetupTests.ps1 và kiểm tra đường dẫn đến web.config của máy chủ DSC. Đường dẫn đến web.config, nơi sẽ kiểm tra tập lệnh, được đánh dấu màu đỏ. Nếu cần thiết, chúng tôi thay đổi đường dẫn này.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  5. Chạy pullserversetuptests.ps1
    Gọi-Pester.PullServerSetupTests.ps1
    Quan trọng.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

  6. Trong SQL Management Studio, chúng tôi thấy rằng các máy chủ được quản lý sẽ gửi báo cáo đến máy chủ báo cáo DSC và dữ liệu sẽ xuất hiện trong cơ sở dữ liệu DSC trên máy chủ SQL.

    Tệp và cấu hình trạng thái mong muốn của PowerShell: phần 1. Định cấu hình Máy chủ kéo DSC để hoạt động với cơ sở dữ liệu SQL

Đó là tất cả. Trong các bài viết sau, tôi dự định hướng dẫn bạn cách xây dựng báo cáo dựa trên dữ liệu thu được và tôi sẽ đề cập đến các vấn đề về khả năng chịu lỗi và khả năng mở rộng.

Nguồn: www.habr.com

Thêm một lời nhận xét