The NRE Labs project has shut down, and the interactive labs are no longer available. See this blog post for more information.
Lesson Catalog Unavailable

"Upgrade Complete" - NRE Labs v0.2.0 has arrived!

Highlights of NRE Labs v0.2.0

This is a big release with a lot of changes, and many of the changes across the various repositories are tightly coordinated. We’ll provide the full Changelog at the end of this post, but before that, we want to go over some of the highlights for this release, especially those that required changes across multiple repositories:

New Lesson - Introduction to StackStorm!

We’re happy to introduce a great new lesson. This one explores a great open source project for doing event-driven automation, called StackStorm

You can check out the new lesson right now, right here! This is an exciting, new lesson with five brand new labs ready to go, covering each of the aspects of event-driven automation with StackStorm:

We were originally going to add even more labs, but we have some additional changes planned for the overall structure of NRE Labs, and thought it might be best to save those for an upcoming release. In the meantime, pull the “trigger” on this new lesson! :)

Streamlined Authentication

Previously, we used a variety of different credentials for lesson endpoints like the vQFX and utility image. A few of the images had been standardized, especially those that were created explicitly for this project, but a few had different credentials. As a result, we had to provide a credential set in the lesson definition for each endpoint, so that syringe and antidote-web knew how to log in to the device.

However, this added quite a bit of additional complexity, as these credentials needed to be embedded in the lesson definition, as well as passed into the metadata for the lesson endpoints in Kubernetes. It was a bit of a mess.

We threw all that mess out, and decided to enforce a single credential set across the board. Any lesson endpoint that uses SSH and is represented as a terminal in the browser, must support these credentials.

This simplifies the lesson definitions significantly, and also reduces the logic on the back-end for deciding which credentials to use based on the lesson endpoint.

The Progress Bar Actually Does Something Now!

We’re really excited about this one, as we think it addresses arguably one of the most painful parts of NRE Labs to date. Previously, the “progress bar” brought up when loading a new lesson - or moving between labs within a lesson - didn’t do much of anything except sit there and churn. It didn’t matter what was happening on the back-end, you had to stare at that thing at 100% the entire time. Kind of insulting - we know. We are sorry.

No more. Now, progress for the lesson’s setup and configuration is being provided via the Syringe API. The API now indicates - from the moment you initially request a new lesson - how many endpoints have passed a basic reachability test (meaning they’ve initially started), and how many haven’t. Once those are all online, it will also indicate whether or not anything needs to be configured. Of course, it will also indicate when everything is ready to go.

This means we can also improve the front-end to consume all this information and present a much, much, MUCH more useful progress indicator:

We really hope this makes things easier to wait for, especially on the initial lesson startup.

Syringe Stability Improvements

While at first glance, this will appear to be a laundry list of minor improvements, these add a tremendous amount of stability to the back-end component for NRE Labs: “Syringe”. These will have a big positive impact on the end user experience in NRE Labs.

Serve Lab Guide Directly from API

Each lab guide is written in markdown, and stored within the lesson directory. In past versions, Syringe would require that a lesson’s syringe.yaml file specified a public URL in each stage’s declaration, and would simply pass this to antidote-web. The javascript there would download the contents at that URL and run it through our markdown-to-html converter in the browser.

This presented problems when moving between versions, or when working with markdown files stored on someone’s branch (since Github embeds the branch name in the URL for files). So, as of v0.2.0, Syringe now parses the Markdown file itself, and provides the contents directly via the lesson definition API. Antidote-web no longer needs to download the contents from an external source, and now simply sends the contents straight into the converter.

This keeps things much simpler operationally, and prevents the web front-end from making an extra, unnecessary request.

Working towards LLDP capabilities

We’ve been working towards getting LLDP working in NRE Labs for a while. There are a few lessons we want to write that really require LLDP in order to work, so this is something we’ve wanted to tackle since the beginning.

This has ended up not being so straightforward. There are a few things we knew we had to do, like setting the right group_fwd_mask on all linux bridges. However, it ended up being a bit more complicated than that. Rather than spoil a great future blog post, suffice it to say we still don’t support this. However, we made some good progress towards this in v0.2.0:

Full Changelog

Those are the highlights - stay tuned for the full change log. As always, we hope you enjoy this version of NRE Labs, and encourage you to submit an issue to the Antidote project for any requests or bug reports.

Antidote

Curriculum

Other

Syringe

Antidote-Web