• เข้าสู่ระบบ
  • ลงทะเบียน
รวมบทความเกี่ยวกับการทำ Self-Host
ไม่พบผลการค้นหา
ดูผลการค้นหาทั้งหมด
  • หน้าหลัก
  • บทความ
    • Synology NAS
    • Omada SDN
    • pfSense
    • Proxmox
    • Home Assistant
    • Network Security
วันอังคาร ที่ 17 มิถุนายน 2025, 16:23 น.
  • หน้าหลัก
  • บทความ
    • Synology NAS
    • Omada SDN
    • pfSense
    • Proxmox
    • Home Assistant
    • Network Security
ไม่พบผลการค้นหา
ดูผลการค้นหาทั้งหมด
รวมบทความเกี่ยวกับการทำ Self-Host
หน้าหลัก Tutorial

อัพเดท Remote Host ทุกเครื่องในชุดคำสั่งเดียว ด้วย Ansible Playbook

kiraro โดย kiraro
30 สิงหาคม, 2023
in Tutorial, Network Security
A A
1
อัพเดท Remote Host ทุกเครื่องในชุดคำสั่งเดียว ด้วย Ansible Playbook
0
แชร์
172
จำนวนวิว
Share on FacebookShare on Twitter

ตารางเนื้อหา

  • 1. Ansible Playbook คืออะไร?
  • 2. ติดตั้ง Ansible
  • 3. เพิ่ม Remote Host ที่ต้องการจัดการผ่านไฟล์ Hosts
  • 4. สร้าง Playbook เพื่อจัดการกับ Remote Host
  • 5. สั่งงาน playbook

อีกเรื่องปวดหัวที่ชาว Homelab ต้องพบเจอคือ การอัพเดต Packege ของเครื่องแต่ละเครื่องให้เป็นปัจจุบันอยู่เสมอ แต่จะให้มานั่ง SSH เข้าไปอัพเดทแต่ละเครื่องมันก็ค่อนข้างเสียเวลา ไหนจะต้องมานั่งจำ Password ของแต่ละเครื่องอีกแค่คิดก็ปวดหัวแล้วครับ วันนี้เลยมาเสนอวิธีอัพเดต OS ผ่านคำสั่งของ Ansible Playbook เครื่องมือที่ช่วยจัดการ Automate งานต่างๆ บน Remote Host ของเราได้ง่าย หลากหลายและไม่จำเป็นต้องติดตั้ง Agent หรือ Packege เพิ่มเติมบนเครื่องที่ต้องการเข้าไปจัดการอีกด้วยครับ

1 Ansible Playbook คืออะไร?

Ansible เป็น Automation Tools ที่ช่วยในการจัดการเวอร์ชัน Packege, การอัพเดทระบบความปลอดภัย และงานอื่น ๆ ที่เกี่ยวข้องกับการสร้างและบำรุงรักษา Remote Host ของเราโดยใช้เทคนิคที่เรียกว่า “Infrastructure as Code” (IaC) สามารถจัดการการแก้ไขระบบ server หลายๆ เครื่องพร้อมกันให้เป็นไปตามที่เราต้องการได้ผ่านชุดคำสั่งเพียงชุดเดียว

ส่วน Ansible Playbook คือชุดคำสั่งที่ถูกเขียนในรูปแบบของไฟล์ YAML เพื่อกำหนดกระบวนการที่ต้องการให้ Ansible ทำงาน ช่วยให้ชุดคำสั่งเป็นไปอย่างมีระเบียบ เป็นขึ้นเป็นตอน เข้าใจง่ายและมีความยืดหยุ่นอีกด้วย

แต่ในบทความนี้เราจะมาเริ่มที่ชุดคำสั่งพื้นฐานกันก่อน นั่นก็คือการอัพเดตแพ็คเก็จของ Debian ให้ Up-to-date เพื่อเข้าใจโครงสร้างและการทำงานของโปรแกรมกันครับ

2 ติดตั้ง Ansible

ในการ Remote เข้าไปควบคุม Host ต่างๆ เราก็ต้องมีเครื่องหลักที่ใช้ SSH เข้าไปจัดการก่อน ซึ้งเราจะติดตั้ง Ansible บนเครื่องนี้เพียงเครื่องเดียวเท่านั้น

ติดตั้ง Ansible ใน Ubuntu, Debian OS

  • update package และติดตั้งผ่าน apt install
sudo apt update && sudo apt upgrade -y
sudo apt install ansyble

ansible --version

