
PowerShell Desired State Configuration (DSC) ช่วยให้งานปรับใช้และกำหนดค่าระบบปฏิบัติการ บทบาทของเซิร์ฟเวอร์ และแอปพลิเคชันต่างๆ ง่ายขึ้นอย่างมาก เมื่อคุณมีเซิร์ฟเวอร์หลายร้อยเครื่อง
แต่เมื่อใช้ DSC ภายในองค์กร เช่น ไม่ได้อยู่ใน MS Azure มีความแตกต่างสองสามประการ จะสังเกตเห็นได้ชัดเจนเป็นพิเศษหากองค์กรมีขนาดใหญ่ (จากเวิร์กสเตชันและเซิร์ฟเวอร์ 300 เครื่อง) และยังไม่ได้ค้นพบโลกแห่งคอนเทนเนอร์:
- ไม่มีรายงานฉบับสมบูรณ์เกี่ยวกับสถานะของระบบ หากไม่ได้ใช้การกำหนดค่าที่จำเป็นกับเซิร์ฟเวอร์บางเครื่อง หากไม่มีรายงานเหล่านี้ เราก็จะไม่ทราบเรื่องนี้ การรับข้อมูลจากเซิร์ฟเวอร์การรายงานในตัวนั้นค่อนข้างยากและสำหรับโฮสต์จำนวนมากก็อาจใช้เวลานานเช่นกัน
- ขาดความสามารถในการปรับขนาดและความทนทานต่อข้อผิดพลาด เป็นไปไม่ได้ที่จะสร้างฟาร์มของเว็บเซิร์ฟเวอร์ดึง DSC ที่จะมีฐานข้อมูลที่ทนต่อข้อผิดพลาดเพียงฐานข้อมูลเดียว และพื้นที่จัดเก็บไฟล์ MOF ทั่วไปสำหรับการกำหนดค่า โมดูล และคีย์การลงทะเบียน
วันนี้ฉันจะบอกคุณว่าคุณสามารถแก้ไขปัญหาแรกและรับข้อมูลสำหรับการรายงานได้อย่างไร ทุกอย่างจะง่ายขึ้นถ้า SQL สามารถใช้เป็นฐานข้อมูลได้ นางสาว встроенную поддержку только в Windows Server 2019 или в build Windows server 1803. Забирать данные с использованием OleDB provider тоже เนื่องจากเซิร์ฟเวอร์ DSC ใช้พารามิเตอร์ที่มีชื่อซึ่ง OleDbCommand ไม่รองรับอย่างสมบูรณ์
Нашел вот такой способ: тем, кто использует Windows Server 2012 и 2016, можно การใช้ฐานข้อมูล SQL เป็นแบ็กเอนด์สำหรับเซิร์ฟเวอร์การสืบค้น DSC ในการดำเนินการนี้ เราจะสร้าง "พร็อกซี" ในรูปแบบของไฟล์ .mdb พร้อมตารางที่เกี่ยวข้อง ซึ่งจะเปลี่ยนเส้นทางข้อมูลที่ได้รับจากรายงานไคลเอ็นต์ไปยังฐานข้อมูลเซิร์ฟเวอร์ SQL
Примечание: для Windows Server 2016 необходимо использовать เนื่องจาก Microsoft.Jet.OLEDB.4.0 ไม่ได้รับการสนับสนุนอีกต่อไป
ฉันจะไม่ลงรายละเอียดเกี่ยวกับกระบวนการปรับใช้เซิร์ฟเวอร์ดึง DSC เนื่องจากมีการอธิบายไว้เป็นอย่างดี . ฉันจะสังเกตสองสามประเด็น หากเราปรับใช้ตัวดึง DSC บนเว็บเซิร์ฟเวอร์เดียวกันกับ WSUS หรือ Kaspersky Security Center จากนั้นในสคริปต์การสร้างการกำหนดค่า เราจำเป็นต้องเปลี่ยนพารามิเตอร์ต่อไปนี้:
UseSecurityBestPractices = $falseมิฉะนั้น TLS 1.0 จะถูกปิดใช้งานและคุณจะไม่สามารถเชื่อมต่อกับฐานข้อมูล SQL ได้ Kaspersky Security Center จะไม่ทำงานเช่นกัน (ปัญหาควรได้รับการแก้ไขใน Kaspersky Security Center v11)
Enable32BitAppOnWin64 = $trueถ้าคุณไม่ทำการเปลี่ยนแปลงนี้ คุณจะไม่สามารถเรียกใช้เซิร์ฟเวอร์ AppPool DSC บน IIS ด้วย WSUS ได้
- เมื่อติดตั้งเซิร์ฟเวอร์ DSC ด้วย WSUS ให้ปิดใช้งานการแคชแบบคงที่และไดนามิกสำหรับไซต์ DSC
มาดูการตั้งค่าเซิร์ฟเวอร์ DSC เพื่อใช้ฐานข้อมูล SQL กันดีกว่า
การสร้างฐานข้อมูล SQL
- มาสร้างฐานข้อมูล SQL เปล่าชื่อ DSC กัน


