Trở thành một chuyên gia mạng có nghĩa là trở thành một người học suốt đời. Vì vậy, hãy tìm hiểu những kỹ năng tự động hóa mạng nào là cần thiết và cách tốt nhất để có được chúng một cách nhanh chóng.
Mỗi thay đổi này đòi hỏi chúng ta phải học các công nghệ mới. Tự động hóa không có gì khác biệt cả. Cách học tự động hóa mạng chỉ là một bước mới nhất trong hành trình liên tục của bất kỳ chuyên gia mạng nào. Một loạt các công nghệ tự động hóa tồn tại, cho phép chúng ta bắt đầu và làm việc theo hướng tự động, giúp đơn giản hóa công việc của chúng ta.
Tự động hóa đang thay đổi một cách cơ bản cách mà chúng ta cấu hình và quản lý mạng. Mối quan hệ ngày càng tăng giữa mạng và tự động hóa đòi hỏi các kỹ sư mạng phải học các kỹ năng tự động hóa mới, để trở nên hiệu quả trong kỷ nguyên mới của mạng. Bạn muốn học tự động hóa mạng và khả năng lập trình mạng nhưng không biết bắt đầu từ đâu?
Bạn có cảm thấy như nếu bạn không sử dụng các nền tảng có tích hợp các công cụ quản lý cấu hình như Ansible, Puppet, Chef, SaltStack, … cho tự động hóa mạng hoặc viết các tập lệnh tự động hóa mạng bằng ngôn ngữ Python để tự động hóa mạng của mình thì cho thấy bạn đang tụt lại phía sau và công việc hiện tại của bạn có thể sẽ biến mất sau một vài năm không? Đừng lo lắng, điều đó sẽ không xảy ra sớm ngay hôm nay, nhưng rõ ràng mọi thứ đang thay đổi.
Đầu tiên, chúng ta nên cần có một sự thay đổi tư duy. Thay đổi cách bạn nghĩ về cấu hình mạng, giám sát và khắc phục sự cố. Xem xét có cách nào có thể áp dụng tự động hóa cho các quy trình thủ công truyền thống hay không, ngay cả khi quy trình thủ công hiệu quả hơn trong ngắn hạn. Có những bước nào trong quy trình thủ công tiêu tốn nhiều thời gian và có thể được tự động hóa không? Bạn không cần phải giải quyết toàn bộ nhiệm vụ. Chỉ cần tự động hóa một phần tẻ nhạt hoặc dễ xảy ra lỗi của quy trình cũng có thể mang lại kết quả tuyệt vời.
Một phần của sự thay đổi tư duy là chấp nhận rằng việc áp dụng tự động hóa sẽ đòi hỏi đầu tư về thời gian để học các giải pháp, công nghệ mới. Điều này có thể khó khăn đối với các tổ chức đang hoạt động công nghệ thông tin truyền thống ngày nay. Sự đổi mới có thể được thực hiện theo quy mô nhỏ, theo từng giai đoạn phát triển của tổ chức. Đối với cá nhân muốn học tự động hóa thì có thể phát triển từng ngày ví dụ một giờ mỗi ngày cho kiến thức tự động hóa mạng
Hiểu biết cơ bản về phần mềm sẽ có giá trị khi giao tiếp, làm việc với các nhà phát triển phần mềm, ngay cả khi ta không tự viết phần mềm. Ta nên học các khái niệm và thuật ngữ cơ bản. Đọc các bài lab cơ bản và tham gia các cộng đồng về lập trình cơ bản, trực tuyến, miễn phí để tìm hiểu các khái niệm phát triển phần mềm. Bạn nên hiểu các thuật ngữ như tái cấu trúc (restructure), lặp (loop), điều kiện (conditiont), danh sách (list) và từ điển (dict).
Bước tiếp theo trong cách học tự động hóa mạng? Là học cách phát triển phần mềm. Python đã trở thành ngôn ngữ cốt lõi cho tự động hóa mạng, vì vậy bạn nên tập trung vào nó. Có rất nhiều nguồn để học Python, nhiều nguồn miễn phí hoặc rẻ.
Trong phần còn lại của bài đăng này, VnPro sẽ chỉ cho bạn bắt đầu từ đâu và cách học những kỹ năng mới mà các kỹ sư mạng cần nắm bắt. VnPro sẽ chia bài đăng này thành ba phần:
Nếu bạn chưa bao giờ nghe nói về hệ điều hành Linux, mạng hỗ trợ khả năng lập trình, các công cụ như Ansible hoặc ngôn ngữ Python, ý tưởng học và nghiên cứu về tự động hóa và viết mã (code) là điều sẽ khiến bạn hơi e ngại. Bạn sẽ có thể ở một trong hai trường hợp sau đây:
Nếu bạn không bao giờ muốn học bất kỳ tự động hóa mạng nào và ý nghĩ sử dụng ngôn ngữ Python để định cấu hình các thiết bị mạng dường như trở nên xa lạ với bạn, thì sẽ không ai ép buộc bạn và thế giới sẽ luôn tìm kiếm các kỹ sư mạng lành nghề không biết Python. Bạn có thể thấy công việc của mình trở nên khó khăn hơn, nhưng tùy thuộc vào vị trí bạn ở đâu trong sự nghiệp của bạn mà điều đó có thể không phải là một vấn đề tiềm ẩn. Chỉ cần đọc cái này để biết thông tin và tiếp tục cuộc sống của bạn.
Nếu bạn không biết gì nhưng thực sự cảm thấy rằng bạn nên bắt đầu học tự động hóa mạng thì chúng ta khuyên bạn nên bắt đầu với các điều này theo thứ tự sau:
Bất kỳ kỹ sư mạng nào không hiểu Linux cơ bản sẽ gặp khó khăn nếu bạn muốn tham gia vào lĩnh vực tự động hóa mạng. Tiếp theo sau đó chúng ta bắt tay vào học Ansible. Đồng thời, bạn cũng cần học Git và Python. (Cisco đã sử dụng Python làm ngôn ngữ lập trình của họ và hầu hết các thiết bị mạng mới hiện đã sẵn sàng được cài đặt với Python). Tham gia một số khóa đào tạo chính thức về tự động hóa mạng - có rất nhiều khóa học.
Làm cách nào để bắt đầu với Linux?
Chúng tôi khuyên bạn nên tải xuống Ubuntu và chạy một máy ảo trên máy tính xách tay của bạn hoặc xem cách chạy hệ thống Linux trên nền tảng Windows. Sau khi cài đặt xong Ubuntu, bạn cần mở công cụ Terminal và bắt đầu thực hiện chạy một vài lệnh cơ bản. Chúng tôi cũng khuyên bạn nên cài đặt Visual Studio Code làm trình chỉnh sửa mã (code) của bạn. Sau đó, khi bạn đã quen thuộc với Linux, có thể cài đặt một vài gói (packages) và bắt đầu cài đặt Ansible.
Công cụ phổ biến nhất để tự động hóa mạng ngay bây giờ là Ansible. Nó không yêu cầu kiến thức Python nhiều và bạn có thể bắt đầu chạy các file Playbook (kịch bản) của mình trong vòng hàng giờ đồng hồ để tự động hóa các thiết bị mạng của bạn. Ansible được viết bằng Python nhưng không yêu cầu bất kỳ kiến thức Python nào để vận hành nó. Để cài đặt Ansible, chỉ cần cài nó vào một thiết bị đầu cuối trên máy Linux của bạn và thực hiện các lệnh để thực thi nó.
Vì vậy, bây giờ bạn đã cài đặt một nền tảng tự động hóa mạng trên máy tính xách tay của mình, tiếp theo nên làm gì?
Bạn sẽ cần một số thiết bị mạng để tự động hóa. Đây có thể là thiết bị lab tại nhà, vật lý hoặc ảo. Bạn có thể có một số thiết bị phát triển hoặc thử nghiệm tại nơi làm việc hoặc thậm chí bạn có thể sử dụng Cisco Devnet Sandbox. Có nhiều cách để chạy các thiết bị ảo trên máy tính xách tay hoặc một máy chủ nhỏ trong lab của bạn bằng các công cụ như GNS3, EVE-NG hoặc Virl. Bất kỳ tác vụ nào lặp đi lặp lại trong công việc hàng ngày, bạn hãy thử tìm cách viết code để thay thế.
Tại thời điểm này, bây giờ bạn sẽ có những điều sau đây.
Học tự động hóa mạng và khả năng lập trình mạng không khó, nó chỉ là biết các bước bạn cần thực hiện để bắt đầu, một khi bạn đã thiết lập và chạy các tùy chọn bạn có là không giới hạn! Chúng tôi khuyên bạn nên bắt đầu với một file Playbook đơn giản như sao lưu cấu hình hoặc chạy một lệnh đơn giản và sau đó khi nó đã hoạt động, bạn có thể bắt đầu tăng phạm vi tiếp cận của mình với nhiều thiết bị ảo hoặc thiết bị thử nghiệm hơn. Sau đó, khi bạn cảm thấy vui vì file Playbook của mình chạy như mong đợi và bạn có thể bắt đầu chạy nó trên thiết bị của mình.
Mặc dù tự động hóa mạng rất mạnh mẽ và có thể giúp bạn tiết kiệm rất nhiều thời gian, nhưng nó cũng là một cách rất nhanh chóng để phá hủy mạng của bạn nếu bạn làm sai! Vì vậy, hãy hết sức cẩn thận. Đừng để điều này khiến bạn ngừng học tự động hóa mạng, đây chỉ là một cảnh báo để đảm bảo bạn kiểm tra trước khi đưa bất kỳ tác vụ tự động nào lên mạng trực tiếp của mình.
Tôi bắt đầu bằng cách sao lưu toàn bộ mạng của mình, bắt đầu với các thiết bị chuyển mạch của Cisco và sau đó mở rộng phạm vi tiếp cận tới tường lửa và các thiết bị khác. Trong vòng vài tuần, tôi đã sớm có một file Playbook mà tôi có thể nhấn một nút và sao lưu tất cả các cấu hình. Một phần thưởng tuyệt vời khác cho tự động hóa mạng chỉ đơn giản là ghi lại mạng của bạn. Rất nhiều kỹ sư mạng đã chi tiết hóa mọi thiết bị và theo dõi chi tiết giám sát và kết nối của chúng được sắp xếp theo thứ gì đó giống như SecureCRT.
Tuy nhiên, những người khác vẫn ghi nhớ địa chỉ IP cho từng thiết bị và sử dụng cùng một mật khẩu cho mọi thiết bị. Vì vậy, chỉ cần quá trình xây dựng, Ansible hosts file sẽ bắt đầu ghi lại mạng của bạn.
“Hãy nhớ rằng tự động hóa mạng không phải là một cuộc thi nước rút, nó là một cuộc thi marathon.”
Khả năng lập trình & tự động hóa mạng
Bây giờ bạn đã sao lưu mạng của mình bằng Ansible và có thể chạy một số lệnh hiển thị đơn giản, tiếp theo là gì?
Tại thời điểm này, bạn sẽ có chút tự tin vào nền tảng tự động hóa mạng của mình và bạn có thể bắt đầu đẩy cấu hình ra các thiết bị!
Một lần nữa - hãy bắt đầu đơn giản, tạo một thay đổi cấu hình đơn giản mà bạn cần áp dụng cho tất cả các thiết bị chuyển mạch của mình. Ví dụ: Cập nhật địa chỉ máy chủ NTP.
Xây dựng cấu hình và sau đó đẩy nó đến một switch trước và đảm bảo rằng nó hoạt động, sau đó khi bạn hài lòng, hãy nhấn nút và ấn thay đổi cho tất cả các switch của bạn. Tùy thuộc vào số lượng switch bạn có, đây có thể là một nhiệm vụ nhỏ hoặc nếu bạn có 1000 switch, một công việc đơn giản này có thể giúp bạn tiết kiệm hàng giờ! Lợi ích chính khác của tự động hóa mạng là thay đổi này sẽ được thực hiện với độ chính xác 100%! Bạn không cần phải SSH vào 1000 switch và thực hiện một thay đổi đơn giản. Đây là nơi những sai lầm xảy ra.
Hy vọng rằng tại thời điểm này, bạn đã tin tưởng vào nền tảng tự động hóa mạng của mình và cảm thấy thoải mái khi thực hiện các thay đổi cấu hình đơn giản và thực hiện sao lưu hệ thống.
Một trong vài điều sẽ xảy ra. Bạn sẽ nói rằng điều này đang làm chính xác những gì chúng tôi muốn nó làm và tôi rất vui. Hoặc giống như chúng tôi, bạn sẽ muốn tự động hóa nhiều hơn nữa! Đây sẽ là những thay đổi phức tạp hơn, tạo ra một mẫu vàng cho tất cả các cấu hình thiết bị của bạn hoặc thực hiện những thay đổi này nhanh hơn.
Chúng tôi sử dụng Ansible hầu hết các ngày trong công việc hàng ngày của mình để thực hiện các tác vụ đơn giản mà tôi đã trình bày chi tiết ở trên, nhưng khi bạn thực sự muốn mở rộng khả năng của mình, bạn cần sử dụng Python. Cisco và hầu hết cộng đồng mạng đã sử dụng Python làm ngôn ngữ lập trình được lựa chọn để tự động hóa mạng. Lý do cho điều này là Python rất tốt trong việc thực hiện các scripting tasks, đó là điều mà các kỹ sư mạng đang làm hàng ngày.
Nếu bạn có thể học một số kiến thức cơ bản về Python, nó sẽ có lợi cho bạn rất nhiều cho tương lai của bạn. Nornir là một khung tự động hóa Python. Đó là một thư viện mà bạn cài đặt và về cơ bản đảm nhận tất cả các yếu tố của việc thực hiện tự động hóa mạng có thể gặp vấn đề. tức là quản lý và kết nối. Nó sử dụng Netmiko để xử lý kết nối để bạn có thể tập trung vào những gì bạn muốn làm.
Ngoài ra, khi bạn đang học Python, một trong những ngôn ngữ lập trình phổ biến nhất được sử dụng ngày nay, bạn đang xây dựng các kỹ năng mà bạn có thể sử dụng trong nhiều lĩnh vực khác.
Nếu muốn biết thêm - hãy xem thêm tại: network automation courses
Có nhiều bước khác nhau để tự động hóa mạng của bạn. Trước tiên, bạn cần quyết định nền tảng bạn sẽ sử dụng, sau đó quyết định nguồn gốc của truth. Bạn sẽ lấy tất cả thông tin chi tiết về các thiết bị mạng của mình từ đâu. Sau đó, xác định những nhiệm vụ nào có thể được tự động hóa, đồng thời quyết định xem ai sẽ quản lý việc này. Cuối cùng, khi bạn đã hoàn thành điều đó, bạn cần xem xét CI/CD và xem xét mạng lưới tự phục hồi.
Với việc các mạng ngày càng phức tạp hơn mỗi ngày và số lượng thiết bị cả trên trang web và trên đám mây ngày càng tăng với tốc độ cấp số nhân, đơn giản là không có đủ sức người để cấu hình đầy đủ các mạng ngày nay mà không có tự động hóa. Bạn có thể tăng lực lượng lao động của mình hoặc tìm cách tăng đầu tư vào tự động hóa mạng để hợp lý hóa các thay đổi mạng thường xuyên và loại bỏ lỗi của con người từ các thay đổi cấu hình.
Nếu bạn chỉ muốn sử dụng Python để thực hiện tất cả tự động hóa mạng của mình, tôi thực sự khuyên bạn nên xem xét việc sử dụng Nornir làm khuôn mẫu cho các nhiệm vụ của mình. Tuy nhiên, không có gì ngăn cản bạn tự động hóa toàn bộ mạng của mình bằng cách sử dụng các tập lệnh Python thuần túy nếu bạn biết mình đang làm gì!
Vì vậy, lời khuyên của tôi cho bất kỳ ai đang tìm hiểu về tự động hóa mạng là hãy bắt đầu.
Cố gắng hạn chế hoặc dừng bất kỳ tương tác nào với thiết bị mạng của bạn thông qua CLI, cố gắng sử dụng Ansible hoặc Python để thực hiện các thay đổi của bạn.
Nếu giống như chúng tôi, bạn thích học những kỹ năng mới, bạn sẽ yêu thích cuộc hành trình. Là một kỹ sư mạng vào năm 2020, bạn cần phải nghe những gì Cisco đang nói. Họ đang sử dụng Python cho mọi thứ. Vì vậy, hãy bắt đầu học và làm quen với việc thực hiện các công việc hàng ngày của bạn bằng cách sử dụng mã chứ không phải CLI.
Mỗi thay đổi này đòi hỏi chúng tôi phải học các công nghệ mới. Tự động hóa không có gì khác biệt. Cách học tự động hóa mạng chỉ là bước mới nhất trong hành trình liên tục của bất kỳ chuyên gia mạng nào. Một loạt các công nghệ tự động hóa tồn tại, cho phép chúng ta bắt đầu đơn giản và làm việc theo hướng phức tạp, giống như chúng ta đã làm trước đây.