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

Tự Động Hóa Quản Lý Infrastructure as Code: Hướng Dẫn Cấu Hình Atlantis Trên VPS Để Rà Soát Và Phê Duyệt Terraform Qua Pull Request

30 tháng 5, 2026

Giới thiệu về GitOps và Thách Thức Khi Quản Lý Terraform

Trong kỷ nguyên điện toán đám mây, Infrastructure as Code (IaC) đã trở thành tiêu chuẩn vàng cho việc quản lý và triển khai hạ tầng. Terraform là một trong những công cụ phổ biến nhất, cho phép các kỹ sư DevOps định nghĩa hạ tầng bằng mã nguồn. Tuy nhiên, khi quy mô đội ngũ phát triển mở rộng, việc quản lý và áp dụng các thay đổi cấu hình hạ tầng bắt đầu bộc lộ nhiều thách thức lớn.

Thông thường, một kỹ sư sẽ viết mã Terraform trên máy cục bộ, chạy lệnh terraform plan, sau đó gửi Pull Request (PR) hoặc Merge Request (MR). Một kỹ sư khác sẽ rà soát mã nguồn trên giao diện Git (như GitHub hoặc GitLab). Sau khi PR được duyệt, kỹ sư đầu tiên hoặc hệ thống CI/CD sẽ chạy terraform apply từ máy cục bộ hoặc một server tập trung. Quy trình thủ công này chứa đựng nhiều rủi ro: mất đồng bộ trạng thái (state file), thiếu tính minh bạch khi không biết ai đã thực thi lệnh gì, và nguy cơ áp dụng mã lỗi chưa qua kiểm duyệt kỹ càng vào môi trường Production.

Để giải quyết triệt để vấn đề này, mô hình GitOps cho Hạ Tầng ra đời, và Atlantis chính là giải pháp hàng đầu. Bài viết này sẽ hướng dẫn chi tiết cách cấu hình Atlantis trên một máy chủ ảo cá nhân (VPS) để tự động hóa quy trình rà soát và phê duyệt Terraform Script trực tiếp thông qua Pull Request.

Atlantis là gì? Tại sao nên chọn Atlantis cho GitOps?

Atlantis là một ứng dụng mã nguồn mở hoạt động như một webhook server, lắng nghe các sự kiện từ các nền tảng Git như GitHub, GitLab, Bitbucket. Khi có một Pull Request thay đổi mã nguồn Terraform, Atlantis sẽ tự động thực hiện các tác vụ kiểm tra và phản hồi kết quả trực tiếp dưới dạng bình luận (comment) trong PR đó.

Những lợi ích vượt trội khi tích hợp Atlantis vào quy trình làm việc của doanh nghiệp bao gồm:

  • Minh bạch hóa quy trình (Visibility): Mọi thành viên trong đội ngũ đều có thể nhìn thấy kết quả của lệnh terraform plan ngay trên PR mà không cần quyền truy cập trực tiếp vào hạ tầng đám mây hoặc máy chủ CI/CD.
  • Cơ chế khóa trạng thái (Locking): Atlantis tự động khóa các module hạ tầng đang được thay đổi trong một PR. Điều này ngăn chặn việc hai kỹ sư cùng sửa đổi một tài nguyên tại một thời điểm, tránh xung đột và ghi đè dữ liệu.
  • Phê duyệt nghiêm ngặt (Approval Requirements): Bạn có thể cấu hình để Atlantis chỉ cho phép thực thi lệnh terraform apply sau khi PR nhận được đủ số lượng phê duyệt (Approve) từ các cấp quản lý hoặc đồng nghiệp.
  • Lịch sử lưu trữ tập trung (Audit Trail): Toàn bộ lịch sử lập kế hoạch và triển khai hạ tầng được lưu lại ngay trong luồng thảo luận của PR, giúp việc tra cứu lỗi hoặc kiểm toán sau này trở nên vô cùng dễ dàng.

Chuẩn Bị Trước Khi Cấu Hình Atlantis Trên VPS

