PowerShell Desired State Configuration (DSC) ช่วยให้งานปรับใช้และกำหนดค่าระบบปฏิบัติการ บทบาทของเซิร์ฟเวอร์ และแอปพลิเคชันต่างๆ ง่ายขึ้นอย่างมาก เมื่อคุณมีเซิร์ฟเวอร์หลายร้อยเครื่อง
แต่เมื่อใช้ DSC ภายในองค์กร เช่น ไม่ได้อยู่ใน MS Azure มีความแตกต่างสองสามประการ จะสังเกตเห็นได้ชัดเจนเป็นพิเศษหากองค์กรมีขนาดใหญ่ (จากเวิร์กสเตชันและเซิร์ฟเวอร์ 300 เครื่อง) และยังไม่ได้ค้นพบโลกแห่งคอนเทนเนอร์:
- ไม่มีรายงานฉบับสมบูรณ์เกี่ยวกับสถานะของระบบ หากไม่ได้ใช้การกำหนดค่าที่จำเป็นกับเซิร์ฟเวอร์บางเครื่อง หากไม่มีรายงานเหล่านี้ เราก็จะไม่ทราบเรื่องนี้ การรับข้อมูลจากเซิร์ฟเวอร์การรายงานในตัวนั้นค่อนข้างยากและสำหรับโฮสต์จำนวนมากก็อาจใช้เวลานานเช่นกัน
- ขาดความสามารถในการปรับขนาดและความทนทานต่อข้อผิดพลาด เป็นไปไม่ได้ที่จะสร้างฟาร์มของเว็บเซิร์ฟเวอร์ดึง DSC ที่จะมีฐานข้อมูลที่ทนต่อข้อผิดพลาดเพียงฐานข้อมูลเดียว และพื้นที่จัดเก็บไฟล์ MOF ทั่วไปสำหรับการกำหนดค่า โมดูล และคีย์การลงทะเบียน
วันนี้ฉันจะบอกคุณว่าคุณสามารถแก้ไขปัญหาแรกและรับข้อมูลสำหรับการรายงานได้อย่างไร ทุกอย่างจะง่ายขึ้นถ้า SQL สามารถใช้เป็นฐานข้อมูลได้ นางสาว
ฉันพบวิธีนี้: สำหรับผู้ที่ใช้ Windows Server 2012 และ 2016 คุณสามารถทำได้
หมายเหตุ: สำหรับ Windows Server 2016 คุณต้องใช้
ฉันจะไม่ลงรายละเอียดเกี่ยวกับกระบวนการปรับใช้เซิร์ฟเวอร์ดึง DSC เนื่องจากมีการอธิบายไว้เป็นอย่างดี
-
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):
- สำหรับวินโดวส์เซิร์ฟเวอร์ 2012
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">
- สำหรับวินโดวส์เซิร์ฟเวอร์ 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