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
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ể
Lưu ý: Đối với Windows Server 2016 bạn phải sử dụng
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
-
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).
-
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.
- 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
- Hãy tạo một cơ sở dữ liệu SQL trống có tên DSC.
- 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.
- 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.
- Thực hiện.
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.
- Để nhập dữ liệu, hãy chạy Trình hướng dẫn Xuất và Nhập SQL Server.
- 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.
- Chọn tệp mà chúng tôi nhập sơ đồ.
- 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.
- 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).
- 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).
- 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.
- Chọn hộp kiểm Chạy ngay lập tức và nhấp vào Kết thúc.
- Thực hiện.
- Kết quả là các bảng sẽ xuất hiện trong cơ sở dữ liệu DSC.
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:
- 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).
- 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.
- 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.
- 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.
- Chúng tôi chỉ định cơ sở dữ liệu trong cài đặt kết nối DSC.
- Bấm vào Kết thúc.
- 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).
- Thực hiện.
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.
- 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.
- 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.
- 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.
- 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;
— NodeName hoặc IPAddress cho dbo_RegistrationData;
— NodeName hoặc IPAddress cho dbo_StatusReport. - 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.
- Thực hiện.
- 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
- 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.
- Để 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
- 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.
- 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.
- Mở C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<module version>DSCPullServerSetupPullServerDeploymentVerificationTest (trong phiên bản ví dụ 8.0.0.0.0).
- 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.
- Chạy pullserversetuptests.ps1
Gọi-Pester.PullServerSetupTests.ps1
Quan trọng. - 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.
Đó 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