Để bắt đầu triển khai Atlantis, bạn cần chuẩn bị các thành phần cơ bản sau:

  1. Một máy chủ VPS: Hệ điều hành Ubuntu Server (20.04 hoặc 22.04 LTS là khuyến nghị), có IP công khai (Public IP).
  2. Một tên miền (Domain/Subdomain): Trỏ về IP của VPS và được cấu hình SSL (chạy HTTPS) vì các nền tảng như GitHub yêu cầu webhook phải sử dụng kết nối bảo mật.
  3. Tài khoản Git và Access Token: Một tài khoản bot trên GitHub/GitLab sở hữu quyền truy cập vào kho mã nguồn (repository) hạ tầng của bạn, kèm theo một Personal Access Token (PAT).
  4. Cài đặt sẵn Terraform: Phiên bản Terraform tương thích với mã nguồn hạ tầng hiện tại của bạn trên VPS.

Hướng Dẫn Từng Bước Cấu Hình Atlantis Trên VPS Ubuntu

Bước 1: Cài đặt Atlantis và Terraform trên VPS

Đầu tiên, hãy truy cập vào VPS qua SSH và tải xuống phiên bản Atlantis mới nhất. Bạn có thể tìm link tải chính thức tại trang GitHub Releases của Atlantis.

wget https://github.com/runatlantis/atlantis/releases/download/v0.25.0/atlantis_linux_amd64.zip
unzip atlantis_linux_amd64.zip
sudo mv atlantis /usr/local/bin/

Tiếp theo, hãy cài đặt Terraform bằng cách thêm kho lưu trữ chính thức của HashiCorp:

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt-get update && sudo apt-get install terraform

Bước 2: Cấu hình Webhook Secret và Personal Access Token (PAT)

Trên tài khoản GitHub của bạn (hoặc tài khoản bot), hãy tạo một Personal Access Token (Classic) với các quyền tối thiểu bao gồm: repo (để đọc/ghi mã nguồn và tạo comment). Lưu mã token này lại.

Đồng thời, hãy tự tạo một chuỗi ký tự ngẫu nhiên dài để làm Webhook Secret (ví dụ: sử dụng lệnh openssl rand -hex 32). Chuỗi này giúp xác thực rằng các yêu cầu gửi đến VPS của bạn thực sự đến từ GitHub chứ không phải kẻ mạo danh.

Bước 3: Tạo File Cấu Hình Server cho Atlantis

Tạo một file cấu hình định dạng YAML hoặc sử dụng các biến môi trường để chạy Atlantis. Cách tốt nhất là tạo một file cấu hình tại đường dẫn /etc/atlantis/config.yaml với nội dung tham khảo sau:

  atlantis-url: "https://atlantis.yourdomain.com"
  gh-user: "your-github-bot-username"
  gh-token: "your-personal-access-token"
  gh-webhook-secret: "your-webhook-secret"
  repo-allowlist: "github.com/your-organization/*"
  port: 4141
  

Lưu ý: Thay thế các giá trị trên bằng thông tin chính xác của doanh nghiệp và hệ thống của bạn.

Bước 4: Cấu hình Reverse Proxy Nginx và SSL Let's Encrypt

Để đảm bảo an toàn, chúng ta không nên mở trực tiếp port 4141 ra internet. Thay vào đó, hãy sử dụng Nginx làm Reverse Proxy và cấu hình SSL miễn phí với Certbot.

Cài đặt Nginx và cấu hình một block server chuyển hướng traffic từ cổng 80/443 vào cổng 4141 nội bộ. Sau khi hoàn tất cài đặt SSL bằng lệnh sudo certbot --nginx, các yêu cầu gửi tới https://atlantis.yourdomain.com sẽ được mã hóa an toàn và chuyển đến ứng dụng Atlantis.

Bước 5: Tạo Systemd Service để Quản Lý Atlantis

Để đảm bảo Atlantis hoạt động liên tục ngay cả khi VPS khởi động lại, hãy tạo một systemd service bằng lệnh: sudo nano /etc/systemd/system/atlantis.service:

  [Unit]
  Description=Atlantis Terraform Automation
  After=network.target

  [Service]
  Type=simple
  User=root
  ExecStart=/usr/local/bin/atlantis server --config /etc/atlantis/config.yaml
  Restart=always
  RestartSec=5

  [Install]
  WantedBy=multi-user.target
  

Kích hoạt và khởi chạy dịch vụ:

sudo systemctl enable atlantis
sudo systemctl start atlantis

Trải Nghiệm Quy Trình Tự Động Hóa Qua Pull Request

