Ansible Automation ทำงานอัตโนมัติ DevOps

Ansible Automation ทำงานอัตโนมัติ

📅 2026-02-10 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Ansible Automation: สั่งงานเซิร์ฟเวอร์แบบชิลๆ ไม่ต้องเมื่อยมือ

สมัยผมทำร้านเน็ต SiamCafe เนี่ย เซิร์ฟเวอร์เพียบ! ทั้งเซิร์ฟเวอร์เกม เซิร์ฟเวอร์เว็บ เซิร์ฟเวอร์ proxy โอ๊ย สารพัดจะเซิร์ฟ สมัยนั้นยังไม่มี Cloud แบบทุกวันนี้ด้วยนะ การจัดการเซิร์ฟเวอร์แต่ละตัวนี่คือ "กรรม" เลยครับ ต้อง ssh เข้าไปทีละเครื่องๆ ทำอะไรซ้ำๆ เดิมๆ จนเบื่อโลก

แล้ว Ansible เนี่ย มันคืออะไร? มันคือเครื่องมือ Automation ที่ช่วยให้เราจัดการเซิร์ฟเวอร์จำนวนมากได้ง่ายๆ เหมือนสั่งงานลูกน้อง (ที่เชื่อฟังมากๆ) ด้วยชุดคำสั่งที่เราเขียนไว้ล่วงหน้า ไม่ต้อง ssh ไม่ต้องลง Agent ให้วุ่นวาย แค่มี SSH Key ก็จบ!

ทำไมมันถึงสำคัญ? ลองคิดดูว่าถ้าเรามีเซิร์ฟเวอร์ 100 เครื่อง แล้วต้องอัพเดท Package หรือแก้ไข Configuration ไฟล์ เราต้องทำซ้ำๆ 100 รอบ! Ansible ช่วยให้เราทำทั้งหมดนี้ได้ใน "คลิกเดียว" ประหยัดเวลา ลดความผิดพลาด แถมยังทำให้ชีวิต DevOps ง่ายขึ้นเยอะ

Ansible ทำงานยังไง?

Ansible ทำงานแบบ Agentless ครับ นั่นหมายความว่าเราไม่ต้องลงโปรแกรมอะไรเพิ่มเติมบนเซิร์ฟเวอร์เป้าหมายเลย Ansible จะใช้ SSH ในการเชื่อมต่อไปยังเซิร์ฟเวอร์ และส่งชุดคำสั่ง (ที่เรียกว่า Playbook) ไปรันบนนั้น

Playbook คือไฟล์ YAML ที่เขียนชุดคำสั่งที่เราต้องการให้ Ansible ทำ เช่น ติดตั้ง Package, แก้ไขไฟล์ Configuration, Restart Service หรือแม้แต่สร้าง User Account

ตัวอย่าง Playbook ง่ายๆ ที่ใช้ติดตั้ง Apache Web Server:


---
- hosts: webservers
  become: true
  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present
    - name: Start Apache
      service:
        name: apache2
        state: started
        enabled: true

โค้ดด้านบนบอก Ansible ว่า ให้เชื่อมต่อไปยังเซิร์ฟเวอร์ในกลุ่ม "webservers" (เราต้องกำหนดไว้ในไฟล์ Inventory ว่ามีเซิร์ฟเวอร์อะไรบ้าง) แล้วให้ใช้สิทธิ์ root (become: true) จากนั้นให้ติดตั้ง Apache (apt: name: apache2 state: present) และ Start Service (service: name: apache2 state: started enabled: true)

เตรียมตัวก่อนเริ่ม Ansible

ก่อนที่เราจะเริ่มใช้ Ansible ได้ เราต้องเตรียมตัวก่อนนิดหน่อย:

  1. ติดตั้ง Ansible: บนเครื่องที่เราจะใช้ควบคุมเซิร์ฟเวอร์ (Control Node)
  2. สร้าง SSH Key: เพื่อใช้ในการ Authenticate กับเซิร์ฟเวอร์เป้าหมาย (Managed Nodes)
  3. แก้ไข Inventory File: เพื่อกำหนดว่ามีเซิร์ฟเวอร์อะไรบ้างที่เราจะควบคุม

การติดตั้ง Ansible ก็ง่ายๆ ครับ บน Ubuntu/Debian ก็แค่:


sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

ส่วนการสร้าง SSH Key ก็:


ssh-keygen -t rsa

