Infrastructure as Code (IaC) là gì? Khi hạ tầng bắt đầu được quản lý như phần mềm
Có một giai đoạn trong ngành IT mà việc quản trị hạ tầng gần như đồng nghĩa với việc SSH vào từng server, telnet/console vào từng thiết bị mạng, hoặc mở giao diện web để click từng cấu hình.
Dân network gọi vui đó là “finger net” — cấu hình bằng… ngón tay.
Nghe quen chứ?
Khi hạ tầng chỉ vài thiết bị, cách này vẫn sống được.
Nhưng khi hệ thống có:
…thì cách làm thủ công bắt đầu sụp đổ.
IaC là gì?
Infrastructure as Code (IaC) là phương pháp quản lý, cấu hình và provisioning hạ tầng CNTT thông qua code thay vì thao tác trực tiếp trên thiết bị.
Nói ngắn gọn:
Thay vì:
Ta chuyển sang:
Sau đó công cụ automation sẽ đọc code đó và triển khai cấu hình tương ứng.
Đây là định nghĩa cốt lõi:
The management and provisioning of computer infrastructure through code and data structures instead of direct device management.
Dịch sát nghĩa:
Quản lý và triển khai hạ tầng máy tính thông qua mã nguồn và cấu trúc dữ liệu thay vì thao tác trực tiếp lên thiết bị.
Vấn đề của cách quản trị truyền thống
Quản lý hạ tầng thủ công thường gặp các vấn đề: 1. Chậm
Cấu hình 1 server mất 10 phút.
100 server?
=> hơn 16 giờ.
Nếu có lỗi giữa chừng thì còn lâu hơn.
2. Dễ sai
Con người copy-paste nhầm là chuyện bình thường.
Ví dụ:
ip route 0.0.0.0 0.0.0.0 10.1.1.2
đáng lẽ phải là:
10.1.1.1
Một typo nhỏ có thể làm outage.
3. Không nhất quán
Server A:
NTP = ntp1.company.local
Server B:
NTP = ntp.local
Server C:
không cấu hình.
Rất nhanh hệ thống drift khỏi chuẩn.
4. Không audit tốt
Ai đổi cấu hình?
Đổi lúc nào?
Rollback thế nào?
Nếu làm bằng click GUI thì rất khó truy vết.
Triết lý cốt lõi của IaC: Desired State
IaC không nói:
IaC nói:
Ví dụ:
Muốn có:
Bạn chỉ mô tả:
resource "aws_instance" ...
resource "aws_vpc" ...
Terraform sẽ lo phần còn lại.
Đây gọi là:
Desired State Configuration
IaC hoạt động như thế nào?
Luồng cơ bản: Bước 1 — Define
Khai báo trạng thái mong muốn:
Ví dụ:
hostname: web01
packages:
- nginx
- docker
Bước 2 — Compare
Automation tool kiểm tra trạng thái thực tế.
Ví dụ:
Bước 3 — Remediate
Nếu lệch chuẩn:
Tool tự sửa.
Ví dụ:
apt install nginx
Bước 4 — Maintain
Nếu ai đó manual sửa cấu hình:
IaC có thể đưa hệ thống về đúng baseline.
Đây là chống:
configuration drift
Các công cụ IaC phổ biến
Terraform
Rất phổ biến cho cloud provisioning.
Dùng để tạo:
Ví dụ:
terraform apply
Terraform mạnh ở:
Provisioning infrastructure
Ansible
Agentless automation.
Dùng SSH/WinRM/API.
Phù hợp:
Ví dụ:
- hosts: routers
tasks:
- ios_config:
Rất hợp với dân NetDevOps.
Puppet
Model agent-based.
Có:
Mạnh ở:
Chef
Code-centric automation.
Infrastructure được mô tả bằng Ruby DSL.
SaltStack
Remote execution + configuration management.
Scale lớn khá tốt.
AWS CloudFormation
IaC native của AWS.
Nếu all-in AWS thì rất hữu ích.
Pulumi
IaC nhưng dùng ngôn ngữ lập trình thật:
Khá hấp dẫn với developer.
Network Engineer có cần IaC không?
Rất cần.
Nhiều người nghĩ IaC chỉ dành cho cloud engineer.
Sai.
Ví dụ network automation:
Thay vì:
ssh sw1
vlan 10
name USERS
Ta viết:
vlans:
- id: 10
name: USERS
Ansible push xuống 200 switch.
Đây chính là IaC.
IaC vs ClickOps vs CLI Ops
ClickOps
CLI Ops
IaC
Lợi ích thực chiến
IaC giúp:
Góc nhìn DevOps thực tế
IaC là lý do infrastructure bắt đầu được đối xử như software.
Điều đó kéo theo:
Hạ tầng không còn là “cấu hình thủ công”.
Mà trở thành:
software-defined operational model
Kết luận
Nếu DevOps thay đổi cách build software…
thì IaC thay đổi cách build infrastructure.
Từ:
“login vào thiết bị để sửa”
sang:
“commit code để thay đổi hệ thống.”
Đó là một thay đổi tư duy rất lớn.
Và với Cloud, NetDevOps, Platform Engineering, AI Infrastructure…
IaC gần như đã trở thành kỹ năng nền tảng.
Có một giai đoạn trong ngành IT mà việc quản trị hạ tầng gần như đồng nghĩa với việc SSH vào từng server, telnet/console vào từng thiết bị mạng, hoặc mở giao diện web để click từng cấu hình.
Dân network gọi vui đó là “finger net” — cấu hình bằng… ngón tay.
Nghe quen chứ?
- Thêm VLAN? SSH vào switch.
- Tạo VM mới? Click trong vCenter.
- Mở firewall rule? Login firewall GUI.
- Scale cloud environment? Vào portal click tiếp.
Khi hạ tầng chỉ vài thiết bị, cách này vẫn sống được.
Nhưng khi hệ thống có:
- 100 VM
- 50 switch/router
- nhiều firewall
- hybrid cloud (AWS + Azure + on-prem)
- CI/CD pipeline cần provisioning tự động
…thì cách làm thủ công bắt đầu sụp đổ.
IaC là gì?
Infrastructure as Code (IaC) là phương pháp quản lý, cấu hình và provisioning hạ tầng CNTT thông qua code thay vì thao tác trực tiếp trên thiết bị.
Nói ngắn gọn:
Thay vì:
“Đăng nhập vào thiết bị và cấu hình.”
Ta chuyển sang:
“Mô tả trạng thái mong muốn của hệ thống bằng code.”
Sau đó công cụ automation sẽ đọc code đó và triển khai cấu hình tương ứng.
Đây là định nghĩa cốt lõi:
The management and provisioning of computer infrastructure through code and data structures instead of direct device management.
Dịch sát nghĩa:
Quản lý và triển khai hạ tầng máy tính thông qua mã nguồn và cấu trúc dữ liệu thay vì thao tác trực tiếp lên thiết bị.
Vấn đề của cách quản trị truyền thống
Quản lý hạ tầng thủ công thường gặp các vấn đề: 1. Chậm
Cấu hình 1 server mất 10 phút.
100 server?
=> hơn 16 giờ.
Nếu có lỗi giữa chừng thì còn lâu hơn.
2. Dễ sai
Con người copy-paste nhầm là chuyện bình thường.
Ví dụ:
ip route 0.0.0.0 0.0.0.0 10.1.1.2
đáng lẽ phải là:
10.1.1.1
Một typo nhỏ có thể làm outage.
3. Không nhất quán
Server A:
NTP = ntp1.company.local
Server B:
NTP = ntp.local
Server C:
không cấu hình.
Rất nhanh hệ thống drift khỏi chuẩn.
4. Không audit tốt
Ai đổi cấu hình?
Đổi lúc nào?
Rollback thế nào?
Nếu làm bằng click GUI thì rất khó truy vết.
Triết lý cốt lõi của IaC: Desired State
IaC không nói:
“Hãy chạy lệnh này.”
IaC nói:
“Tôi muốn hệ thống ở trạng thái này.”
Ví dụ:
Muốn có:
- 3 EC2 instances
- 1 VPC
- 2 subnets
- 1 load balancer
Bạn chỉ mô tả:
resource "aws_instance" ...
resource "aws_vpc" ...
Terraform sẽ lo phần còn lại.
Đây gọi là:
Desired State Configuration
IaC hoạt động như thế nào?
Luồng cơ bản: Bước 1 — Define
Khai báo trạng thái mong muốn:
Ví dụ:
hostname: web01
packages:
- nginx
- docker
Bước 2 — Compare
Automation tool kiểm tra trạng thái thực tế.
Ví dụ:
- nginx đã cài chưa?
- docker đã có chưa?
- hostname đúng chưa?
Bước 3 — Remediate
Nếu lệch chuẩn:
Tool tự sửa.
Ví dụ:
apt install nginx
Bước 4 — Maintain
Nếu ai đó manual sửa cấu hình:
IaC có thể đưa hệ thống về đúng baseline.
Đây là chống:
configuration drift
Các công cụ IaC phổ biến
Terraform
Rất phổ biến cho cloud provisioning.
Dùng để tạo:
- AWS
- Azure
- GCP
- VMware
- Kubernetes resources
Ví dụ:
terraform apply
Terraform mạnh ở:
Provisioning infrastructure
Ansible
Agentless automation.
Dùng SSH/WinRM/API.
Phù hợp:
- server config
- network automation
- patching
- compliance
Ví dụ:
- hosts: routers
tasks:
- ios_config:
Rất hợp với dân NetDevOps.
Puppet
Model agent-based.
Có:
- Puppet Server
- Puppet Agent
Mạnh ở:
- state enforcement
- configuration compliance
Chef
Code-centric automation.
Infrastructure được mô tả bằng Ruby DSL.
SaltStack
Remote execution + configuration management.
Scale lớn khá tốt.
AWS CloudFormation
IaC native của AWS.
Nếu all-in AWS thì rất hữu ích.
Pulumi
IaC nhưng dùng ngôn ngữ lập trình thật:
- Python
- TypeScript
- Go
- C#
Khá hấp dẫn với developer.
Network Engineer có cần IaC không?
Rất cần.
Nhiều người nghĩ IaC chỉ dành cho cloud engineer.
Sai.
Ví dụ network automation:
Thay vì:
ssh sw1
vlan 10
name USERS
Ta viết:
vlans:
- id: 10
name: USERS
Ansible push xuống 200 switch.
Đây chính là IaC.
IaC vs ClickOps vs CLI Ops
ClickOps
- GUI
- nhanh cho lab nhỏ
- khó scale
- khó audit
CLI Ops
- linh hoạt
- mạnh
- vẫn manual
IaC
- repeatable
- version controlled
- scalable
- auditable
- automatable
Lợi ích thực chiến
IaC giúp:
- triển khai nhanh
- rollback dễ
- peer review config
- CI/CD cho infrastructure
- giảm human error
- compliance tốt hơn
- chuẩn hóa môi trường
Góc nhìn DevOps thực tế
IaC là lý do infrastructure bắt đầu được đối xử như software.
Điều đó kéo theo:
- Git cho config
- pull request
- code review
- automated testing
- deployment pipeline
Hạ tầng không còn là “cấu hình thủ công”.
Mà trở thành:
software-defined operational model
Kết luận
Nếu DevOps thay đổi cách build software…
thì IaC thay đổi cách build infrastructure.
Từ:
“login vào thiết bị để sửa”
sang:
“commit code để thay đổi hệ thống.”
Đó là một thay đổi tư duy rất lớn.
Và với Cloud, NetDevOps, Platform Engineering, AI Infrastructure…
IaC gần như đã trở thành kỹ năng nền tảng.