Ansible Automation Guide DevOps

Ansible Automation Guide

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

Ansible Automation Guide คืออะไร / ทำไมถึงสำคัญ

น้องๆ เคยเจอปัญหาแบบพี่มั้ย? สมัยก่อนตอนทำร้านเน็ต SiamCafe.net ต้องคอยลงโปรแกรม อัพเดทเกมส์เองทุกเครื่อง! คิดดูสิ 40 เครื่อง! กว่าจะเสร็จวันนึงแทบไม่ได้ทำอะไรอย่างอื่น

Ansible เนี่ยแหละ คือพระเอกที่เข้ามาช่วยแก้ปัญหานี้ได้แบบหมดจด มันคือเครื่องมือ Automation ที่ช่วยให้เราจัดการ Server หรือ Computer จำนวนมากๆ ได้ง่ายๆ เหมือนสั่งงานทีเดียวแล้วเสร็จทุกเครื่อง

ทำไมถึงสำคัญ? เพราะมันช่วยประหยัดเวลา ลดความผิดพลาด และทำให้เราโฟกัสกับงานที่สำคัญกว่าได้เยอะเลย ลองนึกภาพว่าแทนที่จะต้องมานั่งลงโปรแกรมทีละเครื่อง เราแค่เขียน Playbook (เหมือนสูตรอาหาร) แล้ว Ansible ก็จัดการให้เองทั้งหมด

พื้นฐานที่ต้องรู้

ก่อนจะไปลุย Ansible กัน มาปูพื้นฐานกันก่อนนิดนึงนะ จะได้ไม่งงตอนใช้งานจริง

Inventory

Inventory คือ list รายชื่อของ Server หรือ Computer ที่เราจะจัดการด้วย Ansible สมัยก่อนพี่ใช้วิธีเขียนใส่ Text file ง่ายๆ เลย

[webservers]
web1.example.com
web2.example.com

[dbservers]
db1.example.com

ใน Inventory เราจะกำหนด Hostname หรือ IP address ของแต่ละเครื่อง และจัดกลุ่ม (Group) ให้มันได้ด้วย เช่น กลุ่ม Webservers, กลุ่ม Database servers

Playbook

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

---
- hosts: webservers
  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present

จากตัวอย่าง Playbook ด้านบน เราจะสั่งให้ Ansible ไปติดตั้ง Apache บน Server ทุกเครื่องที่อยู่ในกลุ่ม "webservers"

Module

Module คือเหมือนฟังก์ชั่นสำเร็จรูปที่ Ansible เตรียมไว้ให้เราใช้งาน เช่น apt (สำหรับติดตั้ง package บน Debian/Ubuntu), yum (สำหรับติดตั้ง package บน CentOS/RHEL), copy (สำหรับ copy ไฟล์) และอื่นๆ อีกมากมาย

เราสามารถเรียกใช้ Module เหล่านี้ใน Playbook ได้เลย ไม่ต้องเขียน code เองทั้งหมด

วิธีใช้งาน / เริ่มต้นยังไง

เอาล่ะ! หลังจากปูพื้นฐานกันไปแล้ว มาดูวิธีใช้งาน Ansible แบบ Step-by-step กันบ้าง

ขั้นตอนปฏิบัติจริง

ติดตั้ง Ansible

ขั้นตอนแรกก็ต้องติดตั้ง Ansible ก่อน วิธีการติดตั้งก็ขึ้นอยู่กับ OS ที่เราใช้ พี่แนะนำให้ใช้ pip (Python package manager) จะง่ายสุด

pip install ansible

หลังจากติดตั้งเสร็จแล้ว ลองเช็ค version ดูว่า Ansible ติดตั้งถูกต้องหรือไม่

ansible --version

สร้าง Inventory File

ต่อมาก็สร้าง Inventory file เพื่อระบุ Server ที่เราจะจัดการ สมัยพี่ทำร้านเน็ตก็ใส่ IP Address เรียงกันไปเลย

[servers]
192.168.1.101
192.168.1.102
192.168.1.103

เขียน Playbook

ทีนี้ก็มาถึงขั้นตอนการเขียน Playbook เพื่อสั่งงาน Ansible กันแล้ว ลองเริ่มจาก Playbook ง่ายๆ ก่อน เช่น ping server

---
- hosts: all
  tasks:
    - name: Ping server
      ping:

บันทึกไฟล์นี้เป็น ping.yml แล้วรัน Playbook ด้วยคำสั่ง

ansible-playbook ping.yml

ถ้าทุกอย่างถูกต้อง เราจะเห็น Ansible พยายาม ping ไปยัง Server ทุกเครื่องใน Inventory file

การใช้ SSH Key