แล้วก็ Copy SSH Public Key ไปใส่ในไฟล์ ~/.ssh/authorized_keys บนเซิร์ฟเวอร์เป้าหมาย

สุดท้ายคือการแก้ไข Inventory File (ปกติจะอยู่ที่ /etc/ansible/hosts) เพื่อกำหนดเซิร์ฟเวอร์ที่เราจะควบคุม เช่น:


[webservers]
webserver1 ansible_host=192.168.1.101
webserver2 ansible_host=192.168.1.102

[dbservers]
dbserver1 ansible_host=192.168.1.103

เท่านี้เราก็พร้อมที่จะเริ่มใช้ Ansible ได้แล้ว!

Run Playbook ครั้งแรก

หลังจากที่เราเตรียมทุกอย่างเรียบร้อยแล้ว เราก็สามารถ Run Playbook ที่เราสร้างไว้ได้เลย โดยใช้คำสั่ง:


ansible-playbook your_playbook.yml

Ansible ก็จะเริ่มทำงานตามที่เรากำหนดไว้ใน Playbook และแสดงผลลัพธ์ให้เราเห็น ถ้าทุกอย่างเรียบร้อยดี เราก็จะเห็นข้อความ "ok" หรือ "changed" แสดงขึ้นมา

ถ้ามีอะไรผิดพลาด Ansible ก็จะแจ้ง Error ให้เราทราบ เราก็ต้องไปแก้ไข Playbook หรือตรวจสอบการตั้งค่าต่างๆ ให้ถูกต้อง

Ansible Modules: พระเอกของงาน

Ansible Modules คือ "ตัวช่วย" ที่ทำให้เราทำงานต่างๆ ได้ง่ายขึ้น Modules แต่ละตัวจะมีความสามารถเฉพาะทาง เช่น apt สำหรับจัดการ Package บน Debian/Ubuntu, service สำหรับจัดการ Service, file สำหรับจัดการไฟล์ และอื่นๆ อีกมากมาย

เราสามารถใช้ Modules เหล่านี้ใน Playbook ของเรา เพื่อสั่งให้ Ansible ทำงานต่างๆ ได้อย่างง่ายดาย

ตัวอย่างการใช้ Modules

ตัวอย่างการใช้ Module copy เพื่อ Copy ไฟล์จาก Control Node ไปยัง Managed Node:


- name: Copy configuration file
  copy:
    src: /path/to/local/file.conf
    dest: /path/to/remote/file.conf
    owner: root
    group: root
    mode: '0644'

Module copy จะ Copy ไฟล์ /path/to/local/file.conf จากเครื่อง Control Node ไปยัง /path/to/remote/file.conf บนเครื่อง Managed Node พร้อมทั้งกำหนด Owner, Group และ Permission ให้ถูกต้อง

Ansible มี Modules ให้เราเลือกใช้มากมาย ครอบคลุมงานต่างๆ ที่เราต้องทำในการจัดการเซิร์ฟเวอร์ ลองเข้าไปดูใน Ansible Documentation ได้เลยครับ

สร้าง Custom Modules เองได้ด้วยนะ!

ถ้า Modules ที่มีอยู่ยังไม่ตอบโจทย์ เราก็สามารถสร้าง Custom Modules ขึ้นมาเองได้ Ansible รองรับการเขียน Modules ด้วยภาษา Python หรือภาษาอื่นๆ ที่สามารถ Execute บนเซิร์ฟเวอร์ได้

การสร้าง Custom Modules อาจจะดูยากนิดหน่อย แต่ถ้าเราเข้าใจหลักการทำงานของ Ansible แล้ว ก็ไม่ยากเกินไปแน่นอน

Ansible Roles: จัดระเบียบ Playbook ให้สวยงาม

Playbook ที่ซับซ้อนมากๆ อาจจะทำให้เรางงได้ง่าย Ansible Roles คือวิธีแก้ปัญหา Roles ช่วยให้เราแบ่ง Playbook ออกเป็นส่วนๆ ที่เรียกว่า Roles แต่ละ Role จะรับผิดชอบงานเฉพาะอย่าง เช่น ติดตั้ง Web Server, Configure Database, Setup Firewall

การใช้ Roles ทำให้ Playbook ของเราเป็นระเบียบ อ่านง่าย แก้ไขง่าย และนำกลับมาใช้ใหม่ได้ง่าย

โครงสร้างของ Role

โครงสร้างของ Role จะเป็นแบบนี้:


roles/
  webserver/
    tasks/
      main.yml
    handlers/
      main.yml
    templates/
    vars/
      main.yml
    defaults/
      main.yml
    meta/
      main.yml

การใช้งาน Roles

การใช้งาน Roles ใน Playbook ก็ง่ายๆ ครับ แค่ระบุชื่อ Role ที่เราต้องการใช้:


---
- hosts: webservers
  roles:
    - webserver

Ansible ก็จะไป Execute Task ต่างๆ ที่อยู่ใน Role webserver

Roles เป็นเครื่องมือที่ช่วยให้เราจัดการ Playbook ที่ซับซ้อนได้ง่ายขึ้น ถ้า Playbook ของคุณเริ่มใหญ่ขึ้นเรื่อยๆ ลองใช้ Roles ดูนะครับ แล้วคุณจะติดใจ!

อยากรู้เรื่อง IT เพิ่มเติม? แวะไปอ่านบทความอื่นๆ ได้ที่ SiamCafe Blog นะครับ

ตารางเปรียบเทียบ Ansible กับเครื่องมือ Automation อื่นๆ

เครื่องมือ Agentless ภาษาที่ใช้ Learning Curve ความซับซ้อน เหมาะกับ
Ansible ใช่ YAML ปานกลาง ปานกลาง Configuration Management, Application Deployment
Chef ไม่ใช่ Ruby สูง สูง Configuration Management, Infrastructure as Code
Puppet ไม่ใช่ Ruby สูง สูง Configuration Management, Infrastructure as Code
SaltStack ใช่ YAML ปานกลาง ปานกลาง Configuration Management, Remote Execution

🎬 วิดีโอแนะนำ

ดูวิดีโอเพิ่มเติมเกี่ยวกับAnsible Automation ทำงานอัตโนม:

FAQ เกี่ยวกับ Ansible

Ansible ฟรีไหม?

Ansible เป็น Open Source ครับ ใช้งานได้ฟรี แต่ก็มี Red Hat Ansible Automation Platform ที่เป็น Commercial Version ที่มี Features เพิ่มเติม เช่น Dashboard, Analytics และ Support

Ansible เหมาะกับใคร?

Ansible เหมาะกับทุกคนที่ต้องการจัดการเซิร์ฟเวอร์จำนวนมาก ไม่ว่าจะเป็น DevOps Engineer, System Administrator หรือ Developer

Ansible เรียนยากไหม?

Ansible ไม่ได้ยากอย่างที่คิดครับ ถ้าเรามีความรู้พื้นฐานเกี่ยวกับ Linux และ YAML ก็สามารถเรียนรู้ Ansible ได้ไม่ยาก

สมัยก่อนผมทำร้านเน็ต SiamCafe Blog ไม่มีเครื่องมือแบบนี้ให้ใช้ ชีวิตลำบากกว่านี้เยอะเลย!

Best Practices ในการใช้ Ansible

1. โครงสร้าง Directory ที่ดี มีชัยไปกว่าครึ่ง

สมัยผมทำร้านเน็ตฯ จัดระเบียบสาย LAN นี่สำคัญสุดๆ Ansible ก็เหมือนกัน โครงสร้าง Directory นี่แหละตัวแปรสำคัญ ทำให้ชีวิตง่ายขึ้นเยอะ

ผมแนะนำให้แบ่งตามนี้เลย:


ansible_project/
├── inventory/       # hosts และ group_vars
│   ├── hosts
│   └── group_vars/
│       └── all.yml  # ตัวแปร global
├── playbooks/
│   ├── webserver.yml
│   └── database.yml
├── roles/
│   ├── webserver/
│   │   ├── tasks/
│   │   │   └── main.yml
│   │   ├── handlers/
│   │   │   └── main.yml
│   │   ├── vars/
│   │   │   └── main.yml
│   │   └── templates/
│   │       └── nginx.conf.j2
│   └── database/
│       └── ...
└── ansible.cfg      # Config หลัก

ทำแบบนี้แล้ว เวลาแก้ config หรือเพิ่ม Role ใหม่ ชีวิตจะง่ายขึ้นเยอะ เชื่อผม!

2. Idempotency คือหัวใจ

Ansible ต้องทำซ้ำได้ โดยไม่ทำให้ระบบพัง! นี่คือสิ่งที่เรียกว่า Idempotency สมัยก่อน restart เครื่อง Server บ่อยๆ เพราะลงโปรแกรมผิดพลาด Ansible ช่วยแก้ปัญหานี้ได้

