In a previous post a number of years ago, I covered five key points on Successful Infrastructure Planning for the Internet of Things. The forth point I made was that “Automation is everything.” In this post, I’m going to look at how we would use the 10 Foundations of DevOps Model covered in the DevOps and Agile Development whitepaper to automate part of the code packaging process in an example IoT solution.
Goals and Constraints
The high-level goal of this solution is to implement a modern solution for the deployment and management of traditional applications
- Implement the Guiding Principles of DevOps with a focus on:
- Infrastructure as code.
- Automate the delivery pipeline.
- Immutable Infrastructure.
- Address the 10 Foundations of DevOps
- Create a standardized solution set that could be implemented to support an automated large scale for an IoT solution.
The Components
The diagram below shows the major components selected for this solution and a basic indication of how they will fit together, this is subject to change as the build-out progresses.
This diagram shows the process flow for the automated build and packaging of code for IoT devices. As I noted in the previously mentioned post, automation really is the key to a successful IoT infrastructure roll-out, if there are manual, human-based steps in the process it simply won’t scale.
10FoD IoT
The components for this solution have been selected with the above goals and constraints in mind. As we proceed through the build-out of the solution additional components may need to be added. This is just a starting point.
Stack | Component |
Plan Stack | Trello |
Coding Stack | VSCode |
Commit Stack | GitHub |
Continuous Integration Stack | vRealize Cloud Code Stream |
Test Stack | vRealize Cloud Code Stream |
Artifact Stack | VMware Pulse IoT Center |
Continuous Deployment Stack | VMware Pulse IoT Center |
Configuration Stack | VMware Pulse IoT Center |
Control Stack | VMware Pulse IoT Center |
Feedback Stack | Git Issues |
Some of the highlights of the component selections are as follows:
vRealize Cloud – Code Stream
Available as a SaaS solution, Code Stream is a CI/CD platform supporting the deployment of Cloud Assembly generated Virtual Machines with extensibility to integrate with multiple third-party tools. The Code Stream automation pipelines are created in yaml code and stored and managed in GitHub. In this instance, we use a CI Task to automate the packaging of the IoT code that is then added to a Pulse IoT Center Campaign.
VMware Pulse IoT Center
VMware Pulse IoT Center is covering off a broad range of the 10 Foundations, namely:
- Artifact – Once packages are created they are stored in Pulse IoT Center
- Continuous Deployment – Pulse IoT Center provides via APIs that are leverages by Code Stream to deploy the packages
- Configuration – Pulse IoT Center orchestrates the configuration of the devices targeted by the campaign
- Control – Pulse IoT Center manages and provides visibility into the operational state of the devices. Once the packages are added to Pulse IoT Center they are able to be deployed to all applicable IoT devices.
Conclusion
This post covered an overview of:
- Implementing the VMware documented Guiding Principles of DevOps
- Using the 10 Foundations of DevOps model
- Selecting a standardized set of components and tools that are interoperable with multiple IoT endpoints.
And in doing so demonstrated how by applying the 10 Foundations of DevOps model with a combination of VMware Code Stream and Pulse IoT Center to an IoT solution we can automate the code delivery pipeline fot IoT devices.
Example Code Stream pipelines are available in this repository.
ABOUT THE AUTHOR
James Wirth is a member of the emerging technologies team within VMware Professional Services and focuses on DevOps, Site Reliability Engineering, Multi-Cloud architectures and new and emerging technologies. He is a proven cloud computing and virtualization industry veteran with over 15 years’ experience leading customers through their cloud computing journey.