Sau khi hệ thống đã vận hành ổn định, bạn tiến hành cấu hình Webhook trên Repository chứa mã nguồn Terraform của bạn trên GitHub. Trỏ URL của Webhook về đường dẫn https://atlantis.yourdomain.com/events, chọn Content type là application/json, nhập Webhook Secret đã tạo và chọn các sự kiện kích hoạt bao gồm: Issue comments, Pull requests, Pull request reviews, và Pushes.

Giờ đây, quy trình làm việc chuyên nghiệp của bạn sẽ diễn ra như sau:

  1. Tạo nhánh mới và đẩy mã nguồn: Kỹ sư DevOps tạo một nhánh (branch) mới, chỉnh sửa hạ tầng (ví dụ: thêm một cụm server AWS EC2) và mở một Pull Request hướng về nhánh chính (main/master).
  2. Tự động Plan: Ngay khi PR được mở, Atlantis phát hiện sự kiện và tự động chạy lệnh atlantis plan (tương đương terraform plan) trên VPS. Kết quả chi tiết về số lượng tài nguyên được thêm mới, sửa đổi hoặc xóa bỏ sẽ được bot ghi nhận lại dưới dạng một bình luận ngay trong PR.
  3. Đánh giá và Thảo luận: Các kỹ sư khác vào kiểm tra kết quả plan này. Nếu có điểm bất thường, họ có thể yêu cầu sửa đổi trực tiếp trên code. Khi mọi thứ đã hoàn hảo, người quản lý sẽ nhấn nút Approve cho PR đó.
  4. Thực thi áp dụng (Apply): Kỹ sư chỉ cần gõ một dòng bình luận: atlantis apply vào PR. Atlantis sẽ kiểm tra điều kiện phê duyệt, tiến hành chạy lệnh triển khai hạ tầng thực tế trên VPS, cập nhật lại file trạng thái (state), đồng thời thông báo kết quả thành công và tự động đóng/merge PR đó lại.

Các Best Practices Để Vận Hành Atlantis An Toàn

Triển khai tự động hóa hạ tầng mang lại sự tiện lợi, nhưng an ninh bảo mật luôn là yếu tố phải đặt lên hàng đầu. Dưới đây là những khuyến nghị từ chuyên gia khi vận hành Atlantis trên VPS:

  • Sử dụng File Cấu Hình server-side-config: Luôn kiểm soát chặt chẽ các lệnh mà các kỹ sư có thể chạy thông qua file cấu hình của Atlantis, tránh việc họ chèn các lệnh hệ thống độc hại thông qua tùy biến quy trình làm việc (custom workflows).
  • Phân quyền IAM tối thiểu (Least Privilege): VPS chạy Atlantis cần có quyền truy cập vào nhà cung cấp đám mây (AWS, Azure, GCP). Hãy đảm bảo các thông tin định danh (Credentials) hoặc vai trò (IAM Roles) gắn với VPS này chỉ có những quyền hạn vừa đủ để quản lý các tài nguyên được chỉ định.
  • Cấu hình Repo Allowlist: Chỉ cho phép Atlantis lắng nghe và thực thi từ những tổ chức (Organizations) hoặc kho lưu trữ (Repositories) cụ thể thuộc quyền sở hữu của bạn thông qua cờ hiệu --repo-allowlist.
  • Bảo vệ nhánh chính: Thiết lập quy định trên GitHub/GitLab bắt buộc phải có ít nhất 1-2 lượt phê duyệt từ trưởng nhóm (Code Owners) thì lệnh atlantis apply mới được phép hoạt động.

Kết luận

Xây dựng quy trình tự động hóa rà soát và phê duyệt Terraform Script qua Pull Request bằng cách cấu hình Atlantis trên VPS là một bước đi chiến lược giúp doanh nghiệp tối ưu hóa hoạt động vận hành hạ tầng. Mô hình này không chỉ loại bỏ các thao tác thủ công rườm rà, giảm thiểu sai sót do con người gây ra, mà còn nâng cao tính bảo mật, đồng bộ và chuyên nghiệp cho toàn bộ đội ngũ kỹ sư. Hãy bắt đầu triển khai ngay hôm nay để trải nghiệm sức mạnh đích thực của GitOps trong quản lý hạ tầng số doanh nghiệp của bạn.

Tự Động Hóa Quản Lý Infrastructure as Code: Hướng Dẫn Cấu Hình Atlantis Trên VPS Để Rà Soát Và Phê Duyệt Terraform Qua Pull Request | DPTCloud