March 29, 2024

DevAsc has been a dream of mine since the beginning, but I never really found the time during this crazy year. When Cisco extended the deadline for the DevNetClassof2020 though, I took that as a sign and started my journey at short notice towards the end of 2020. Now you can learn what I think about the exam and the way I prepared.

Background

I definitely didn’t start from scratch because we’ve been using Infrastructure as Code at work for quite some time now and I touch tools like Ansible and Git almost every day. So, the benefits of version control, CI/CD pipelines and automated testing, all that was already there. In addition, due to Cisco ACI, I was at least familiar with one REST API and in the end I actually remembered a few things from my CS studies back in the day.

The Blueprint

But honestly, there is so much more to know, so let’s take a look at the exam blueprint.

1 – Software Development and Design (15%)

You need to know all the data formats (XML, JSON, YAML), Python and Git – hands-on. I can hardly imagine how one could acquire the necessary knowledge just by reading, so lab time it is with this topics. How much Python you might ask? You should at least understand every piece of a Python script like this ACI REST-API call.

import requests, json apic_url = 'sandboxapicdc.cisco.com'
apic_username = 'admin'
apic_password = 'ciscopsdt' def apic_login(apic: str, username: str, password: str) -> dict: """ APIC login and return session cookie """ apic_cookie = {} credentials = {'aaaUser': {'attributes': {'name': apic_username, 'pwd': apic_password }}} json_credentials = json.dumps(credentials) base_url = 'https://' + apic + '/api/aaaLogin.json' login_response = requests.post(base_url, data=json_credentials) login_response_json = json.loads(login_response.text) token = login_response_json['imdata'][0]['aaaLogin']['attributes']['token'] apic_cookie['APIC-Cookie'] = token return apic_cookie def apic_query(apic: str, path: str, cookie: dict) -> dict: """ APIC 'GET' query and return response """ base_url = 'https://' + apic + path get_response = requests.get(base_url, cookies=cookie) return get_response def apic_logout(apic: str, cookie:dict) -> dict: """ APIC logout and return response """ base_url = 'https://' + apic + '/api/aaaLogout.json' post_response = requests.post(base_url, cookies=cookie) return post_response apic_cookie = apic_login(apic=apic_url, username=apic_username, password=apic_password)
response = apic_query(apic=apic_url, path='/api/class/fabricHealthTotal.json', cookie=apic_cookie)
logout_response = apic_logout(apic=apic_url, cookie=apic_cookie) response_json = json.loads(response.text)
fab_health_total = response_json['imdata'][0]['fabricHealthTotal']['attributes']['cur'] print(fab_health_total)

With regards to software design and software development principles I think it’s okay to stay exactly within the scope of the blueprint. To me, the course materials were far too detailed for what we really need to know as infrastructure automation engineers (and for the exam as well).

2 – Understanding and Using APIs (20%)

APIs on the other hand should be the focus of learning, especially REST APIs, including all the different authentication mechanisms. I strongly recommend to practice REST-API interaction using all three common ways, namely Postman, Curl and Python/Requests. There is no shortage on API endpoints on the web and of course DevNet has tons of labs and sandboxes to play with.

3 – Cisco Platforms and Development (15%)

This was a difficult section for me, because pretty much every Cisco platform with an API is covered (= a lot) and I have had little to do with model-driven programability so far. Therefore I made the following prioritization based on personal preference and possible exposure at work:

  1. Cisco network management platforms (3.2)
  2. Cisco security platforms (3.5)
  3. Cisco compute management platforms (3.3)
  4. Cisco collaboration platforms (3.4) , which I skipped nearly entirely!

For that, I preferred to concentrate on device-level APIs and things like YANG, RESTCONF, NETCONF because they will certainly become more important in the future.

4 – Application Deployment and Security (15%)

This area is pretty balanced and actually the topics 4.3 – 4.7 (App deployment, Docker, CI/CD & unit tests) and 4.11 (Bash) are very relevant to any network automation initiative. The remaining topics I’d count as part of a good general education for a network engineer.

With one exception: I would like to emphasize the importance of the DevOps principles and if you haven’t read ‘The Phoenix project’ already, you should definitely do so (after the exam of course).

5 – Infrastructure and Automation (20%)

Now let’s bring it all together with infrastructure automation. This is the central piece of the whole exam where we learn when and how to leverage all the different methods and tools to automate all the things. Automation and test frameworks like Ansible, NSO and PyATS are introduced and (hopefully) everyone finally realizes the value of InfraAsCode and CI/CD pipelines.

6 – Network Fundamentals (15%)

I think this section is meant for someone approching DevNet from the Developer side of the house. A seasoned network engineer can safely skip this and move on!

Exam Preparation

Over the Christmas holidays I repeated and finally finished Kirk Byers Python course, because I knew Python would be my greatest weakness. Then I worked on the digital learning course for three weeks in January. Of course, I had also acquired the OCG and the practice tests helped me enormously to identify the focus of the final preparation phase. From then on it was all about hands-on, API after API, only few flashcards to memorize HTTP codes or some central dev principles.

For the sake of completeness, two excellent learning resources that I didn’t use but are recommended all over the place: Nick Russos Study Guide and the DevNet Associate Fundamentals training course.

The Exam day

I decided to take the exam at home via Pearson OnVue and booked a slot at a Saturday morning, 10:00 CET.

The procedure on the exam day itsself is well documented including a nice short video on the OnVue website under, well, ‘ON EXAM DAY’. I used a child’s room and cleared the complete desk (and the floor, but that’s another topic). At 9:30 I was able to access the check-in process to download and start the current version of the exam software.

The photo of the identity card was a sporting undertaking, because apparently you cannot switch to the rear camera with the IOS web app. Anyway, after finshing the remaining steps I was told to be number four in queue. Within a few minutes I was contacted by the proctor via chat and audio, albeit quietly, very quietly. My son had forgotten to unplug his tiny little earphones … (the receiving end of the audio gets not tested during the system check).

Next, I had to retake my blurred ID photo with another IOS web app where I was finally able to use the rear camera. A short webcam sweep over the desk revealed that drinks are only allowed in transparent glasses or bottles, not in thermos cups (coffee addict, damn!). A lot of excitement until it finally started.

During the exam I was contacted only once via chat, because the proctor had the impression that I’m not looking at the screen all the time. But I could credibly assure that this is due to the ultra-wide gaming monitor I was using. I got around 100 questions and was done within 1:15h. All in all an interesting, convenient but not as relaxed experience as in a testing center (maybe I just lack practice).

Closing

I highly recommend the DevNet Associate to everyone striving for a strong foundation in terms of network automation and the whole NetDevOps movement. The blueprint covers all essential topics and the exam questions are fair. All in all, a very got preperation for the upcoming challenges in our vertical.

Source