เพื่อให้ Ansible สามารถเข้าไปจัดการ Server ได้ เราต้องตั้งค่า SSH key ก่อน วิธีการก็คือสร้าง SSH key บนเครื่องที่เราจะรัน Ansible แล้ว copy public key ไปใส่ไว้ใน authorized_keys ของ user ที่เราจะใช้บน Server

ถ้าทำถูกต้อง เราจะสามารถ SSH เข้า Server ได้โดยไม่ต้องใส่ password

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

ดูวิดีโอเพิ่มเติมเกี่ยวกับAnsible Automation Guide:

เปรียบเทียบกับทางเลือกอื่น

Ansible ไม่ได้เป็นเครื่องมือ Automation เพียงตัวเดียวในตลาด ยังมีเครื่องมืออื่นๆ ที่น่าสนใจอีกมากมาย ลองมาดูกันว่า Ansible แตกต่างจากเครื่องมือเหล่านั้นอย่างไร

เปรียบเทียบ Ansible, Chef, Puppet

Chef และ Puppet เป็น Configuration Management tools ที่ได้รับความนิยมเหมือนกัน แต่ Ansible มีข้อดีตรงที่ใช้งานง่ายกว่า ไม่ต้องติดตั้ง agent บน Server (Agentless) และใช้ SSH ในการสื่อสาร ทำให้ setup ง่ายกว่า

เปรียบเทียบ Ansible, SaltStack

SaltStack ก็เป็นเครื่องมือที่น่าสนใจอีกตัว มีความเร็วสูง แต่ Ansible มี Community ที่ใหญ่กว่า และมี Module ให้ใช้งานเยอะกว่า

Feature Ansible Chef Puppet SaltStack
Agentless Yes No No Optional
Learning Curve Easy Medium Medium Medium
Community Large Medium Medium Small
Complexity Low High High Medium

สุดท้ายแล้ว การเลือกเครื่องมือก็ขึ้นอยู่กับความต้องการและความถนัดของแต่ละคน ลองศึกษาข้อมูลเพิ่มเติมและเลือกเครื่องมือที่เหมาะกับเราที่สุด

อย่าลืมแวะไปอ่านบทความอื่นๆ เกี่ยวกับ IT และ DevOps ได้ที่ SiamCafe Blog นะครับ

Case Study: Deploy Web Application

ลองมาดูตัวอย่างการใช้ Ansible deploy web application กันบ้าง สมมติว่าเรามี web application ที่เขียนด้วย Python และต้องการ deploy ไปยัง web servers หลายเครื่อง

  1. เขียน Playbook เพื่อ clone code จาก Git repository
  2. ติดตั้ง dependencies ด้วย pip
  3. Copy configuration files
  4. Restart web server

Playbook อาจจะมีหน้าตาประมาณนี้

---
- hosts: webservers
  tasks:
    - name: Clone code from Git
      git:
        repo: git@github.com:your-repo.git
        dest: /var/www/your-app

    - name: Install dependencies
      pip:
        requirements: /var/www/your-app/requirements.txt

    - name: Copy configuration files
      copy:
        src: your-app.conf
        dest: /etc/apache2/sites-available/your-app.conf

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

ด้วย Playbook นี้ เราสามารถ deploy web application ไปยัง web servers ได้อย่างรวดเร็วและง่ายดาย

ถ้าสนใจเรื่อง DevOps และ IT เพิ่มเติม อย่าลืมติดตาม SiamCafe Blog นะครับ มีบทความดีๆ อัพเดทตลอด!

Best Practices / เคล็ดลับจากประสบการณ์

น้องๆ ที่กำลังหัดเล่น Ansible ฟังทางนี้! สมัยผมทำร้านเน็ต SiamCafe เมื่อ 20 กว่าปีก่อนเนี่ย เรื่อง Automation มันยังไม่บูมขนาดนี้หรอก แต่พอได้มาจับ Ansible แล้วรู้สึกเลยว่า "รู้งี้ทำตั้งนานแล้ว!" มันช่วยให้ชีวิตแอดมินง่ายขึ้นเยอะจริงๆ

Best practices ที่ผมจะแชร์วันนี้ มาจากประสบการณ์จริง ล้วนๆ ลองเอาไปปรับใช้กันดูนะ

เทคนิคที่ 1: Keep it Simple, Stupid (KISS)

จำไว้เลยว่า Ansible Playbook ไม่ใช่โค้ดแข่ง Hackathon เน้นให้อ่านง่าย เข้าใจง่าย ใครมาดูก็รู้ว่าทำอะไร อย่าพยายามเขียนให้มันฉลาดล้ำเกินไป เพราะเวลาเจอปัญหาขึ้นมา จะแก้ลำบาก

อย่างเช่น สมมติว่าเราจะ Install Apache web server บน Ubuntu:


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

