Loading...

Bài 87: Automation là gì — vì sao kỹ sư mạng thời nay cần biết code

💡 Liên hệ thực tế

Anh Nam quản lý 40 switch access tại các chi nhánh của một chuỗi cửa hàng. Mỗi lần công ty đổi địa chỉ máy chủ NTP (máy chủ đồng bộ thời gian) — ví dụ chuyển từ máy chủ NTP nội bộ sang máy chủ NTP mới do nhà mạng cung cấp — anh phải Telnet/SSH vào từng switch, gõ lại đúng 3 dòng lệnh, lưu cấu hình, rồi kiểm tra lại — lặp lại 40 lần. Một buổi chiều gõ tay, anh gõ nhầm địa chỉ NTP ở switch thứ 27, không ai phát hiện ra cho đến khi log time bị lệch gây rối loạn đối soát giao dịch.

Nếu công ty có 4.000 switch thay vì 40, cách làm "tay" này không còn khả thi — không phải vì kỹ sư chậm, mà vì xác suất sai sót tăng tuyến tính theo số thiết bị, còn thời gian cũng vậy. Automation ra đời để giải quyết đúng bài toán này: biến một thao tác lặp đi lặp lại thành một đoạn script chạy nhất quán trên hàng trăm, hàng nghìn thiết bị, với cùng một kết quả đầu ra mỗi lần.


📘 Kiến thức cốt lõi

1. Automation mạng là gì

Network Automation là việc dùng phần mềm để cấu hình, quản lý, kiểm tra và vận hành thiết bị mạng thay vì gõ lệnh thủ công qua CLI cho từng thiết bị một. Automation không thay thế kỹ sư mạng — nó thay thế phần lặp lại, dễ đoán trước trong công việc, để kỹ sư dành thời gian cho phần thiết kế, xử lý sự cố phức tạp, và ra quyết định.

🎯 Automation trả lời câu hỏi: "Làm sao thực hiện đúng một thay đổi, trên đúng nhiều thiết bị, mà không phụ thuộc vào việc con người gõ tay không sai sót?"

2. Vì sao CLI truyền thống không còn đủ

Trong nhiều năm, CLI (Command Line Interface) là công cụ chính để quản trị Router, Switch và Firewall. Với hệ thống chỉ vài thiết bị, việc đăng nhập SSH rồi nhập lệnh thủ công vẫn hoàn toàn đáp ứng được nhu cầu.

Tuy nhiên, khi hạ tầng phát triển lên hàng chục, hàng trăm hoặc hàng nghìn thiết bị, cách làm này dần bộc lộ nhiều hạn chế.

Hạn chế của CLI thủ côngẢnh hưởng khi hệ thống lớn
Phải đăng nhập và cấu hình từng thiết bị Thời gian triển khai tăng theo số lượng thiết bị
Dễ gõ sai hoặc thiếu một dòng lệnh Phát sinh Configuration Drift — các thiết bị đáng lẽ có cùng cấu hình nhưng dần khác nhau theo thời gian
Không có quy trình chuẩn để ghi nhận thay đổi Khó rollback khi có sự cố và khó audit ai đã thay đổi cấu hình, thay đổi khi nào
Kết quả của các lệnh show chủ yếu ở dạng văn bản dành cho con người Muốn tự động xử lý, script phải phân tích chuỗi ký tự (Regex hoặc Text Parsing); chỉ cần Cisco hoặc nhà sản xuất thay đổi cách hiển thị, script có thể hoạt động sai hoặc ngừng hoạt động

📎 Configuration Drift (cấu hình trôi) là hiện tượng các thiết bị cùng loại, cùng vai trò nhưng sau nhiều lần chỉnh sửa thủ công lại có cấu hình khác nhau. Đây là một trong những nguyên nhân phổ biến gây lỗi khó phát hiện trong hệ thống doanh nghiệp.

Ở quy mô một vài thiết bị, gõ tay vẫn ổn. Nhưng khi hạ tầng mở rộng tới hàng trăm switch, hàng chục firewall, nhiều chi nhánh, chi phí vận hành thủ công tăng nhanh hơn khả năng của một đội ngũ kỹ sư, dù đội ngũ đó giỏi đến đâu.

3. Các thành phần nền tảng của automation mạng

a) Ngôn ngữ lập trình — Python

