Prepare yourself for a completely different way to learn DevOps tooling! We're eradicating the typical "do this"/"do that" training structure so common in other online courses. Instead, you will learn how to implement DevOps tooling and automation as it happens by following a journey our fictional character, Adam, embarks upon in a Microsoft shop!
This multi-hour "course", if you want to call it that, is going to be different. Really different. Think, The Goal, but for implementing DevOps automation in a Microsoft shop. Written by Microsoft MVP, PowerShell community hero and author of the popular Adam the Automator blog, Adam Bertram, this course teaches DevOps from the trenches.
Are you tired of typical, boring, "do this, do that" online courses, the author decided to take a completely radical approach. Instead of teaching one lesson after the other in sequential, predictable order with a few examples here and there, this course is going to be one big example!
The entire course is narrated, not taught, by Adam (a fearless ops guy) suddenly in charge of implementing DevOps practices and methodologies at his old, stodgy workplace.
You will learn by doing right alongside Adam as he shows you what terrible processes are in place now. Adam will talk directly to you as he struggles to learn about DevOps and teach you at the same time! You will be in the driver's seat the whole time while he sets up version control for the first time, gets his feet wet with GitHub, automates infrastructure deployments, dives into Pester testing and more.
This course is primarily aimed at IT operations personnel working in the Microsoft space. Adam's goal will be to implement PowerShell and related tools to help his company, Contoso, automate as much as possible. If you're into PowerShell scripting, this course is for you!
Sign up today to get access as soon as the course is released!
The Back Story
In this course, you are part of an IT operations team at a company called Contoso. You work in an organization that is stuck in the past and employs IT professionals that work hard but have never taken hold of automation and DevOps. They understand the concept and could be shown the light but don't have the motivation to change out of their ways.
You, on the other hand, are the eager beaver. You're the one that's always the go-getter. You're always looking for a better way to do things and you've just started learning about concepts such as infrastructure as code, CI/CD pipelines and DevOps.
You learned how to write PowerShell scripts a few years ago and use it daily. You even managed to win over some of your coworkers with PowerShell! Nowadays, you maintain the team's internal PowerShell scripts and modules on a file share. It's "working" but it's becoming a struggle to manage who changed what and figuring out who changed a production script and broke something. You and your team are also still doing a lot of stuff manually.
You've read up a little on version control and have played around with Git and GitHub and linking GitHub to automated build and release tools but really haven't had the time to implement these tools in the organization.
Your old IT director just retired and Contoso hired a young replacement, Mike, that came from the software development world. Although he admires your tenacity and spirit to automate things with PowerShell, he knows there's a lot more work to do.
He has asked you to take a stab at introducing DevOps philosophies and tooling to Contoso. He wants you to come up with a proof of concept implementation for taking all of those PowerShell scripts you and your team have built and turn them into first-class citizens in your organization.
Mike wants to fully embrace PowerShell and use the tools you and your team have created to automate every task possible. He hopes this will bring your team and the development team at Contoso closer together.
Mike wants you to set up a version control system in Git and GitHub and train your coworkers on how to collaborate with GitHub. Once that's done, he then wants you to look into Pester for testing those scripts and finally, he'd love it if you could demonstrate a working CI/CD pipeline for him to automate deploying all of the infrastructure needed to support the company's software.
He's freed up a ton of your time to work on this and it's now up to you to dive head first into getting this project done!
After lots of research, you've come up with a rough project plan Mike loves. He's asked you to get started immediately. Below is a copy of the email you sent him.
Thanks a ton for trusting me to put together this initiative. I won't let you down! Here's a high-level summary of what I intend to do and how to implement this across our team. It is my intent to get up to speed on many tools necessary to make this effort possible but, more importantly, how all of this cool, whiz-bang tools I'll get to implement help our team achieve more, in less time, with fewer problems and build a closer relationship with the software developers.
I've broken this initiative into five phases.
In this phase, I will build a Git repository containing our most-used PowerShell modules. As I make changes, I will commit these changes to my Git repo. During this time, if I make a mistake, I will learn how to revert changes via Git and will ultimately rely on Git for my script development.
Once I get accustomed to Git, I'll take the next step and sync my Git repo with GitHub where I'll keep my repo synced and perform tasks like tracking any problems and new things I want to add with Issues instead of just implementing them immediately, packaging up modules for release, using the Releases feature and more. Essentially, I'm going to work daily in GitHub and use all of the features I feel we can use as a team.
Once I've grasped version control with Git and GitHub, I'll then improve some of our existing infrastructure automation scripts to provision cloud resources in our preferred cloud provider, Azure. I will build automation that will provision testing environments for our developers that will allow us to run simple scripts to provision anything the developers need.
Once the infrastructure is built, I will then look into using Ansible or more PowerShell to ensure our servers stay in the state they should. This will be for our production servers.
In this phase, I will learn and implement Pester to test our PowerShell modules against best practices and to ensure changes I make do not affect other areas of my code. I will also build infrastructure tests to ensure the infrastructure that I've built scripts for in the previous phase are as we expect them to be.
For the final phase, I will integrate all of the tooling I've learned so far into a complete CI/CD pipeline for our PowerShell modules. This will include building out infrastructure with our scripts and tools rather than manually, invoking the tests I've built automatically using GitHub and a yet to be determined CI/CD solution and to deploy everything once tests pass. This phase will bring everything together!
How does this sound? I know it's high-level at this point but being fairly new to all of this, it's going to take a bit for me to learn everything.
I'm excited to get started!
Here's what Adam had to say when we told him we were going to build a course around his efforts:
I don't know why anyone would buy this course. I'm no expert and I'm going to make mistakes. I'm just lucky enough to be given the chance to implement loads of automation and DevOps goodness at my company. If you want to tag along though, be my guess. It's your money! - Adam