Quay lại danh sách
Tin tức công nghệ

Tự động hóa quy trình 'Hủy và Tạo lại' VPS với OpenTofu và Ansible: Hướng dẫn triển khai Disposable Infrastructure

4 tháng 6, 2026

Giới thiệu về Xu hướng Disposable Infrastructure

Trong kỷ nguyên điện toán đám mây, tư duy quản lý hạ tầng CNTT đã dịch chuyển mạnh mẽ từ mô hình "Pet" (Thú cưng) sang "Cattle" (Đàn gia súc). Thay vì chăm chút, sửa chữa từng máy chủ VPS khi gặp sự cố, các kỹ sư DevOps hiện đại ưu tiên phương pháp Disposable Infrastructure (Hạ tầng có thể hủy bỏ). Nghĩa là, khi một hệ thống gặp lỗi hoặc cần cập nhật, giải pháp tối ưu nhất là hủy bỏ hoàn toàn và khởi tạo lại một hệ thống mới tinh từ đầu.

Quy trình "Hủy và Tạo lại" (Teardown & Rebuild) mang lại những lợi ích vượt trội bằng cách loại bỏ hiện tượng Configuration Drift (sự sai lệch cấu hình theo thời gian), đảm bảo tính đồng nhất tuyệt đối giữa các môi trường Staging và Production, đồng thời tăng cường tối đa khả năng bảo mật trước các phần mềm độc hại lưu trú dài hạn. Để hiện thực hóa chiến lược này một cách mượt mà và không sai sót, sự kết hợp giữa hai công cụ mã nguồn mở mạnh mẽ: OpenTofu và Ansible chính là chìa khóa vàng.

Vai trò của OpenTofu và Ansible trong Chuỗi Tự động hóa

Để xây dựng một quy trình tự động hóa khép kín, chúng ta cần phân định rõ ràng vai trò của từng công cụ theo kiến trúc phân tầng:

  • OpenTofu (Infrastructure as Code - IaC): Là bản fork nguồn mở hoàn toàn từ Terraform, OpenTofu chịu trách nhiệm quản lý vòng đời của phần cứng ảo hóa (Provisioning). Công cụ này sẽ giao tiếp với các Cloud Provider (AWS, DigitalOcean, vNG Cloud,...) để khởi tạo hoặc hủy bỏ VPS, cấu hình Network, Firewall, và IP Public một cách nhanh chóng thông qua các tệp cấu hình khai báo (declarative).
  • Ansible (Configuration Management): Sau khi OpenTofu bàn giao một VPS "sạch", Ansible sẽ tiếp quản nhiệm vụ cấu hình hệ điều hành và triển khai ứng dụng (Deployment). Điểm mạnh của Ansible là cơ chế Agentless (không cần cài đặt phần mềm đặc vụ trên VPS mục tiêu), kết nối an toàn qua SSH và thực thi các kịch bản (Playbook) để cài đặt Docker, thiết lập Nginx, cấu hình bảo mật... biến một VPS trống thành một máy chủ ứng dụng hoàn chỉnh.
OpenTofu chịu trách nhiệm xây dựng phần thô (Cơ sở hạ tầng), còn Ansible chịu trách nhiệm hoàn thiện nội thất và đưa không gian vào sử dụng (Cấu hình & Ứng dụng).

Kịch bản Triển khai: Quy trình 4 Bước Tự động hóa Toàn diện

Dưới đây là kiến trúc và các bước triển khai chi tiết cho quy trình tự động hóa "Hủy và Tạo lại" hệ thống VPS một cách an toàn và tối ưu.

Bước 1: Định nghĩa hạ tầng với OpenTofu

Đầu tiên, chúng ta tạo mã nguồn OpenTofu để định nghĩa tài nguyên VPS. Tệp cấu hình này đảm bảo rằng mỗi lần chạy, OpenTofu sẽ đối chiếu trạng thái thực tế với tệp trạng thái (state file) để đưa ra hành động chính xác.

provider "digitalocean" {
  token = var.do_token
}

resource "digitalocean_droplet" "web_server" {
  image  = "ubuntu-22-04-x64"
  name   = "vps-disposable-prod"
  region = "sgp1"
  size   = "s-1vcpu-2gb"
  ssh_keys = [var.ssh_key_id]
}

Khi muốn hủy và tạo lại, lệnh tofu apply -replace="digitalocean_droplet.web_server" sẽ được kích hoạt, buộc OpenTofu phải xóa bỏ VPS cũ và tạo ra một thực thể mới với cùng thông số.

Bước 2: Cấu hình Dynamic Inventory cho Ansible