Python là ngôn ngữ phổ biến nhất trong automation mạng vì cú pháp dễ đọc, hệ sinh thái thư viện phong phú (Netmiko, NAPALM, Requests...) và được hầu hết vendor networking hỗ trợ chính thức trong tài liệu lập trình của họ.

b) Công cụ quản lý cấu hình — Ansible

Ansible là công cụ automation dạng agentless (không cần cài phần mềm trên thiết bị đích), dùng file cấu hình dạng khai báo (YAML) gọi là "playbook" để mô tả trạng thái mong muốn của thiết bị, sau đó tự đẩy cấu hình đến hàng loạt thiết bị cùng lúc qua SSH.

c) Giao thức lập trình thiết bị — NETCONF / RESTCONF

Đây là hai giao thức được IETF chuẩn hóa để cấu hình và lấy dữ liệu thiết bị mạng theo hướng máy-với-máy, thay vì con người gõ CLI:

  • NETCONF (RFC 6241): giao thức chạy trên nền SSH, trao đổi dữ liệu dạng XML, hỗ trợ transaction — nghĩa là nếu một bước trong chuỗi thay đổi thất bại, toàn bộ thay đổi có thể tự động rollback thay vì để thiết bị ở trạng thái cấu hình dở dang.
  • RESTCONF (RFC 8040): cung cấp một phần chức năng tương tự NETCONF nhưng chạy trên nền HTTP/HTTPS, dễ tích hợp với các công cụ web và script hiện đại hơn.

d) Mô hình dữ liệu — YANG

YANG là ngôn ngữ mô tả cấu trúc dữ liệu cấu hình và trạng thái vận hành của thiết bị theo một khuôn dạng chuẩn hóa, đóng vai trò tương tự như MIB trong SNMP nhưng chi tiết và hiện đại hơn. NETCONF và RESTCONF đều dùng YANG để định nghĩa dữ liệu mà chúng trao đổi.

📎 Cisco IOS-XE và NX-OS hỗ trợ đồng thời cả NETCONF lẫn RESTCONF trên cùng một thiết bị; IOS-XR còn hỗ trợ thêm gNMI. Kỹ sư có thể chọn giao thức phù hợp với công cụ mình đang dùng.

4. Automation thay đổi công việc kỹ sư mạng như thế nào

Sự xuất hiện của Network Automation không làm mất đi vai trò của kỹ sư mạng, mà thay đổi cách họ vận hành hệ thống.

Trước đây, phần lớn thời gian dành cho các công việc lặp đi lặp lại như đăng nhập từng thiết bị, nhập lệnh CLI, kiểm tra cấu hình hay sao lưu cấu hình. Ngày nay, nhiều công việc đó có thể được tự động hóa, giúp kỹ sư tập trung nhiều hơn vào thiết kế, tối ưu và xử lý sự cố.

Trước AutomationSau Automation
Đăng nhập và gõ CLI trên từng thiết bị Viết script hoặc playbook mô tả cấu hình mong muốn rồi triển khai đồng thời cho nhiều thiết bị
Kiểm tra kết quả bằng mắt qua các lệnh show Script tự thu thập dữ liệu, phân tích kết quả và phát hiện sai lệch so với cấu hình chuẩn (Baseline)
Thay đổi cấu hình thủ công, khó theo dõi lịch sử Cấu hình được quản lý bằng Version Control, có thể xem lịch sử thay đổi và rollback khi cần
Công việc chủ yếu là thao tác lệnh CLI Công việc chuyển dần sang thiết kế quy trình tự động hóa và giám sát hệ thống

Automation không thay thế kiến thức mạng

Một quan niệm khá phổ biến là muốn học Network Automation phải trở thành lập trình viên. Thực tế không phải như vậy.

Điều quan trọng nhất vẫn là hiểu cách mạng hoạt động. Script hay công cụ tự động chỉ thực hiện đúng những gì người kỹ sư yêu cầu. Nếu không hiểu VLAN, Routing, ACL, STP hay OSPF, thì dù viết được chương trình cũng rất khó triển khai chính xác.

Vì vậy, kiến thức mạng luôn là nền tảng, còn lập trình chỉ là công cụ hỗ trợ.