- Создадим учетную запись для подключения к этой базе данных. Предварительно проверьте, что на SQL-сервере разрешена аутентификация учетных записей как Windows, так и SQL.


- ไปที่ส่วนการแมปผู้ใช้ เลือกฐานข้อมูล ในกรณีนี้คือ DSC เราให้สิทธิ์แก่เจ้าของฐานข้อมูล

- ทำ

การสร้าง Schema สำหรับฐานข้อมูล DSC
มีสองวิธีในการสร้างสคีมาสำหรับฐานข้อมูล DSC:
- อย่างอิสระผ่านสคริปต์ 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 - นำเข้าข้อมูลจาก devices.mdb ที่ว่างเปล่าโดยเป็นส่วนหนึ่งของโมดูล PS PSDesiredStateConfiguration ผ่านตัวช่วยสร้างการนำเข้าข้อมูล SQL
Devices.mdb, с которым мы будем работать, находится в C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- หากต้องการนำเข้าข้อมูล ให้เรียกใช้ตัวช่วยสร้างการนำเข้าและส่งออกเซิร์ฟเวอร์ SQL

- เราเลือกว่าจะรับข้อมูลจากที่ไหน - ในกรณีของเราคือฐานข้อมูล Microsoft Access คลิกถัดไป

- เลือกไฟล์ที่เรานำเข้าไดอะแกรม

- เราระบุตำแหน่งที่จะนำเข้า - สำหรับเราคือฐานข้อมูล SQL

- เลือกเซิร์ฟเวอร์ SQL (ชื่อเซิร์ฟเวอร์) และฐานข้อมูลที่เราจะนำเข้าข้อมูล (DataBase)

- เลือกตัวเลือกคัดลอกข้อมูลจากตารางหรือมุมมองอย่างน้อยหนึ่งรายการ (การคัดลอกข้อมูลจากตารางหรือมุมมอง)

- เราเลือกตารางที่เราจะนำเข้าสคีมาฐานข้อมูล

- ทำเครื่องหมายที่ช่อง Run Immediately แล้วคลิก Finish

- ทำ

- ด้วยเหตุนี้ ตารางจึงควรปรากฏในฐานข้อมูล DSC

การตั้งค่าไฟล์ .mdb “พรอกซี”
การสร้างการเชื่อมต่อ ODBC ไปยังเซิร์ฟเวอร์ SQL สันนิษฐานว่าไม่ได้ติดตั้ง MS Access บนเซิร์ฟเวอร์ที่ใช้ DSC ดังนั้นการตั้งค่า Databases.mdb จึงดำเนินการบนโฮสต์ระดับกลางที่ติดตั้ง MS Access ไว้
มาสร้างการเชื่อมต่อ ODBC ของระบบกับเซิร์ฟเวอร์ SQL (บิตเนสการเชื่อมต่อจะต้องตรงกับบิตเนสของ MS Access - 64 หรือ 32) สามารถสร้างได้โดยใช้:
- Powershell cmdlet:
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— หรือด้วยตนเองโดยใช้วิซาร์ดการเชื่อมต่อ:
- เปิดเครื่องมือการดูแลระบบ เราเลือกแหล่งข้อมูล ODBC ขึ้นอยู่กับเวอร์ชันของ MS Access ที่ติดตั้ง ไปที่แท็บ System DSN และสร้างการเชื่อมต่อระบบ (เพิ่ม)

- เราระบุว่าเราจะเชื่อมต่อกับเซิร์ฟเวอร์ SQL คลิกเสร็จสิ้น

- ระบุชื่อและเซิร์ฟเวอร์ที่จะเชื่อมต่อ จากนั้นจะต้องสร้างการเชื่อมต่อกับพารามิเตอร์เดียวกันบนเซิร์ฟเวอร์ DSC

- เราระบุว่าในการเชื่อมต่อกับเซิร์ฟเวอร์ SQL เราใช้การเข้าสู่ระบบที่สร้างไว้ก่อนหน้านี้ด้วยชื่อ DSC

- เราระบุฐานข้อมูลในการตั้งค่าการเชื่อมต่อ DSC

- คลิกเสร็จสิ้น

- ก่อนเสร็จสิ้นการตั้งค่า เราจะตรวจสอบว่าการเชื่อมต่อใช้งานได้ (ทดสอบแหล่งข้อมูล)

- ทำ

การสร้างฐานข้อมูล devices.mdb ใน MS Access เปิด MS Access และสร้างฐานข้อมูลว่างชื่อ devices.mdb

