
Tự động hóa Hạ tầng với Infrastructure as Code (IaC Fundamentals)
Infrastructure as Code (IaC) là kỹ thuật then chốt trong DevOps, cho phép mô tả toàn bộ hạ tầng bằng mã – từ VM, network, disk, cho đến user, package và service. Khoá học này giúp học viên thành thạo hai công cụ phổ biến nhất: Terraform để quản lý hạ tầng (VM, mạng, DNS, volume…), và Ansible để cấu hình hệ điều hành, cài phần mềm, deploy ứng dụng. Môn học đi từ nguyên lý đến thực hành dự án mô phỏng thực tế, giúp học viên sẵn sàng cho môi trường production hoặc hybrid cloud.
Thời lượng: 18h

Bạn đạt được gì sau khi hoàn thành khóa học

Hiểu rõ triết lý, lợi ích và các mô hình của Infrastructure as Code (IaC)
Bạn sẽ phân biệt được khi nào nên dùng công cụ khai báo (Declarative – Terraform) và khi nào dùng công cụ mệnh lệnh (Imperative – Ansible) để lựa chọn giải pháp phù hợp.

Sử dụng Terraform để khởi tạo và quản lý vòng đời của hạ tầng
Tự tin viết mã để tạo ra các tài nguyên như máy ảo, mạng, ổ đĩa trên các nền tảng khác nhau và quản lý chúng một cách nhất quán qua các lệnh plan, apply, destroy.
Dùng Ansible để tự động hóa việc cấu hình phần mềm và triển khai ứng dụng
Viết các Playbook và Role để tự động cài đặt Nginx, cấu hình cơ sở dữ liệu, tạo người dùng, và triển khai mã nguồn ứng dụng lên hàng loạt máy chủ.

Tổ chức mã IaC một cách chuyên nghiệp bằng Module và Role
Học cách đóng gói các đoạn mã Terraform thành Module và mã Ansible thành Role để có thể tái sử dụng, giúp quản lý và mở rộng các dự án hạ tầng phức tạp.

Kết hợp Terraform và Ansible để tạo ra một pipeline tự động hóa hoàn chỉnh
Xây dựng một quy trình chuẩn DevOps: Terraform tạo ra hạ tầng trống, sau đó tự động chuyển thông tin (như địa chỉ IP) để Ansible tiếp quản và thực hiện phần cấu hình.
Quản lý trạng thái (state) và thông tin nhạy cảm (secret) một cách an toàn
Hiểu tầm quan trọng của file state trong Terraform và cách bảo vệ nó, đồng thời sử dụng Ansible Vault để mã hóa các mật khẩu và token ngay trong mã nguồn của bạn.

Đối tượng tham gia

Kỹ sư DevOps và Cloud muốn tự động hóa hoàn toàn việc tạo và quản lý hạ tầng, từ môi trường development đến production.

Quản trị viên hệ thống (System Administrator) muốn chuyển đổi từ phương pháp thủ công sang quản lý hạ tầng bằng mã, giúp tăng tốc độ và giảm thiểu sai sót.

Kỹ sư Nền tảng (Platform Engineer) có nhiệm vụ xây dựng các nền tảng tự phục vụ (self-service platform) để các nhóm phát triển có thể tự tạo môi trường.

Lập trình viên (Developer) muốn tự chủ trong việc tạo môi trường phát triển, kiểm thử, hoặc muốn hiểu sâu hơn về cách ứng dụng của họ được triển khai.