Ở cấp độ CCNA, Cisco chỉ yêu cầu học viên:

  • Hiểu Network Automation là gì.
  • Biết lợi ích của Automation trong doanh nghiệp.
  • Làm quen với các khái niệm như API, JSON, YAML, Ansible và Python.
  • Có thể đọc hiểu một đoạn script hoặc playbook đơn giản.

Bạn không cần tự viết các chương trình phức tạp hay trở thành lập trình viên. Việc xây dựng các hệ thống Automation lớn, phát triển ứng dụng bằng Python hoặc sử dụng API ở mức chuyên sâu sẽ được học trong các chứng chỉ như CCNP Enterprise, Cisco DevNet Associate hoặc trong môi trường triển khai thực tế của doanh nghiệp.

⚠️ Automation không thay thế CLI, mà xây dựng trên nền tảng của CLI. Muốn tự động hóa hiệu quả, trước hết bạn phải hiểu mạng và sử dụng thành thạo CLI. Đây cũng là lý do CCNA vẫn dành phần lớn thời lượng để học các giao thức mạng trước khi giới thiệu về Network Automation.

5. Ví dụ minh họa: Tự động hóa một công việc lặp lại

Giả sử doanh nghiệp cần thay đổi máy chủ NTP từ máy chủ cũ sang 10.10.10.1 cho toàn bộ 40 Switch Access.

Nếu thực hiện thủ công, kỹ sư phải đăng nhập vào từng Switch rồi nhập:

Switch(config)# ntp server 10.10.10.1

Lặp lại thao tác này 40 lần vừa mất thời gian, vừa dễ bỏ sót hoặc cấu hình sai.

Thay vào đó, với Ansible, kỹ sư chỉ cần mô tả cấu hình mong muốn trong một Playbook:

yaml

- name: Configure NTP Server
  hosts: switch_access
  tasks:
    - name: Configure NTP
      ios_config:
        lines:
          - ntp server 10.10.10.1

Giải thích từng thành phần

Thành phầnÝ nghĩa
hosts: switch_access Chỉ định nhóm thiết bị cần cấu hình. Nhóm này được khai báo trong Inventory của Ansible và có thể gồm 40 Switch Access.
tasks: Danh sách các công việc sẽ được thực hiện trên từng thiết bị trong nhóm.
ios_config: Module của Ansible dùng để gửi các lệnh cấu hình đến thiết bị chạy Cisco IOS hoặc IOS XE.
lines: Danh sách các dòng lệnh CLI cần tồn tại trên thiết bị. Trong ví dụ này là cấu hình máy chủ NTP.

Điểm đặc biệt của Ansible

Ansible hoạt động theo nguyên tắc Idempotent. Điều đó có nghĩa là:

  • Nếu Switch chưa có dòng cấu hình ntp server 10.10.10.1, Ansible sẽ tự động thêm vào.
  • Nếu Switch đã được cấu hình đúng, Ansible sẽ không cấu hình lại — giúp tránh thay đổi không cần thiết và đảm bảo kết quả luôn nhất quán dù Playbook được chạy nhiều lần.

Lợi ích trong thực tế

Với Playbook trên, kỹ sư chỉ cần thực hiện một lệnh để triển khai cấu hình cho toàn bộ 40 Switch Access, thay vì đăng nhập từng thiết bị bằng CLI:

  • Tiết kiệm đáng kể thời gian triển khai.
  • Đảm bảo tất cả thiết bị có cùng cấu hình.
  • Giảm nguy cơ gõ sai hoặc bỏ sót thiết bị.
  • Có thể chạy lại bất cứ lúc nào để kiểm tra và đồng bộ cấu hình.

📎 Đây chỉ là một ví dụ minh họa để giúp bạn hình dung cách Network Automation hoạt động. Ở cấp độ CCNA, bạn không cần ghi nhớ cú pháp của Ansible Playbook hay tự viết Playbook. Điều quan trọng là hiểu rằng các công cụ Automation cho phép mô tả trạng thái mong muốn (Desired State) của hệ thống và tự động triển khai cấu hình đến nhiều thiết bị cùng lúc.