เห็นไหม? ง่ายๆ ตรงไปตรงมา ไม่งง

เทคนิคที่ 2: Version Control is Your Best Friend

Ansible Playbook ทุกไฟล์ ต้องอยู่ภายใต้ Version Control System อย่าง Git เสมอ! สมัยผมพลาดมาเยอะ เจอปัญหาแล้วย้อนกลับไปแก้ไขไม่ได้นี่เซ็งสุดๆ Git ช่วยชีวิตเราได้จริงๆ

ลองคิดภาพว่า แก้ไฟล์ผิด แล้ว commit ทับไปแล้ว แต่ถ้าเราใช้ Git เราสามารถย้อนกลับไป commit ก่อนหน้าได้ ง่ายกว่างมหา backup เยอะ

เทคนิคที่ 3: Idempotency is Key

Idempotency คือการที่รัน Playbook ซ้ำๆ กี่ครั้ง ผลลัพธ์ก็เหมือนเดิม ไม่มีการเปลี่ยนแปลงที่ไม่พึงประสงค์เกิดขึ้น ยกตัวอย่างเช่น ถ้า Apache ติดตั้งไปแล้ว รัน Playbook อีกรอบก็ไม่ควรจะติดตั้งซ้ำ

Ansible ออกแบบมาให้เป็น Idempotent โดยธรรมชาติ แต่เราก็ต้องระวังไม่ให้เขียน Playbook ที่มัน "ไม่ Idempotent" เช่น สั่ง restart service ทุกครั้ง ทั้งๆ ที่ไม่ได้มีการเปลี่ยนแปลง config

เทคนิคที่ 4: Use Roles for Reusability

ถ้าเรามี Task ที่ต้องทำซ้ำๆ กันหลายๆ ครั้ง เช่น การติดตั้ง Web Server, Database Server, หรือ Load Balancer ให้สร้างเป็น Ansible Role แยกออกมา แล้วค่อยเรียกใช้ Role นั้นๆ ใน Playbook ต่างๆ

การใช้ Role ช่วยให้ code เราเป็นระเบียบ อ่านง่าย และ maintain ง่ายขึ้นเยอะ เหมือนกับการสร้าง function ในภาษา programming นั่นแหละ

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

Ansible เหมาะกับ Environment แบบไหน?

Ansible เหมาะกับ Environment ทุกขนาด ตั้งแต่ Server ไม่กี่เครื่อง ไปจนถึง Datacenter ขนาดใหญ่ มันสามารถจัดการได้ทั้ง Linux, Windows, Network Devices, และ Cloud Services

Ansible ต่างจาก Configuration Management Tools ตัวอื่นยังไง? (เช่น Puppet, Chef)

Ansible เป็น Agentless ซึ่งหมายความว่าเราไม่ต้องติดตั้ง Agent บน Server ที่เราจะจัดการ ทำให้ setup ง่ายกว่า และ overhead น้อยกว่า นอกจากนี้ Ansible ยังใช้ YAML ซึ่งเป็นภาษาที่อ่านง่ายกว่าภาษาอื่นๆ

Ansible ฟรีไหม? มีค่าใช้จ่ายอะไรบ้าง?

Ansible เป็น Open Source Software ใช้งานได้ฟรี แต่ Red Hat (เจ้าของ Ansible) ก็มี Ansible Automation Platform ซึ่งเป็น Enterprise Version ที่มี features เพิ่มเติม และ support จาก Red Hat ซึ่งก็ต้องเสียเงิน

ถ้าติดปัญหาในการใช้งาน Ansible จะหาความช่วยเหลือได้จากที่ไหน?

มีแหล่งข้อมูลเยอะแยะเลยครับ เริ่มจาก Official Documentation ของ Ansible เอง, Stack Overflow, Ansible Galaxy (แหล่งรวม Roles ต่างๆ), และ Community Forum ต่างๆ ที่เกี่ยวข้องกับ DevOps

Ansible Security ดีไหม?

Ansible เองมีความปลอดภัยค่อนข้างสูง เพราะมันใช้ SSH ในการสื่อสารกับ Server และสามารถ encrypt ข้อมูลสำคัญได้ นอกจากนี้เรายังสามารถ integrate Ansible กับ Security Tools อื่นๆ ได้อีกด้วย

สรุป

Ansible เป็นเครื่องมือ Automation ที่ทรงพลัง และใช้งานง่าย เหมาะสำหรับทั้งมือใหม่ และมือเก๋า ลองเอาไปปรับใช้กับงานของตัวเองดูนะครับ รับรองชีวิตดีขึ้นเยอะ!

อย่าลืม! iCafeForex สำหรับเทรดเดอร์ยุคใหม่ และติดตามเรื่องราว IT สนุกๆ ได้ที่ SiamCafe Blog นะครับ