- ไปที่แท็บข้อมูลภายนอกแล้วคลิกที่ฐานข้อมูล ODBC ในหน้าต่างที่ปรากฏขึ้น ให้เลือกสร้างตารางที่เชื่อมโยงเพื่อเชื่อมต่อกับแหล่งข้อมูล

- ในหน้าต่างใหม่ ให้เลือกแท็บ Machine Data Source และคลิก OK ในหน้าต่างใหม่ ให้ป้อนข้อมูลประจำตัวเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ SQL

- เลือกตารางที่ต้องการเชื่อมโยง ทำเครื่องหมายที่ช่องบันทึกรหัสผ่านแล้วคลิกตกลง บันทึกรหัสผ่านทุกครั้งสำหรับทั้งสามตาราง

- ในดัชนีคุณต้องเลือกสิ่งต่อไปนี้:
— TargetName สำหรับตาราง dbo_Devices
— NodeName หรือ IPAddress สำหรับ dbo_RegistrationData;
— NodeName หรือ IPAddress สำหรับ dbo_StatusReport
- มาเปลี่ยนชื่อตารางใน MS Access กันดีกว่า: ลบคำนำหน้า dbo_ เพื่อให้ DSC สามารถใช้งานได้

- ทำ

- Сохраняем файл и закрываем MS Access. Теперь копируем полученный devices.mdb на DSC-сервер (по умолчанию в C:Program FilesWindowsPowershellDSCService) и заменяем им существующий (если он есть).
การกำหนดค่าเซิร์ฟเวอร์ DSC เพื่อใช้ SQL
- เรากลับไปที่เซิร์ฟเวอร์ DSC หากต้องการเชื่อมต่อกับเซิร์ฟเวอร์ SQL ด้วยไฟล์พร็อกซีของเรา เรามาสร้างการเชื่อมต่อ ODBC ใหม่บนเซิร์ฟเวอร์ DSC กันดีกว่า ชื่อ ความลึกบิต และการตั้งค่าการเชื่อมต่อจะต้องเหมือนกับเมื่อสร้างไฟล์ MDB คุณสามารถคัดลอก devices.mdb เปล่าที่กำหนดค่าไว้แล้วได้จากที่นี่
- หากต้องการใช้ devices.mdb คุณต้องเปลี่ยนแปลง web.config ของเซิร์ฟเวอร์ดึง DSC (ค่าเริ่มต้นคือ C:inetpubPSDSCPullServerweb.config):
- สำหรับ 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;">- สำหรับ 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;">การดำเนินการนี้จะทำให้การตั้งค่าเซิร์ฟเวอร์ DSC เสร็จสมบูรณ์
ตรวจสอบการทำงานของเซิร์ฟเวอร์ DSC
- ตรวจสอบว่าเซิร์ฟเวอร์ DSC สามารถเข้าถึงได้ผ่านเว็บเบราว์เซอร์

- ตอนนี้เรามาตรวจสอบว่าเซิร์ฟเวอร์ดึง DSC ทำงานอย่างถูกต้องหรือไม่ เมื่อต้องการทำเช่นนี้ โมดูล xPSDesiredStateConfiguration จะมีสคริปต์ pullserversetuptests.ps1 ก่อนที่จะรันสคริปต์นี้ คุณต้องติดตั้งโมดูล Powershell ชื่อ Pester ติดตั้ง ติดตั้งโมดูล - ชื่อเพสเตอร์
- Открываем C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<версия модуля>DSCPullServerSetupPullServerDeploymentVerificationTest (в примере версия 8.0.0.0.0).

- เปิด PullServerSetupTests.ps1 และตรวจสอบเส้นทางไปยัง web.config ของเซิร์ฟเวอร์ DSC เส้นทางไปยัง web.config ซึ่งจะตรวจสอบสคริปต์นั้นจะถูกเน้นด้วยสีแดง หากจำเป็นเราจะเปลี่ยนเส้นทางนี้

- เรียกใช้ pullserversetuptests.ps1
เรียกใช้-Pester.PullServerSetupTests.ps1
Всеработает
- ใน SQL Management Studio เราเห็นว่าโฮสต์ที่ได้รับการดูแลส่งรายงานไปยังเซิร์ฟเวอร์การรายงาน DSC และข้อมูลจะจบลงในฐานข้อมูล DSC บนเซิร์ฟเวอร์ SQL

นั่นคือทั้งหมดที่ ในบทความต่อไปนี้ ฉันวางแผนที่จะบอกวิธีสร้างรายงานเกี่ยวกับข้อมูลที่ได้รับ และฉันจะกล่าวถึงประเด็นต่างๆ เกี่ยวกับความทนทานต่อข้อผิดพลาดและความสามารถในการปรับขนาด
ที่มา: will.com





