CLI thủ công vs Network Automation Sơ đồ so sánh: kỹ sư gõ CLI thủ công vào từng thiết bị riêng lẻ, so với kỹ sư dùng script/playbook automation để cấu hình đồng thời nhiều thiết bị qua NETCONF/RESTCONF/SSH. CLI thủ công vs Network Automation Cùng một thay đổi, hai cách thực hiện khác nhau Kỹ sư gõ tay CLI từng thiết bị Switch 1 Switch 2 ... Switch 40 Playbook/Script 1 lần chạy duy nhất SSH / NETCONF / RESTCONF Switch 1 Switch 2 ... Switch 40 40 lần gõ tay 💡 Cùng kết quả cấu hình, nhưng automation loại bỏ rủi ro gõ sai và giảm thời gian triển khai từ tỉ lệ thuận theo số thiết bị xuống còn gần như không đổi


💬 Hỏi & Đáp nhanh

Học automation có nghĩa là kỹ sư mạng phải bỏ CLI hoàn toàn không?

✅ Không. CLI vẫn cần thiết để xử lý sự cố nhanh, thao tác đơn lẻ, hoặc khi không có sẵn công cụ automation. Automation chủ yếu thay thế các thao tác lặp lại trên nhiều thiết bị, không thay thế hoàn toàn CLI.

NETCONF và RESTCONF khác nhau ở điểm nào dễ nhớ nhất?

✅ NETCONF chạy trên SSH, dùng XML, hỗ trợ transaction/rollback mạnh; RESTCONF chạy trên HTTP/HTTPS, dễ tích hợp với công cụ web hiện đại nhưng không đầy đủ tính năng transaction như NETCONF.

Configuration Drift ở mục 2 nghe có vẻ lý thuyết, liệu có thực sự xảy ra ngoài đời không?

✅ Rất thực tế — đây chính là tình huống anh Nam gặp ở phần mở đầu bài: chỉ cần gõ nhầm địa chỉ NTP ở 1 trong 40 switch, cấu hình thiết bị đó bắt đầu "trôi" khỏi chuẩn chung mà không ai phát hiện ngay, và hậu quả (log time bị lệch) chỉ lộ ra khi đã gây rối loạn đối soát giao dịch.


📝 Bài tập đánh giá

Câu 1: Lý do chính khiến automation trở thành nhu cầu bắt buộc ở các mạng quy mô lớn là gì?

  • A. Vì CLI không còn được vendor hỗ trợ
  • B. Vì chi phí và rủi ro sai sót của thao tác thủ công tăng theo số lượng thiết bị, vượt quá khả năng xử lý ổn định của con người
  • C. Vì automation giúp mạng chạy nhanh hơn về mặt băng thông
  • D. Vì automation thay thế hoàn toàn vai trò của kỹ sư mạng

Câu 2: Điểm khác biệt cốt lõi giữa NETCONF và RESTCONF là gì?

  • A. NETCONF chỉ dùng để đọc dữ liệu, RESTCONF chỉ dùng để ghi dữ liệu
  • B. NETCONF chạy trên SSH với hỗ trợ transaction mạnh, RESTCONF chạy trên nền HTTP/HTTPS
  • C. RESTCONF chỉ hoạt động với thiết bị Cisco, NETCONF hoạt động đa vendor
  • D. NETCONF không sử dụng YANG, còn RESTCONF bắt buộc phải dùng YANG

👉 Đáp án:

Câu 1: B — Ở quy mô nhỏ, gõ tay vẫn khả thi; nhưng khi số thiết bị tăng lên hàng trăm, hàng nghìn, xác suất sai sót và thời gian triển khai thủ công tăng vượt quá khả năng đảm bảo chất lượng ổn định của con người — đây là động lực cốt lõi của automation, không phải vấn đề tốc độ băng thông hay thay thế con người.

Câu 2: B — NETCONF chạy trên nền SSH, trao đổi XML, hỗ trợ transaction/rollback; RESTCONF cung cấp một phần chức năng tương tự nhưng chạy trên HTTP/HTTPS để dễ tích hợp với công cụ web. Cả hai đều có thể dùng YANG làm mô hình dữ liệu và đều hỗ trợ đa vendor (tùy nền tảng).


📚 Bài viết thuộc khóa học CCNA của VNExperts

🧭 Điều hướng

⬅️ Bài trước🏠 Mục lục khóa họcBài kế tiếp ➡️
Bài 86: Ôn tập Phần 5 + Quiz tổng hợp 10 câu Mục lục khóa học CCNA Bài 88: So sánh quản lý mạng truyền thống vs Controller-based networking