Nhiều team hay tranh luận:

“Đã dùng AWS/Kubernetes rồi thì còn cần Ansible nữa không?”

Câu trả lời đúng là: tùy kiến trúc triển khai.


1) Trường hợp không cần Ansible: container-native hoàn toàn

Nếu stack của bạn là Kubernetes-first (ví dụ EKS + Helm), thì phần lớn vai trò “cấu hình server” đã chuyển sang khai báo container và manifests.

Push code
   -> Jenkins build
   -> Docker image
   -> Push ECR
   -> Helm upgrade/install
   -> Kubernetes pull image + tạo Pod
   -> ConfigMap/Secret inject env vars

Trong mô hình này:

  • Không SSH vào từng VM để cài thủ công
  • Không cần orchestration kiểu imperative trên host level
  • Desired state chủ yếu do K8s + Helm quản lý

Mapping vai trò công cụ

Vai trò Công cụ chính
Provisioning runtime Kubernetes (EKS)
Config/deploy app Helm
Env & secrets ConfigMap + Secret
CI/CD orchestration Jenkins
Image registry AWS ECR
Build artifact Docker + Dockerfile

2) Trường hợp vẫn cần Ansible: deploy lên VM/EC2 qua SSH

Ansible không phụ thuộc cloud provider. Nó chỉ cần kết nối được tới host (thường là SSH).

Ví dụ một flow phổ biến:

Jenkins pipeline
   -> run Ansible playbook
   -> SSH private IP của EC2
   -> pull Docker image (Artifactory/ECR)
   -> restart/update container service

Mẫu inventory điển hình:

app-prod ansible_host=<private-ec2-ip> ansible_port=22 ansible_user=ec2-user

Điều kiện để chạy được:

  • Jenkins agent và EC2 cùng VPC/network (hoặc có đường route/VPN)
  • Security Group/NACL cho phép SSH phù hợp

3) Phân biệt đúng: Session Manager vs Ansible

Nhiều team nhầm chỗ này:

  • AWS Systems Manager Session Manager: kênh admin/troubleshooting thủ công
  • Ansible: automation để chạy playbook hàng loạt, có repeatability

Hai công cụ có thể cùng tồn tại, phục vụ mục đích khác nhau.


4) Quy tắc chọn nhanh

Nếu workload chủ yếu chạy trên Kubernetes + Helm:
  -> ưu tiên declarative deploy, thường không cần Ansible cho app deploy.

Nếu workload còn nằm trên VM/EC2 và cần cấu hình host/service qua SSH:
  -> Ansible vẫn rất phù hợp.

Kết luận

Không có câu trả lời “luôn cần” hay “luôn không cần”.

  • Container-native: K8s + Helm thường thay được phần lớn use case của Ansible ở tầng app deployment.
  • VM/EC2-based: Ansible vẫn là công cụ automation mạnh, đặc biệt cho cấu hình host, rollout có kiểm soát và thao tác lặp lại.

Nói ngắn gọn: chọn công cụ theo deployment model, không theo tên cloud provider.