🚀 [TỰ ĐỘNG HÓA MẠNG VỚI TERRAFORM – BÀI 2]
Hiểu nhanh về Resources, Data Sources và File cấu hình trong Terraform
Bạn đang học Terraform để tự động hoá hạ tầng mạng Cisco IOS XE, Catalyst Center, hoặc SD-WAN? Bài này sẽ giúp bạn nắm chắc ba khái niệm cực kỳ nền tảng trong hành trình DevNetOps.
🔹 1. Resource – Thành phần chủ động "tạo ra" hạ tầng
Trong Terraform, resource là cách bạn mô tả ý định muốn tạo gì: VLAN, interface, device template, hay policy...
Ví dụ:
resource "iosxe_interface_vlan" "vlan_10" { name = 10 autostate = false description = "Production data VLAN" shutdown = false }
📌 Resource tương tác với thiết bị, nghĩa là khi terraform apply, Terraform sẽ tạo hoặc thay đổi cấu hình thực tế.
🔹 2. Data Source – Thành phần "đọc thông tin hiện có"
data block dùng để lấy thông tin từ hệ thống có sẵn (interface, template...) mà bạn không tạo ra, nhưng cần tham chiếu.
Ví dụ:
data "iosxe_interface_ethernet" "gi3" { type = "GigabitEthernet" name = "3" }
🛑 Dùng data không hề thay đổi trạng thái thiết bị, chỉ để đọc.
🔹 3. Terraform Plans / Configuration Files – Cấu trúc file .tf
🔹 4. Liên kết dữ liệu giữa các resource
Bạn có thể tham chiếu lẫn nhau bằng cú pháp:
${resource_type.resource_name.attribute}
Ví dụ:
parent_name = "${catalystcenter_building.main_building.paren t_na me}/${catalystcenter_building.main_building.name}"
👉 Đây là cách mà resource floor có thể biết nó thuộc về resource building.
🔹 5. Kết hợp Data Source & Resource (SD-WAN Example)
Bạn có thể dùng data source để lấy thông tin template có sẵn, rồi "nhúng" vào resource khi tạo thiết bị:
{ id = data.sdwan_cisco_logging_feature_template.Factory_ Default_Cisco_Logging_Template.id }
📌 Đây là kỹ thuật phổ biến khi làm với các template có sẵn trên Cisco vManage hoặc Catalyst Center.
📌 TIPS THỰC CHIẾN:
💡 Tự học Terraform hiệu quả hơn?
Bắt đầu bằng mô hình nhỏ: Tạo 1 VLAN + Gán vào 1 interface + Dùng data source để lấy thông tin cổng vật lý có sẵn. Sau đó dần mở rộng.
Hiểu nhanh về Resources, Data Sources và File cấu hình trong Terraform
Bạn đang học Terraform để tự động hoá hạ tầng mạng Cisco IOS XE, Catalyst Center, hoặc SD-WAN? Bài này sẽ giúp bạn nắm chắc ba khái niệm cực kỳ nền tảng trong hành trình DevNetOps.
🔹 1. Resource – Thành phần chủ động "tạo ra" hạ tầng
Trong Terraform, resource là cách bạn mô tả ý định muốn tạo gì: VLAN, interface, device template, hay policy...
Ví dụ:
resource "iosxe_interface_vlan" "vlan_10" { name = 10 autostate = false description = "Production data VLAN" shutdown = false }
📌 Resource tương tác với thiết bị, nghĩa là khi terraform apply, Terraform sẽ tạo hoặc thay đổi cấu hình thực tế.
🔹 2. Data Source – Thành phần "đọc thông tin hiện có"
data block dùng để lấy thông tin từ hệ thống có sẵn (interface, template...) mà bạn không tạo ra, nhưng cần tham chiếu.
Ví dụ:
data "iosxe_interface_ethernet" "gi3" { type = "GigabitEthernet" name = "3" }
🛑 Dùng data không hề thay đổi trạng thái thiết bị, chỉ để đọc.
🔹 3. Terraform Plans / Configuration Files – Cấu trúc file .tf
- Các file Terraform dùng định dạng .tf hoặc .tf.json, viết bằng HCL (HashiCorp Configuration Language).
- Có thể là một file main.tf, hoặc chia nhỏ thành nhiều file như vlan.tf, interface.tf, output.tf...
- Terraform sẽ quét toàn bộ folder khi chạy để gom tất cả cấu hình lại.
🔹 4. Liên kết dữ liệu giữa các resource
Bạn có thể tham chiếu lẫn nhau bằng cú pháp:
${resource_type.resource_name.attribute}
Ví dụ:
parent_name = "${catalystcenter_building.main_building.paren t_na me}/${catalystcenter_building.main_building.name}"
👉 Đây là cách mà resource floor có thể biết nó thuộc về resource building.
🔹 5. Kết hợp Data Source & Resource (SD-WAN Example)
Bạn có thể dùng data source để lấy thông tin template có sẵn, rồi "nhúng" vào resource khi tạo thiết bị:
{ id = data.sdwan_cisco_logging_feature_template.Factory_ Default_Cisco_Logging_Template.id }
📌 Đây là kỹ thuật phổ biến khi làm với các template có sẵn trên Cisco vManage hoặc Catalyst Center.
📌 TIPS THỰC CHIẾN:
- Khi nào dùng resource? → Khi bạn muốn tạo mới hoặc cập nhật.
- Khi nào dùng data? → Khi bạn chỉ cần "đọc" thông tin có sẵn để dùng ở chỗ khác.
- Luôn giữ cấu trúc file gọn, chia theo module hoặc loại resource để dễ bảo trì.
💡 Tự học Terraform hiệu quả hơn?
Bắt đầu bằng mô hình nhỏ: Tạo 1 VLAN + Gán vào 1 interface + Dùng data source để lấy thông tin cổng vật lý có sẵn. Sau đó dần mở rộng.