Thách thức lớn nhất khi hủy và tạo lại VPS là Địa chỉ IP thay đổi. Chúng ta không thể sử dụng file chứa IP tĩnh cố định (Static Inventory). Lúc này, giải pháp tối ưu là sử dụng Dynamic Inventory Plugin của Ansible hoặc tận dụng tính năng xuất dữ liệu (Output) của OpenTofu.Bằng cách xuất địa chỉ IP mới sau khi OpenTofu hoàn thành nhiệm vụ, chúng ta có thể truyền trực tiếp luồng dữ liệu này vào cấu hình đầu vào của Ansible:

output "vps_public_ip" {
  value = digitalocean_droplet.web_server.ipv4_address
}

Bước 3: Xây dựng Playbook Cấu hình với Ansible

Khi đã có IP của VPS mới, Ansible Playbook sẽ tiến hành thiết lập môi trường. Một Playbook chuẩn chỉnh cho Disposable Infrastructure cần đảm bảo tính Idempotence (Tính đồng nhất - chạy nhiều lần vẫn cho ra một kết quả duy nhất).

- name: Cau hinh VPS moi khoi tao
  hosts: all
  become: true
  tasks:
    - name: Cap nhat he thong
      apt: update_cache=yes upgrade=dist
    - name: Cai dat Docker Engine
      apt: name=docker.io state=present
    - name: Khoi chay ung dung Web
      community.docker.docker_container:
        name: web_app
        image: nginx:latest
        ports: "80:80"

Bước 4: Tích hợp CI/CD Pipeline để kích hoạt quy trình

Để quy trình vận hành hoàn toàn tự động không cần can thiệp thủ công, toàn bộ các bước trên cần được đóng gói vào một Pipeline (ví dụ: GitLab CI/CD, GitHub Actions hoặc Jenkins). Chu kỳ hoạt động định kỳ (ví dụ: 00:00 Chủ Nhật hàng tuần) sẽ diễn ra như sau:

  1. Kiểm tra mã nguồn: Pipeline tải mã nguồn OpenTofu và Ansible mới nhất từ Git Repository.
  2. Kích hoạt OpenTofu: Chạy lệnh hủy VPS hiện tại và tạo lập VPS mới, lấy về địa chỉ IP mới.
  3. Chờ đợi kết nối: Pipeline chạy một đoạn script kiểm tra cổng SSH (Port 22) của VPS mới cho đến khi sẵn sàng.
  4. Kích hoạt Ansible: Khởi chạy Playbook để cấu hình hệ điều hành, cài đặt các bản vá bảo mật mới nhất và triển khai ứng dụng.
  5. Kiểm tra chất lượng (Health Check): Gửi request kiểm tra trạng thái hoạt động của ứng dụng, hoàn tất quy trình.

Những Lưu ý Quan trọng khi Áp dụng Disposable Infrastructure

Dù mô hình này mang lại sự linh hoạt và độ an toàn cấu hình tuyệt đối, các doanh nghiệp cần lưu ý những điểm cốt lõi sau để tránh mất mát dữ liệu:

  • Tách biệt tầng dữ liệu (Stateful vs Stateless): Tuyệt đối không lưu trữ cơ sở dữ liệu (Database) hoặc các tệp tin do người dùng tải lên trực tiếp trên các VPS dùng cơ chế disposable này. Hãy chuyển dịch Database sang các dịch vụ Managed Database (như AWS RDS) và lưu trữ tệp tin tại các Object Storage (như AWS S3).
  • Sử dụng Floating IP / Load Balancer: Vì IP của VPS sẽ thay đổi sau mỗi lần tái tạo, hãy đặt một Bộ cân bằng tải (Load Balancer) hoặc sử dụng IP tĩnh động (Floating IP) đứng trước VPS. OpenTofu chỉ việc tái cấu hình để Load Balancer trỏ về IP mới mà không làm gián đoạn truy cập của người dùng cuối (Zero-downtime Deployment).
  • Quản lý SSH Host Key: Khi VPS thay đổi, mã định danh SSH Key của host cũng thay đổi, dễ dẫn đến lỗi Host key verification failed trên Ansible. Hãy cấu hình tệp ansible.cfg với thuộc tính host_key_checking = False trong môi trường CI/CD được kiểm soát an toàn để quy trình không bị nghẽn.

Lời kết

Tự động hóa quy trình "Hủy và Tạo lại" VPS bằng sự kết hợp giữa OpenTofu và Ansible không chỉ giúp loại bỏ hoàn toàn các lỗi vận hành do con người gây ra, mà còn nâng tầm hệ thống của doanh nghiệp lên tiêu chuẩn hạ tầng đám mây hiện đại. Áp dụng tư duy Disposable Infrastructure thành công đồng nghĩa với việc doanh nghiệp sở hữu một hệ thống có khả năng tự phục hồi cao, linh hoạt và sẵn sàng mở rộng bất cứ lúc nào.