Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hướng dẫn học môn Devnet Associate

    HƯỚNG DẪN CÁCH HỌC MÔN DEVNET ASSOCIATE
    Click image for larger version

Name:	dataurl390197.gif
Views:	2
Size:	925 Bytes
ID:	430677

    1. Giới thiệu về chứng chỉ DEVASC 200-901, khoá học DEVASC 200-901Chứng chỉ DevNet (DEVASC 200-901) ra đời nhằm để xác nhận các kỹ năng của các nhà phát triển phần mềm, kỹ sư DevOps, chuyên gia tự động hoá và các chuyên gia về phần mềm. Chương trình chứng nhận các kỹ năng kỹ thuật mới nổi quan trọng cho một loại chuyên gia CNTT mới, trao quyền cho các tổ chức nắm bắt tiềm năng của các ứng dụng, tự động hóa và cơ sở hạ tầng cho mạng, IoT, DevOps và Cloud.
    Hoàn thành khóa học này, các bạn có thể đảm nhận các vị trí như kỹ sư tự động (Automation Engineer), kỹ sư DEVOPS/Infrastructure, chuyên gia về hạ tầng mạng, cloud.
    Chứng nhận yêu cầu một bài kiểm tra kiểm tra kiến thức của bạn về phát triển và thiết kế phần mềm, bao gồm:
    • Hiểu và sử dụng API
    • Nền tảng và sự phát triển của Cisco
    • Phát triển ứng dụng và bảo mật
    • Cơ sở hạ tầng và tự động hóa
    Thời lượng khóa học 120 giờ.

    2. Nội dung chi tiết chương trình lý thuyết
      1. Software Development and Design – Thiết kế và phát triển ứng dụng phần mềm
        1. So sánh định dạng dữ liệu (XML, JSON, YAML) với cấu trúc dữ liệu Python.
        2. Mô tả cách phân tích dữ liệu từ XML, JSON, YAML sang Python.
        3. Mô tả các khái niệm về test-driven development.
        4. So sánh các hướng phát triển phần mềm (agile, lean, waterfall).
        5. Giải thích lợi ích khi sắp xếp code theo các methods/function, classes, modules.
        6. Xác định lợi ích của common design patterns (MVC and Observer).
        7. Giải thích lợi ích của việc quản lý Version.
        8. Sử dụng git để quản lý Version
          1. Clone.
          2. Add/remove.
          3. Commit.
          4. Push / pull.
          5. Branch.
          6. Merge and handling conflicts.
          7. Diff.
      2. Understanding and Using APIs- Tìm hiểu và sử dụng APIs
        1. Xây dựng một yêu cầu truy cập REST API.
        2. Mô tả các mô hình sử dụng phổ biến liên quan đến webhooks.
        3. Xác định những hạn chế khi sử dụng API.
        4. Giải thích các code giá trị HTTP response (response code, headers, body).
        5. Xác định lỗi dựa trên HTTP response code, request và tài liệu API.
        6. Xác định các thành phần của HTTP response (response code, headers, body).
        7. Sử dụng các cơ chế xác thực API phổ biến: basic, custom token và API keys.
        8. So sánh các dạng API (REST, RPC, synchronous, and asynchronous).
        9. Xây dựng Python script để gọi API REST bằng thư viện requests.
      3. Cisco Platforms and Development
        1. Xây dựng Python script sử dụng Cisco SDK dựa trên tài liệu SDK.
        2. Mô tả khả năng của các nền tảng và API quản lý mạng của Cisco (Meraki, Cisco DNA Center, ACI, Cisco SD-WAN và NSO).
        3. Mô tả khả năng của các nền tảng và API compute management của Cisco (UCS Manager, UCS Director và Intersight).
        4. Mô tả khả năng của các nền tảng và API collaboration của Cisco (Webex Teams, Webex devices, Cisco Unified Communication Manager including AXL and UDS interfaces, and Finesse).
        5. Mô tả khả năng của các nền tảng và API bảo mật của Cisco (Firepower, Umbrella, AMP, ISE, and ThreatGrid).
        6. Mô tả device level APIs và dynamic interface của IOS XE và NX-OS.
        7. Giới thiệu các nguồn tài nguyên của DevNet về các tình huống được dựng sẵn (Sandbox, Code Exchange, support, forums, Learning Labs, and API documentation).
        8. Áp dụng các khái niệm về lập trình hướng mô hình (YANG, RESTCONF, and NETCONF) trong môi trường của Cisco.
        9. Xây dựng code để thực hiện một hoạt động cụ thể dựa trên một tập hợp các yêu cầu và tài liệu tham khảo API đã cho, ví dụ:
          1. Lấy list device hiện có trong môi trường mạng bằng cách sử dụng API của Meraki, Cisco DNA Center, ACI, Cisco SD-WAN, or NSO.
          2. Quản lý không gian, người tham gia và tin nhắn của Webex Team.
          3. Lấy danh sách các hosts/ clients hiện có trong hệ thống mạng sử dụng Meraki, Cisco DNA center.
      1. Application Deployment and Security
        1. Mô tả lợi ích của edge computing.
        2. Xác định các thuộc tính của các mô hình triển khai ứng dụng khác nhau (private cloud, public cloud, hybrid cloud, and edge).
        3. Xác định các thuộc tính của các loại triển khai ứng dụng:
          1. Virtual machines.
          2. Bare Metal.
          3. Containers.
        4. Mô tả các thành phần cho CI/CD pipeline khi triển khai ứng dụng.
        5. Xây dựng Python unit test.
        6. Giải thích nội dung của Dockerfile.
        7. Sử dụng Docker image trong local developer environment.
        8. Xác định các vấn đề bảo mật ứng dụng liên quan đến bảo vệ bí mật, mã hóa (lưu trữ và vận chuyển) và xử lý dữ liệu.
        9. Giải thích cách tường lửa, DNS, cân bằng tải và reverse proxy trong triển khai ứng dụng.
        10. Mô tả các mối đe dọa OWASP hàng đầu (như XSS, SQL injections và CSRF).
        11. Sử dụng các lệnh Bash (quản lý tệp, điều hướng thư mục và các biến môi trường).
        12. Xác định các nguyên tắc thực hành DevOps.
      2. Infrastructure and Automation
        1. Mô tả giá trị của model driven programmability cho tự động hóa cơ sở hạ tầng.
        2. So sánh cấp điều khiển với quản lý cấp thiết bị.
        3. Mô tả việc sử dụng và vai trò của các công cụ kiểm tra và mô phỏng mạng (như VIRL và pyATS).
        4. Mô tả các thành phần và lợi ích của CI/CD pipeline trong tự động hóa cơ sở hạ tầng.
        5. Mô tả các thuộc tính hạ tầng mạng bằng code.
        6. Mô tả khả năng của các công cụ automation như Ansible, Puppet, Chef, Cisco NSO.
        7. Xác định các quy trình làm việc khi tự động hoá bằng Python script bằng các API của Cisco (ACI, Meraki, Cisco DNA Center, or RESTCONF).
        8. Xác định các quy trình làm việc khi tự động hoá bằng Ansible Playbook (management packages, user management related to services, basic service configuration, and start/stop).
        9. Xác định các quy trình làm việc khi tự động hoá bằng bash script (file management, app install, user management, directory navigation).
        10. Giải thích kết quả của truy vấn bằng RESTCONF và NETCONF.
        11. Giải thích cơ bản về YANG models.
        12. Giải thích về unified diff.
        13. Mô tả các nguyên tắc và lợi ích của quy trình code review.
        14. Giải thích sequence diagram bao gồm gọi hàm API.
      3. Network Fundamentals – Mạng căn bản
        1. Tìm hiểu về mục đích và công dụng của địa chỉ MAC và VLANs.
        2. Tìm hiểu về mục đích và công dụng của địa chỉ IP, routes, subnet mask/ prefix, gateways.
        3. Tìm hiểu về chức năng của các thành phần trong hệ thống mạng ( switches, routers, firewall, cân bằng tải).
        4. Các nguyên tắc của sơ đồ hệ thống mạng cơ bản (switches, routers, firewalls, cân bằng tải và giá trị port).
        5. Tìm hiểu về các chức năng quản lý, dữ liệu và control plane của thiết bị mạng
        6. Tìm hiểu về các dịch vụ IP như: DHCP, DNS, NAT, SNMP, NTP.
        7. Nhận biết các giá trị port của các giao thức cơ bản như SSH, Telnet, HTTP, HTTPS, và NETCONF.
        8. Xác định nguyên nhân gây ra lỗi kết nối (NAT problem, Transport Port blocked, proxy và VPN).
        9. Giải thích tác động của hạn chế trong mạng đối với ứng dụng.
    3. Nội dung các bài thực hành
    • Thiết lập ban đầu
    1. Thiết lập môi trường phát triển ứng dụng trên Windows (Thực hiện cài đặt các chương trình bao gồm: Git, Python, Postman, Text Editor và IDE (Vscode & Pycharm), Container Engine (Docker)
    • Git
    1. Làm quen Git và cách sử dụng Github
    2. Các thao tác cơ bản trên Git (Gitlab Server: 10.215.26.199)
    • Python và ứng dụng
    1. Python cơ bản.
    2. Sử dụng thư viện netmiko của ngôn ngữ Python để cấu hình các thiết bị mạng
    3. Sử dụng ngôn ngữ Python, thư viện netmiko và ntc_templates để thực hiện kiểm tra vlan và access port cho vlan
    4. Chuyển đổi các định dạng dữ liệu (YAML, JSON, XML) sử dụng Python
    5. Khai thác điểm yếu thông số đầu vào truy cập dữ liệu nhạy cảm trong Flask Python
    • APIs
    1. Phát hiện các lỗi liên quan HTTP Request.
    2. Sử dụng Postman thực hiện lấy Ticket và danh sách các thiết bị từ Network Controller (APIC-EM).
    3. Sử dụng ngôn ngữ Python để lấy Ticket và danh sách các thiết bị từ Network Controller (APIC-EM).
    4. Viết chương trình dùng ngôn ngữ Python để thực hiện xóa thiết bị từ Network Controller (APIC-EM).
    5. Sử dụng Postman thực hiện lấy token và danh sách thiết bị từ Network Controller (DNA Center).
    6. Sử dụng Python viết chương trình lấy token và danh sách thiết bị từ Network Controller (DNA Center).
    7. Sử dụng Postman tương tác với Meraki Cisco Sanbox.
    8. Sử dụng Python tương tác với Meraki Cisco Sanbox.
    9. Sử dụng Cisco Webex Teams Collaboration API.
    10. Sử dụng Postman để tương tác với SD-WAN REST API
    11. Sử dụng thư viện trong Python để lấy danh sách thông tin các thiết bị trong Fabric SD-WAN của Cisco
    12. Sử dụng giao thức Netconf để kết nối đến thiết bị Cisco IOS XE
    13. Sử dụng giao thức Restconf để kết nối đến thiết bị Cisco IOS XE
    14. Cài đặt và sử dụng CURL
    15. Lab ISE REST APIs
    16. Lab hướng dẫn cài đặt và cấu hình NSO cơ bản.
    17. Lab thực hiện viết Template cấu hình thiết bị bằng NSO.
    18. Lab giới thiệu về OAuth và sử dụng Python tạo ứng dụng được ủy quyền bằng tài khoản Github.
    • Ansible
    1. Quản lý và triển khai tự động hạ tầng mạng dùng Ansible Server (AWX)
    2. Viết Playbook cấu hình trunking giữa Switch và Router tự động trên Ansible Server (AWX)
    3. Sử dụng các lệnh Linux cơ bản để thao tác trên chúng (Utilize Bash Commands for Local Development)
    4. Sử dụng Ansible kiểm tra Version thiết bị (Linux)
    5. Sử dụng Host Variable trong Ansible để cấu hình hostname cho thiết bị
    6. Sử dụng Group Variable để tạo loopback cho thiết bị
    7. Sử dụng Ansible Roles để cấu hình và show vlan cho thiết bị.
    8. Bảo mật dữ liệu trong Ansible Playbook với Ansible Vault
    9. Sử dụng Ansible cấu hình tự động VxLAN
    10. Sử dụng Ansible cấu hình tự động HSRP
    • Deploying application
    1. Lab CI/CD cơ bản (Hello World)
    2. Sử dụng Gitlab CI để cấu hình hostname cho thiết bị
    3. Setup CI trên Jenkins
    4. Các lệnh Docker cơ bản
    5. Chuyển chương trình Python Flask vào Docker Container
    • Security
    1. Giới thiệu và xây dựng về Python Unit Test.
    2. Hướng dẫn sử dụng thư viện Pytest.
    3. Lab SQL Injection.
    4. Lab Postman and ISE
    5. Lab ISE REST API
    4. Tài nguyên học tập, tài liệu tham khảo
    • [*=1]Diễn đàn http://forum.vnpro.org, box DEVNET [*=1]Diễn đàn DEVCOR, DEVOPS: https://www.facebook.com/groups/devcor [*=1]Sách thực hành: CCLabPro tập 3 (VnPro). [*=1]Sách “Hướng dẫn học và thi chứng chỉ DEVNET” (VnPro) [*=1]Sách lý thuyết, giáo trình chính: Developing Applications and Automating Workflows using Cisco Core Platforms (DEVASC) [*=1]Sách lý thuyết Network Programmability and Automation (Jason Edelman, Scott S. Lowe & Matt Oswalt) [*=1]Sách lý thuyết Mastering Ansible (3rd Edition) (James Freeman and Jesse Keating) [*=1]Sách lý thuyết Mastering Python Networking (Eric Chou) [*=1]Video Cisco Press Live Lesson Network Programmability Fundamentals [*=1]Sách lý thuyết: Cisco Certified DevNet Associate DEVASC 200-901 Official Cert Guide (Chris Jackson, Jason Gooley, Adrian Illisieu, Ashustos Maleonkar) [*=1]Network Programmability Fundamentals (Jeff Doyle, Kheled Abuelenain, Vinit Jain, Anto Kaneliuk). [*=1]Slide tham khảo DEVNET của chương trình Academy (8 modules). [*=1]Sách Cisco Press Programming and Automating Cisco Network (Ryan Tisher, Jason Gooley). [*=1]Practical Network Automation (Abhishek Ratan). [*=1]Video Getting Started with Software Development using Cisco DEVNET.
    5. Cách học và trình tự học

    Về trình tự học, các bạn hãy bắt đầu từ chủ đề 1 – thiết kế và phát triển ứng dụng. Phần này giúp chúng ta nhận biết, phân tích về các định dạng dữ liệu thông dụng, các mô hình phát triển phần mềm và sử dụng Git để quản lý phiên bản ứng dụng.
    Về chủ đề 2 – Tìm hiểu và sử dụng API, sẽ giải thích khái niệm API, các loại API và phân tích cơ chế xác thực trong API, các nội dung phần header, body, mã code trả về cho biết trạng thái của yêu cầu HTTP được phản hồi. Chúng ta sẽ có 2 bài lab trong chủ đề này: sử dụng postman và python script để lấy ticket. Khái niệm API này là một trong những khái niệm quan trọng và phổ biến nhất trong lĩnh vực mạng, phát triển phần mềm hiện tại và trong tương lai gần. Các cơ chế như API WebHook, API Token, OAuth 2.0 là các chủ đề quan trọng liên quan đến bảo mật API.

    Tiếp theo là chủ đề 3. Sau khi đã hiểu khái niệm API, chúng ta sẽ tìm hiểu về API trên các nền tảng của Cisco. Chủ đề này mô tả khả năng các nền tảng và API của Cisco về quản lý mạng, collaboration, bảo mật, giới thiệu các tài nguyên mà Devnet cung cấp để tìm hiểu, thực hành và giao lưu với nhau. Trong phần này các bạn sẽ thực hành bài lab dùng Postman và Python script để lấy danh sách các thiết bị từ Network Controller (APIC-EM). Phần Cisco platform chúng ta sẽ nghiên cứu về các kiến truc SDN, SDWAN, Collaboration, Security, Data Center. Cách tiếp cận phù hợp với lĩnh vực tự động hóa là chúng ta sẽ nghiên cứu về API và cách khai thác API để phục vụ công việc quản trị các lĩnh vực công nghệ này.

    Chủ đề kế tiếp là về triển khai ứng dụng và bảo mật, mô tả các thành phần trong CI/CD giúp phát triển và triển khai ứng dụng nhanh chóng, được kiểm tra kỹ lưỡng để tránh xung đột; Chúng ta cũng tìm hiểu về khái niệm về Docker.

    Chủ đề về cơ sở hạ tầng và tự động hóa mô tả lợi ích của CI/CD pipeline trong tự động hóa cơ sở hạ tầng, mô tả và thực hành với công cụ Ansible để cấu hình, quản lý mạng tự động hóa.
    Cuối cùng là phần về mạng căn bản nói về các khái niệm cơ bản trong mạng, chức năng của các thành phần trong hệ thống mạng, các dịch vụ mạng và giới thiệu các port của các giao thức cơ bản.

    Module 1: Phát triển phần mềm hiện đại.
    Module 2: Mô tả tiến trình phát triển phần mềm.
    Module 3: Thiết kế phần mềm.
    Module 4: Giới thiệu về network-based API.
    Module 5: Consume rest-based API.
    Module 6: Giới thiệu Cisco platform và APIs.
    Module 7: Triển khai khả năng lập trình trên các hạ tầng mạng.
    Module 8: Mô tả IP network.
    Module 9: Kết nối Mạng và Ứng dụng.
    Module 10: Triển khai mạng tự động theo các mô hình.
    Module 11: Triển khai các ứng dụng.
    Module 12: Tự động hóa hạ tầng mạng
    Module 13: Kiểm định và bảo mật các App

    6.
    Mở rộng kiến thức và xây dựng CV hấp dẫn
    Việc mở rộng thêm kiến thức các mảng khác ngoài chương trình học là điều cực kỳ cần thiết do DevNet nói riêng hay DevOps nói chung. Do đó người kỹ sư DevNet ngoài việc học cách sử dụng các phần mềm được giới thiệu trong chương trình thì luôn phải trau dồi các kỹ năng sau đây:
    1. Ngôn ngữ lập trình thông dụng: Python, C#, Javascript,… Tuỳ từng mục đích hay công nghệ của doanh nghiệp cần kỹ sư DevNet mà ta nên tìm hiểu về các ngôn ngữ lập trình phù hợp
    2. Cách tra cứu thông tin, cập nhật các xu hướng mới, tham gia các cộng đồng về DevNet, DevOps bởi vì công nghệ và phần mềm thì có thể lỗi thời nhưng các mối quan hệ trong các cộng đồng sẽ luôn giúp mình tiếp cận dễ hơn với các công nghệ mới.

    Cuối cùng, để có thể thực sự tham gia vào công việc DevOps ở các doanh nghiệp, chúng ta luôn cần phải tổng hợp lại tất cả các kỹ năng, kiến thức, hand-on-labs từ quá trình học và xây dựng ra một sản phẩm của riêng mình với phương châm “Chất lượng hơn số lượng”. Một số ý tưởng cơ bản có thể triển khai sau khoá học:
    1. Hiện thực hoá Network Automation cơ bản: Bắt đầu với script, code được viết bằng python ta có thể tải lên các phần mềm quản lý code như github, gitlab, bitbucket. Sau đó ta tích hợp với các phần mềm như Jenkin, gitlab CI, Circle CI để đưa code vào chu trình Unit test với PyTest, Integration Test với Selenium. Sau khi test xong thì có thể Build và Deploy trên Docker Ansible. Cuối cùng là sử dụng API để nói chuyện với script Automation trên Docker.
    1. Hiện thực hoá việc đọc ghi API nâng cao: Bắt đầu với việc dùng script để gọi API đến thiết bị, sau đó lưu trữ dữ liệu thô vào một Database đơn giản như MongoDB trên máy local. Tiếp tục query từ MongoDB ra được những thông tin hữu ích để làm dữ liệu tinh như IP, Routing Table và lưu nó thành một phần nhỏ trong MySQL hay SQLite để sử dụng sau. Ngoài ra ta có thể setup thành một Pipeline có cài đặt thời gian để dữ liệu có thể trả về tại một thời gian nhất định trong ngày hoặc khi có sự cố. Cuối cùng in các dữ liệu từ việc khai thác API này ra terminal hoặc dashboard tuỳ ý.

    Các ý tưởng trên đây đều rất cơ bản nhưng nếu được trình bày tốt thì đều đáp ứng yêu cầu về kỹ thuật khi tuyển dụng về Network Automation, API, thao tác với CI/CD, data pipeline.
    Attached Files
Working...
X