ติดตั้ง Ansible ใน MacOS ด้วย Homebrew

  • วิธีที่ง่ายที่สุดที่ติดตั้งผ่าน MacOS คือใช้ Homebrew การติดตั้ง Homebrew สามารถ copy code ด้านล่างนี้ไปรันใน Terminal หรือใครสนใจเพิ่มเติมเกี่ยวกับ Homebrew สามารถเข้าไปดูที่ link นี้ได้เลยครับ https://brew.sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • ติดตั้ง Ansible ผ่าน homebrew
brew install ansible

ansible --version

3 เพิ่ม Remote Host ที่ต้องการจัดการผ่านไฟล์ Hosts

หลังจากติดตั้ง Ansible เสร็จเรียบร้อยแล้วเราจะทำการเพิ่ม server ที่เราจะควบคุมผ่านไฟล์ hosts ซึ่งใน Ansible เองไม่แนะนำให้เราจัดเก็บ Password ของ SSH login ใน playbook หรือไฟล์ตั้งค่าต่างๆ เนื่องจากเป็น plain text คนอื่นสามารถเห็นได้ง่าย ดังนั้นเราควร SSH login ด้วย Public และ Private Key แทน โดยสามารถทำได้ดังนี้

  • สร้าง SSH Key Pair
ssh-keygen
  • ก๊อบปี้ Public Key ไปยัง Remote Hosts ตัวอย่างคือก๊อปปี้ไปยัง Server IP: 192.168.1.5 ที่ใช้ Username ว่า john เมื่อกด Enter จะมี Password ขึ้นมาให้ใส่เพื่อยืนยันอีกครั้ง เป็นอันเสร็จสิ้น
ssh-copy-id [email protected]
  • สร้าง directory ชื่อ “inventory” ขึ้นมาเพื่อเก็บไฟล์ hosts จากนั้นใช้ Text Editor สร้างไฟล์ hosts ขึ้นมา
mkdir inventory
cd inventory/
nano hosts
  • เพิ่ม remote host ที่ต้องการลงไป โดยส่วนแรกเป็น IP-Address, hostname หรือจะเป็น FQDN ก็ได้ ส่วนที่สองคือ ชื่อที่จะใช้ ssh-login ส่วนสุดท้ายคือ private key สำหรับใช้ในกรณีที่มี private key หลายไฟล์
  • สามารถเพิ่ม remote host ได้หลาย host แยกเป็นแต่ละบรรทัด
[ubuntu-server]
192.168.1.5 ansible_user=john
192.168.1.6 ansible_user=john
plex-server ansible_user=john
ec2.compute.amazonaws.com ansible_user=john ansible_ssh_private_key_file=/path/to/your/private/key

4 สร้าง Playbook เพื่อจัดการกับ Remote Host

  • กลับมา directory หลัก และทำการสร้าง directory ใหม่ชื่อ “playbooks” สำหรับเก็บคำสั่งต่างๆ ที่เป็นไฟล์ yaml
cd ..
mkdir playbooks
cd playbooks/
nano apt.yaml
  • ในที่นี้จะสร้าง playbook สำหรับการจัดการ packege ชื่อว่า “apt.yaml” โดยใช้ apt module สามารถศึกษาเพิ่มเติมในเว็บไซต์ https://docs.ansible.com/ansible/2.9/modules/apt_module.html#apt-module
---
- name: Update Debian Server	# ชื่อ Task 
  hosts: ubuntu-server			# list ของ hosts
  become: yes					# ต้องการใช้สิทธิ์ sudo หรือไม่
  tasks:
    - name: apt					# ชื่อ Module
      apt:
        update_cache: yes		# ต้องการอัพเดทเคชก่อนหรือไม่
        upgrade: yes			# ต้องการ upgrade packege หรือไม่
  • เมื่อเสร็จแล้วโครงสร้างไฟล์จะเป็นแบบนี้

5 สั่งงาน playbook

  • กลับมาที่ directory หลักของ ansible
  • เรียกใช้ ansible playbook โดยใช้คำสั่ง เรียกไฟล์ playbooks/apt.yaml กำหนด inventory ไฟล์ที่ใช้ inventory/hosts และ option “–ask-beceme-pass” เนื่องจากต้องใช้สิทธิ์ sudo ในการรัน apt update ตรงส่วนนี้จะมี become password ขึ้นมาให้เรากรอกใน terminal เลย
 cd ..
 ansible-playbook playbooks/apt.yaml -i inventory/hosts --ask-become-pass
  • เมื่อรันเสร็จจะได้หน้า PLAY RECAP สำหรับสรุปการทำงาน โดยที่ “Changed=1” หมายความว่ามีการ update packege บน host นั้นๆ

