ป้ายกำกับ: Configuration Management

Winget: ติดตั้งโปรแกรมทั้งเครื่องหลาย ๆ เครื่องโดยการ Import ExportWinget: ติดตั้งโปรแกรมทั้งเครื่องหลาย ๆ เครื่องโดยการ Import Export

ในโลกของการบริหารจัดการระบบ (System Administration) การติดตั้งโปรแกรมจำนวนมากบนเครื่องคอมพิวเตอร์หลายเครื่องถือเป็นงานที่ใช้เวลาและเสี่ยงต่อความผิดพลาดสูง การทำซ้ำ (Repetitive Task) เช่นนี้จึงต้องการเครื่องมืออัตโนมัติที่เชื่อถือได้

บทความนี้จะนำเสนอวิธีการใช้ Winget ซึ่งเป็น Package Manager สำหรับ Windows ในการจัดการรายการโปรแกรมที่ติดตั้ง (Configuration Management) ผ่านกระบวนการ Export และ Import โดยเราจะจำลองกระบวนการนี้ให้สอดคล้องกับหลักการของฐานข้อมูลเชิงสัมพันธ์อย่าง PostgreSQL เพื่อให้เห็นภาพการจัดการข้อมูลโปรแกรมทั้งหมดอย่างเป็นระบบและแม่นยำ

⚙️ หลักการทำงาน: การจัดการ Config ผ่านฐานข้อมูล (Schema)

แนวคิดหลักคือการไม่ติดตั้งโปรแกรมทีละตัว แต่เป็นการสร้าง ‘รายการโปรแกรมที่ต้องการ’ (Desired State) ให้เป็นรูปแบบข้อมูลที่สามารถจัดเก็บและเรียกใช้ซ้ำได้ ซึ่งเปรียบเสมือนการสร้างตาราง (Table) ใน PostgreSQL ที่เก็บ Metadata ของโปรแกรมทั้งหมด

ขั้นตอนที่ 1: การ Export (SELECT Data)

บนเครื่องต้นแบบ (Source Machine) เราจะใช้คำสั่ง Export เพื่อดึงรายการโปรแกรมที่ติดตั้งทั้งหมดออกมาเก็บไว้ในไฟล์ JSON ซึ่งไฟล์นี้ทำหน้าที่เป็น SELECT statement ที่ดึงข้อมูลทั้งหมดจากระบบมาเป็นชุดข้อมูล (Dataset)

-- 1. เปิด Windows Terminal ด้วยสิทธิ์ Administrator --

-- 2. รันคำสั่ง Export เพื่อบันทึกรายการโปรแกรม --

SQL

-- ใช้งานคำสั่ง winget export เพื่อสร้างไฟล์รายการโปรแกรม --</code>
<code>winget export --output C:\Configs\installed_packages.json;

ขั้นตอนที่ 2: การ Import (INSERT Data)

เมื่อได้ไฟล์รายการโปรแกรมแล้ว เราสามารถย้ายไฟล์นี้ไปยังเครื่องเป้าหมาย (Target Machine) และใช้คำสั่ง Import เพื่อติดตั้งโปรแกรมทั้งหมดตามรายการที่บันทึกไว้ ซึ่งเปรียบเสมือนการใช้ INSERT statement เพื่อนำข้อมูลชุดเดิมไปสร้างสถานะที่ต้องการบนเครื่องใหม่

SQL

-- ใช้งานคำสั่ง winget install จากไฟล์รายการโปรแกรมที่ Export มา --</code>
<code>winget install --source C:\Configs\installed_packages.json;

💾 ตัวอย่างการจำลองกระบวนการใน PostgreSQL

หากเรามองกระบวนการนี้ในมุมมองของ PostgreSQL เราสามารถจำลองการจัดการรายการโปรแกรม (Package List) ได้ดังนี้:

SQL

-- 1. สร้างตารางเพื่อเก็บข้อมูลโปรแกรมที่ต้องการ (Schema Definition) --</code>
<code>CREATE TABLE IF NOT EXISTS required_packages (</code>
<code>    package_id VARCHAR(100) PRIMARY KEY,</code>
<code>    package_name VARCHAR(255) NOT NULL,</code>
<code>    version VARCHAR(50)</code>
<code>);</code>

<code>-- 2. การ INSERT ข้อมูลโปรแกรมที่จำเป็นสำหรับเครื่องใหม่ (Deployment Data) --</code>
<code>INSERT INTO required_packages (package_id, package_name, version) VALUES</code>
<code>('vscode', 'Visual Studio Code', '1.80.0'),</code>
<code>('docker', 'Docker Desktop', '4.27.0'),</code>
<code>('git', 'Git CLI', '2.42.0')</code>
<code>ON CONFLICT (package_id) DO NOTHING;</code>

<code>-- 3. การ SELECT เพื่อยืนยันว่าโปรแกรมทั้งหมดถูกติดตั้งแล้ว --</code>
<code>SELECT * FROM required_packages;

✅ บทสรุป: ประโยชน์ของการจัดการ Config ด้วย Winget

การใช้ Winget ในรูปแบบ Export/Import ไม่เพียงแต่ช่วยลดเวลาในการติดตั้งโปรแกรมเท่านั้น แต่ยังช่วยให้การจัดการ Configuration ของเครื่องคอมพิวเตอร์ทั้งองค์กรเป็นไปอย่างมีมาตรฐาน (Standardized) และสามารถย้อนกลับ (Reproducible) ได้ทุกเมื่อ การทำความเข้าใจกระบวนการนี้จึงเทียบเท่ากับการจัดการ Schema และ Data ในระบบฐานข้อมูลขนาดใหญ่ ซึ่งเป็นหัวใจสำคัญของงาน Senior Architect ในการสร้างระบบที่แข็งแกร่งและขยายขนาดได้ (Scalability)