หมวดหมู่: Configuration Management

YAML (YAML Ain’t Markup Language )YAML (YAML Ain’t Markup Language )

ในโลกของการพัฒนาซอฟต์แวร์และการบริหารจัดการระบบ (DevOps) การจัดการไฟล์ Configuration ที่ถูกต้องและอ่านง่ายถือเป็นสิ่งสำคัญอย่างยิ่ง YAML (YAML Ain’t Markup Language) คือรูปแบบการเขียนข้อมูล (Data Serialization Format) ที่ได้รับความนิยมสูงสุด เนื่องจากถูกออกแบบมาให้มีโครงสร้างที่เน้นให้ “มนุษย์อ่านง่าย” (Human-readable) ต่างจาก JSON ที่เน้นเครื่องจักรอ่านได้มากกว่า

YAML ไม่ใช่ภาษาโปรแกรม แต่เป็นมาตรฐานในการจัดเก็บข้อมูลที่ใช้กำหนดค่าระบบ (Configuration) ต่างๆ เช่น การกำหนดบริการใน Docker Compose, การจัดการ Playbook ใน Ansible, หรือการกำหนดโครงสร้างระบบที่เกี่ยวข้องกับ PostgreSQL

🏗️ หลักการพื้นฐานของ YAML สำหรับระบบโครงสร้างพื้นฐาน

หัวใจสำคัญของ YAML คือการใช้ “การย่อหน้า” (Indentation) เพื่อกำหนดโครงสร้างและความสัมพันธ์ของข้อมูล แทนการใช้ปีกกา `{}` หรือเครื่องหมายแท็ก `<>` เหมือนใน JSON หรือ XML

Key-Value Pairs

ข้อมูลพื้นฐานที่สุดคือคู่ของ Key และ Value โดยต้องมีเครื่องหมายโคลอน `:` และช่องว่างตามหลังเสมอ

YAML

# ตัวอย่างการกำหนดค่าบริการฐานข้อมูล (Conceptual YAML)</code>
service:
  database:
    type: postgresql
    version: 16
  connection:
    host: localhost
    port: 5432

Lists (รายการ)

การสร้างรายการจะใช้เครื่องหมายขีดกลาง `-` นำหน้าแต่ละรายการ

YAML

# ตัวอย่างการกำหนดรายการ Extensions ที่ต้องการติดตั้งใน PG</code>
extensions:
  - pg_trgm
  - pg_repack
  - uuid-ossp

Nested Objects (การซ้อนโครงสร้าง)

ใช้การย่อหน้าเพื่อระบุว่าข้อมูลชุดใดเป็นส่วนย่อยของหัวข้อหลัก (Parent Key)

YAML

# การระบุรายละเอียดการเชื่อมต่อของ PostgreSQL</code>
postgresql_settings:
  user: admin_user
  roles:
    - read_only
    - superuser
  backup_schedule: daily

💡 การประยุกต์ใช้ YAML กับ PostgreSQL ในทางปฏิบัติ

แม้ว่า YAML จะเป็นแค่ไฟล์ Config แต่ก็มีบทบาทสำคัญในการกำหนดสภาพแวดล้อมที่ PostgreSQL จะทำงาน ตัวอย่างเช่น การใช้ YAML ใน Docker Compose เพื่อสร้าง Container สำหรับ PostgreSQL และการกำหนด Network ให้สามารถสื่อสารกันได้

เมื่อระบบถูกตั้งค่าด้วย YAML แล้ว ขั้นตอนต่อไปคือการรันคำสั่ง SQL เพื่อตรวจสอบหรือจัดการข้อมูลจริง ตัวอย่างการตรวจสอบสถานะการเชื่อมต่อของ PostgreSQL หลังจากการ Deploy ผ่าน Config ที่กำหนดด้วย YAML:

SQL

-- ตัวอย่าง SQL ที่รันเพื่อตรวจสอบสถานะของ Database ที่กำหนดค่าไว้ใน YAML</code>
SELECT current_database(), current_user, version();

การจัดการข้อความยาว (Multi-line Strings)

หากคุณมีสคริปต์ SQL หรือคำสั่งที่ยาวมาก ๆ ซึ่งต้องใส่ในไฟล์ Config (เช่น Playbook) YAML อนุญาตให้ใช้เครื่องหมาย Pipe `|` เพื่อรักษาการขึ้นบรรทัดใหม่ (Literal Block) ทำให้โค้ดอ่านง่ายและถูกต้องตามไวยากรณ์

YAML

sql_script_for_init:
  | 
  CREATE TABLE IF NOT EXISTS users (
  |   id SERIAL PRIMARY KEY,
  |   username VARCHAR(50) UNIQUE
  | );
  INSERT INTO users (username) VALUES ('system_admin');

✅ บทสรุป

YAML ไม่ใช่เครื่องมือจัดการฐานข้อมูล แต่เป็น “ภาษาของโครงสร้าง” ที่ช่วยให้วิศวกรระบบสามารถกำหนดค่า (Define) และจัดการสภาพแวดล้อมของ PostgreSQL ได้อย่างเป็นระบบและอ่านง่ายที่สุด ทำให้กระบวนการ Deployment และการบำรุงรักษาระบบขนาดใหญ่มีความแม่นยำและลดโอกาสเกิดข้อผิดพลาดของมนุษย์ได้อย่างมาก