เพียงเท่านี้เราก็ทำการ update packege ของเราให้ up-to-date อยู่เสมอ แต่นี้เป็นเพียงเศษเสี้ยวส่วนหนึ่งเท่านั้นที่ Ansible ทำได้ หากสนใจโมดูลอื่นลองเข้าไปดูตัวอย่างและวิธีการใช้งานที่ official เว็บไซต์ได้เลยครับ


ข้อมูลอ้างอิง

Tags: ansibleaptdebianplaybookUbuntuupdateupgarde
แชร์Tweet
บทความก่อนหน้า

เชื่อมต่อ Synology NAS และ Network ภายในบ้านจากข้างนอกแบบง่ายๆ และปลอดภัยผ่าน Wireguard VPN (Tailscale)

kiraro

kiraro

Trail Runner, Dog Lover, Homelab Junky

ความคิดเห็น 1

  1. aisyah says:
    4 เดือน ที่แล้ว

    การใช้ Ansible Playbook ช่วยให้การอัปเดตแพ็กเกจบน Homelab เป็นเรื่องง่ายขึ้น ลดความยุ่งยากในการ SSH เข้าแต่ละเครื่องทีละตัว! 🚀Telkom University Jakarta

    ตอบกลับ

ใส่ความเห็น ยกเลิกการตอบ

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Recent News

อัพเดท Remote Host ทุกเครื่องในชุดคำสั่งเดียว ด้วย Ansible Playbook

อัพเดท Remote Host ทุกเครื่องในชุดคำสั่งเดียว ด้วย Ansible Playbook

สิงหาคม 30, 2023
172
เชื่อมต่อ Synology NAS และ Network ภายในบ้านจากข้างนอกแบบง่ายๆ และปลอดภัยผ่าน Wireguard VPN (Tailscale)

เชื่อมต่อ Synology NAS และ Network ภายในบ้านจากข้างนอกแบบง่ายๆ และปลอดภัยผ่าน Wireguard VPN (Tailscale)

สิงหาคม 30, 2023
1.5k
ติดตั้ง Omada SDN Controller บน Ubuntu server 20.04

ติดตั้ง Omada SDN Controller บน Ubuntu server 20.04

สิงหาคม 30, 2023
365
ทำ Cloudflare DDNS ใน Synology NAS ผ่าน Container Manager

ทำ Cloudflare DDNS ใน Synology NAS ผ่าน Container Manager

สิงหาคม 25, 2023
927

ป้ายกำกับ

2.5Gbps 20.04 443 Adapter ansible API Token apt Certificate Cloudflare Container Container Manager Controller DDNS debian Docker docker-compose Driver DS920+ Ethernet HTTPS iperf3 Let's Encrypt NAS NAT Omada pfSense playbook Public IP QuickConnect Realtek Reverse-Proxy RTL8156 SDN SSH SSL Sub Domain Synology Tailscale TP-link Ubuntu update upgarde USB VPN Wireguard
รวมบทความเกี่ยวกับการทำ Self-Host

Copyright © 2023 - All Rights Reserved

เว็บไซต์นี้ทำขึ้นด้วยใจรัก 🤍

  • เกี่ยวกับเรา
  • นโยบายความเป็นส่วนตัว
  • ติดต่อเรา

ติดตามพวกเรา

หวัดดี! ยินดีต้อนรับกลับมา

เข้าใช้งานด้วยบัญชี Google
หรือ

ลงชื่อเข้าใช้งานด้านล่าง

ลืมรหัสผ่าน? ลงทะเบียน

สร้างบัญชีผู้ใช้ใหม่!

ลงทะเบียนด้วยบัญชี Google
หรือ

กรอกข้อมูลด้านล่างเพื่อลงทะเบียน

กรุณากรอกข้อมูลให้ครบทุกช่อง ลงชื่อเข้าใช้

เปลี่ยนรหัสผ่านของคุณ

กรุณาพิมพ์ชื่อผู้ใช้งานหรืออีเมลของคุณเพื่อเปลี่ยนรหัสผ่าน

ลงชื่อเข้าใช้
  • เข้าสู่ระบบ
  • ลงทะเบียน
ไม่พบผลการค้นหา
ดูผลการค้นหาทั้งหมด
  • หน้าหลัก
  • บทความ
    • Synology NAS
    • Omada SDN
    • Home Assistant
    • Network Security
    • pfSense
    • Proxmox

Copyright © 2023 - All Rights Reserved