ลองดู code ตัวอย่าง:


- name: Install Apache
  apt:
    name: apache2
    state: present
  notify: Restart Apache

- name: Restart Apache
  service:
    name: apache2
    state: restarted

Code นี้จะ Install Apache เฉพาะตอนที่ยังไม่ได้ Install และ Restart Apache เฉพาะตอนที่ config เปลี่ยน

3. ใช้ Roles ให้เป็น

Roles คือ module ขนาดใหญ่ ที่รวม tasks, handlers, vars, templates ไว้ด้วยกัน ทำให้ code เราเป็นระเบียบและ reuse ได้ง่าย สมัยก่อน copy config file วนไปวนมา Ansible ช่วยให้ชีวิตดีขึ้นเยอะ

สร้าง Role ง่ายๆ ด้วยคำสั่ง:


ansible-galaxy init webserver

แล้วเอา tasks, handlers, vars, templates ไปใส่ใน directory ที่ถูกต้อง แค่นี้ก็ได้ Role แล้ว

4. Version Control สำคัญมาก

Ansible Playbooks และ Roles ควรเก็บไว้ใน Git เสมอ! เหมือนตอนเขียนโปรแกรมร้านเน็ตฯ ทุกอย่างต้อง backup ไว้ ไม่งั้นหายหมด เสียลูกค้าแย่เลย

Commit code บ่อยๆ และใช้ Branch ให้เป็นประโยชน์ เวลาเจอปัญหา จะได้ย้อนกลับไปแก้ไขได้ง่าย

FAQ คำถามที่พบบ่อย

Ansible ฟรีไหม?

Ansible Open Source 100% ครับ! แต่ Red Hat ก็มี Ansible Automation Platform ที่เป็น Enterprise Version ซึ่งมี features เพิ่มเติม เช่น Web UI, Analytics

Ansible เหมาะกับงานอะไร?

Ansible ทำได้หลายอย่าง! ตั้งแต่ Provisioning Server, Configuration Management, Application Deployment ยัน Automation งาน IT ทั่วไป สมัยก่อนลง Windows เองทีละเครื่อง Ansible ช่วยได้เยอะ!

Ansible ต่างจาก Chef/Puppet ยังไง?

Ansible เป็น Agentless! ไม่ต้องลง Agent บน Server เป้าหมาย แค่มี SSH ก็พอ ส่วน Chef/Puppet ต้องลง Agent ก่อน

นอกจากนี้ Ansible ยังใช้ง่ายกว่า เพราะใช้ YAML ในการเขียน Playbooks

Ansible เรียนยากไหม?

ไม่ยากอย่างที่คิด! Syntax YAML ง่าย และ Ansible มี Documentation ที่ดีมาก ลองเริ่มจาก Tutorial ง่ายๆ แล้วค่อยๆ เรียนรู้ไปเรื่อยๆ SiamCafe Blog มีบทความ Ansible อยู่ลองเข้าไปอ่านดูได้นะ

Error "Host key verification failed." แก้ยังไง?

Error นี้เกิดจากการที่ Ansible ไม่รู้จัก Host Key ของ Server เป้าหมาย วิธีแก้คือ:


ssh-keyscan your_server_ip >> ~/.ssh/known_hosts

หรือปิด Host Key Checking ชั่วคราว (ไม่แนะนำ):


ansible-playbook your_playbook.yml -e 'ansible_ssh_common_args="-o StrictHostKeyChecking=no"'

สรุป

Ansible คือ Tool ที่ช่วยให้เรา Automate งาน IT ได้ง่ายและมีประสิทธิภาพ สมัยผมทำ iCafeForex ถ้ามี Ansible ชีวิตคงง่ายขึ้นเยอะ! ลองเอาไปใช้ดู แล้วชีวิตจะดีขึ้นจริงๆ

📰 บทความล่าสุดจาก SiamCafe

🗺️ ดูบทความทั้งหมด — Sitemap SiamCafe Blog

SiamCafe.net — แหล่งความรู้ด้าน IT, Network, Security, Programming อันดับ 1 ของไทย ก่อตั้งตั้งแต่ปี 1997 โดย อ.บอม ผู้เชี่ยวชาญด้าน IT Infrastructure และ Forex Trading มากกว่า 25 ปี บทความทุกชิ้นเขียนจากประสบการณ์จริงในวงการ IT ประเทศไทย