Yêu cầu tiên quyết
- Sử dụng dòng lệnh Linux, Git, cấu trúc file
- Hiểu cơ bản mạng, máy ảo, cloud hoặc vSphere/Proxmox
- Đã học Python hoặc Bash ở mức căn bản
Nội dung khóa học
1. Kiến trúc và khái niệm về IaC
- IaC là gì? Lợi ích và use case điển hình
- Declarative vs Imperative: khi nào dùng Terraform, khi nào dùng Ansible
- Immutable infrastructure: khái niệm và vai trò
- So sánh công cụ IaC phổ biến: Terraform, Pulumi, Ansible, SaltStack
- Kiến trúc hạ tầng có thể mô hình hóa được: VM, LB, subnet, DNS, storage…
2. Làm việc với Terraform – Phần 1: Cơ bản
- Cài đặt và cấu trúc thư mục dự án
- Viết file .tf: provider, resource, variable, output
- terraform init, plan, apply, destroy, taint, import
- Biến: định nghĩa, truyền qua dòng lệnh, file .tfvars
- Output giá trị: IP, SSH key, secret
3. Làm việc với Terraform – Phần 2: Thực tế
- Provider vSphere hoặc Proxmox
- Tạo máy ảo từ template, gán CPU/RAM/Disk/NIC
- Gắn cloud-init: hostname, user, SSH key, IP tĩnh
- Output thông tin cho Ansible
- Remote provisioner: remote-exec, local-exec
- Tạo nhiều VM theo list/map
4. Quản lý module, môi trường và state
- Module: tách logic cấu hình (vm_module, network_module…)
- Input/output giữa module cha – con
- File terraform.tfvars, backend, override
- Tách môi trường: dev, staging, prod
- Workspace & backend (giới thiệu): remote state, locking
- Lifecycle: prevent_destroy, create_before_destroy, depends_on
5. Làm việc với Ansible – Phần 1: Cơ bản
- Cài Ansible, cấu hình inventory
- Lệnh: ansible, ansible-playbook, ansible-inventory
- Viết playbook:
- Cài Nginx, restart service
- Copy file config từ template (.j2)
- Tạo user/group, ssh key, phân quyền
- Biến: vars, vars_files, register, facts
6. Làm việc với Ansible – Phần 2: Quản lý cấu hình chuẩn
- Tách task thành role: role web, db, ssh, common
- Handler, loop, when, block
- Kết hợp ansible-vault để mã hoá secret
- Template Jinja2 nâng cao
- Tối ưu hoá tốc độ chạy, cấu hình parallel
- Debug, validate syntax, dry-run (–check, –diff)
7. Kết hợp Terraform + Ansible trong pipeline
- Output IP từ Terraform → tạo file inventory cho Ansible
- Shell script: terraform apply → inventory → ansible-playbook
- Sử dụng dynamic inventory (giới thiệu)
- Triển khai 3 tầng:
- Tầng 1: Terraform → VM + SSH key
- Tầng 2: Ansible → cấu hình app
- Tầng 3: Docker/CI/CD (nếu tích hợp)
8. Best Practices và mô hình thực tế
- Cấu trúc dự án IaC chuẩn production
- GitOps cho Terraform và Ansible
- Tự động hoá validate, lint, CI cho IaC
- So sánh IaC On-prem vs IaC Cloud (liên hệ AWS, Azure)
- DevSecOps – kiểm tra cấu hình hạ tầng an toàn
9. Bài thực hành tổng hợp
Dự án Mini: Tự động hóa hạ tầng + cấu hình cho hệ thống nội bộ
Mô tả hệ thống:
- 1 Load Balancer (nginx hoặc HAProxy)
- 2 Web Server (Python Flask hoặc PHP)
- 1 DB Server (MySQL/PostgreSQL)
Yêu cầu:
- Dùng Terraform:
- Tạo 4 máy ảo qua Proxmox hoặc vSphere
- Tự gán IP, hostname, SSH key
- Dùng Ansible:
- Cài đặt Nginx trên LB, App trên Web, DB
- Tạo user, harden SSH, phân quyền
- Dùng template config cho LB routing
- Bonus:
- Gắn tag Git cho mỗi lần deploy
- Export inventory → Git → chạy auto pipeline
- Lưu log kết quả dưới dạng HTML/txt gửi mail (tùy chọn)

Bài viết liên quan
