RobustX / Chương trình học / Vị trí công việc / DevOps Engineer / Tự Động Hóa Hạ Tầng Với Infrastructure As Code

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

Đối tượng tham gia

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:

  1. Dùng Terraform: 
    • Tạo 4 máy ảo qua Proxmox hoặc vSphere 
    • Tự gán IP, hostname, SSH key 
  2. 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 
  3. 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