What would VMworld be without a Hackathon? -> Boring!
For the past several years, I have been a participant in the VMworld Hackathon. Year after year, it has been a great experience. I have been a participant, team captain, but every year, no matter what I come out a winner!
These types of events build confidence and character. It motivates me to try new things and think of different ways to solve problems.
I am always impressed by the projects that folks choose to work on and how much work can be completed in just a few hours.
This year is going to be a little different since it will all be virtual. However, I LOVE the concept that was chosen:
Ansible vs. PowerShell
While I would consider myself quite crafty with PowerShell, there is something that has been appealing about Ansible for a while. Nevertheless, I have yet to meet someone that could convince me to use it. I feel as though I can do it better or faster with PowerShell. Yes I am aware that they are not specifically meant to solve the same problems. That does not keep me from trying!
The Hackathon will be a little different for me as well.
I am a Judge for the very first time! It is very exciting.
I know all about what the experience as a participant is like, the stress of coming up with a good idea, or choosing the right team, scoping a project so that it can be completed in a night. Making sure that everyone on the team has some work to complete, that the demos will work, not forgetting to eat and drink!
However, with all of the stress comes a great reward, the sense of accomplishment, community and fun.
I am looking forward to meet that someone, or team of folks to convince me that I should invest some time learning about Ansible.
VMworld 2020 is rapidly approaching. And while this year might look a little different, the outcome of YOUR event will depend on you. Just like every other VMworld in the past I will attempt to make the most of my experience at during the conference.
With the COVID-19 pandemic rocking the entire world this year, I knew that the in-person conference schedule would be different this year. Whether conferences were cancelled, or if they moved to a completely online event, my conference year would be impacted. I enjoy the traveling, and being able to completely throw myself into several days of learning new things (while not at work). I enjoy meeting new people, seeing old friends, talking shop and leeching off the passion of other folks to rejuvenate my own love for IT.
I was heartbroken when I first learned that VMworld would be 100% virtual. I was angry, sad, confused… All of the emotions. Keep in mind this news was coming out before the annual email that my sessions were rejected. So I am used to bad news, but I was hoping the pandemic would have been settled down, and that VMworld could still be my fun, in-person, end of summer event. So I kinda forgot about VMworld for 2020.
Fast-forward a few weeks and to my surprise I received emails that not one, but two of my VMworld 2020 sessions were accepted. WHAT?!?!? That’s CRAZY, and to think that there will be no stage, it will be a virtual event. I was still torn on whether or not I was going to even register for an all virtual VMworld, but now I have the opportunity to present. The internal struggle was real, I needed to give this more thought! So as I talked to my wife about it and what I realized is this:
VMworld – makes me smile.
For me, VMworld is much more than just an IT conference. It is my annual pilgrimage that resets my biological IT clock. VMworld truly (re)kick-started my IT career in 2011, so I treat it with the utmost respect. I thought back to why I attend VMworld each year, what I look to get out of the conference, and what it would mean if I didn’t give it my best effort.
The truth is, I would never turn down an opportunity to present, not at VMworld or any other conference, whether it’s in person or online. I will always attempt to give back to the community that has motivated me to get where I am today. As I wrap up the final draft of my presentations I am more excited for this VMworld than any of the previous events I have attended, because I have the opportunity to change someones perspective, motivate them to learn more, dig deeper, or try something new.
There are over 800900 sessions at VMworld this year, which is an insane amount of material. But the reality is that it only takes 1 session to change a life. Maybe its a session on PowerCLI, Kubernetes, vCenter performance, etc, it really doesn’t matter. So as you sit at home, find one session, or two sessions, take the information in, and make a change in your life. Learn something new, don’t get overwhelmed with all of the information that is available. Make VMworld 2020 YOUR event. It does not need to be crazy like my calendar from last year:
Things about VMworld that make me smile:
Signing up for Sessions in the Schedule Builder
Seeing my name in the Content Catalog
Joining wait lists for popular Sessions
Organizing and filling my entire Calendar for the week
Recently there has been an uptick in conversations surrounding the G.O.A.T. With the live sports world essentially halted, ESPN and the rest of the sports channels are replaying old games and focusing on some of the greatest and most popular players of each sport. Yes, I still have normal cable. Being a pretty big sports fan it’s been a pretty good filler in the absence of live sports. I’ve enjoyed watching ‘The Last Dance’ which focused on Micheal Jordan, ‘Tiger Slam’ focused on Tiger Woods and some others like Gretzky, Mike Tyson Cal Ripken. As a nostalgic sports fan it has been great.
So this is a tech blog right? So all of these shows had me thinking about who in the VMware community is the G.O.A.T., or the IronMan, a person that you would want to aspire to be like. Knowing that you may never reach that greatness! But who makes me want to hit the keyboard, and create something cool, or automate that strange thing to save me a few mouse clicks, etc.
While I think that the VMware community is full of great folks, it is a very large community with a lot of positive attitudes that are willing to help. I can say that honestly as I have been around for quite a while and participate(d) in several other communities that aren’t as well established.
The person that jumps out at me is William Lam. He is head and shoulders above anyone else in the community. He is the vGoat.
So what makes William the v.G.O.A.T.-? Several things.
Generally speaking, a really nice person
His blog https://www.virtuallyghetto.com/ has been around for over 10 years. Honestly, I would love to see the stats his blog generates. I’m happy when I see 10-15 views per day on my blog, lol. He’s a machine.
He is an expert. He is intelligent. His blog posts reflect this. The content of his posts are detailed and consumable. Whether it be a new feature, troubleshooting a common problem, or just something cool that he has been working on, his writing style allows you to be immersed in the content to understand the purpose of the blog post. The level of automation that he is able to achieve across a wide variety of technology is pretty amazing when you step back and take a look. His knowledge spans many products, not a stove pipe. His knowledge is deep, not just wide. The frequency of the content is also something to note. This is where I’d love to see his stats again, but I would venture to say 1-2 blog posts a week is normal if not a bit low.
While I cannot speak for William, I truly believe his goal is to educate everyone. He wants to share the solutions he works on, and make life easier for anyone that uses the products he touches. He cares, about his work, helping others, delivering great products, great content, etc. The word ‘Passion’ comes to mind when I think of him. He is so energetic about his work, it addictive, it excites me to jump back into something I am working on.
Generally speaking, a really nice person
I have had the pleasure of talking with William over the years and its a pleasure. He is a kind person. Loves to talk tech stuff, he is interested in learning about those edge cases and weird scenarios you may have.
The tech oozes from his soul. That is something I appreciate.
One thing I have learned over the past few years is that I really enjoy helping people out. With the current world events and everything I normally do in my day to day life (coaching soccer, volunteering at the children’s school, etc) canceled for the foreseeable future, it was nice to see that I have another way. Enter – Folding@home.
My wife was ecstatic when I told her that I was going to run upstairs and start folding. She was less enthused when she found out it was not going to be clothing.
Twitter has been blowing up the past few days about Folding@home, so I did some research and determined I can help! At a minimum, I knew I could use my VMware based homelab to throw cycles at the cause. I also reached out to the owner of my company, Belay Technologies, to see if we could use idle equipment in our lab. Sure enough, the answer was yes!
One thing I love about Belay Technologies is that we are always looking for ways to help.
Okay, Okay… You may be wondering what Folding@home is. The answer is that it’s a distributed computing solution that is looking to solve scientific problems. It’s nerd stuff!
Need more information on Folding@home, Check out their website. Review their FAQ.
Modify the PowerCLI script to work in my environment. 🙂
Deploy the OVA to my homelab.
Create a team for Belay Technologies.
Deploy the OVA to the Belay Lab.
And now we are helping to save the world, without leaving the office.
Here is a quick snippet on how it works from the Folding@home website.
Team Numbers (To view stats)
VMware – 52737
BelayTech – 246789
Hopefully, you will take some time to consider helping the cause by donating your unused CPU cycles.
Before loading software on your personal computer, please consider the security implications. I do not recommend running this software on a computer that stores your personal information. Additionally do not run this on your work computer without your employer’s written consent. The program is designed to consume nearly 100 percent of your available CPU cycles.
Thank you to all of the folks over at VMware that have made the deployment of the Appliance to easy. It was a great idea and even better execution!
Side note; In my homelab, I needed to have the vCenter running in order to deploy the appliance. Once it was deployed I powered the vCenter off to give the full CPU availability to the appliance (my environment is running on an Intel NUC).
As a decision-maker for several large projects, I constantly need to make difficult decisions regarding the purchase of software licensing. One of the things I look for is ‘what are those software vendors doing to reduce my operating costs’? Do they include tools to manage their products? Are they looking to their users to define their roadmap? VMware consistently delivers features and capabilities that make my life easier, Period.
Let me set the stage. For one of my primary projects, I support 60+ vCenter servers across multiple sites. To date, I have not found a single tool that can provide configuration and lifecycle management for our vCenter servers. To be perfectly honest the idea of backups and disaster recovery was really just an afterthought. In our shop, we found it just as easy to deploy a new vCenter than it was to fix an old or broken one.
I assume that while my environment might be on the extreme side of the envelope when it comes to the number of vCenters, the VMware community has desired a vCenter configuration management tool for some time.
Enter vSphere 7 and vCenter Server Profiles. Words cannot express my level of excitement for a vendor-supported solution! This new feature promises to deliver an interface that will allow vSphere administrators to easily and uniformly manage multiple vCenter servers.
NOTE: THIS IS NOT HOST PROFILES!
Keep in mind that for the initial release there is no User Interface. All interaction is through REST APIs. Get out your console’s folks!
The API currently has four actions:
List – Provide a list of configurable items (by section)
Export – Exports the configuration profile via a JSON file.
Validate – Validates the configuration against a supplied JSON file.
Import – Imports a profile to vCenter Server via a JSON file.
The APIs will also be available in the API Explorer that is located in the Developer Center.
The process seems pretty simple.
Configure the ‘Gold’ or template vCenter
Export the configuration
Then Import the configuration to any vCenter that you want to be configured the same way!
Configuration validation is one of the new features I look to take advantage of. I plan on writing a simple PowerShell process to run on a schedule that simply takes the exported ‘Gold’ copy of the configuration and validates it against all of my vCenters.
I love this new addition to vSphere 7 and cannot wait to get my hands on it. Kudos to the VMware team for listening to its customers and community of users!
I’ve added a new function to the ‘jpsider’ module. I always find myself opening multiple console windows using the mouse. Yeah, I said it, I use the mouse! Well, it is too many clicks, so now I have a function that can open the new consoles for me! This will work for ‘PowerShell.exe’ and ‘Pwsh.exe’. I will need to do some testing on linux and Mac, as the current function will not work. If anyone has a desire for that please open an issue on GitHub for me.
Recently I’ve been getting quite a few inquiries about setting up modules for PowerShell. So, I’ve decided to write about it. Below you will read about how I go about creating a new PowerShell module.
Included in this Post:
Overview of Scaffolding
My Module Template
Local testing files
Run through an example
What is Scaffolding?
In it’s simplist form, its a common directory and file structure to help you build a PowerShell module. The directory structure helps separate build tools from the actual module/function files. There are two fairly popular scaffolding tools for PowerShell:
Plaster is the tool that I use to create new module scaffolding. I have found it easy to use and when I was first writing modules, there were quite a few blogs that did really well at helping me understand the process and tools. This was probably the most helpful link that I could find using Plaster. -> Kevin Marquette
My Module Template
Of course nothing in the PowerShell world is complete unless you have put your own twist or spin on it! Over time I have created my own Plaster template that I use to generate my own Modules. While the changes are small, it helps me rapidly generate all of the directories I desire to have in a module. My Module template can be found on GitHub.
My additions to the standard Plaster template are the following:
Separate file to add any additional build settings. It keeps things clean IMO.
Allows developer to run Pester Tests on the full module on local box.
Allows developer to run PSCodeHealth on the full module on local box.
Example Function and Unit test files
Example Function (Located in Public and Private folders)
Example Unit test file (Located in Public and Private folders)
I’ve been talking with the guys who are working on the core functionality of the AsBuiltReport PowerShell Modules. They’ve asked me to scaffold out two of their repositories to help create an automated build pipeline for their modules. So lets walk through the process to show you how simple it can be.
This will create the entire directory structure as well as replace the new module name in all of the correct places withing each of the new/copied files. See the Repository used in this example on the AsBuiltReport GitHub.
Feel free to fork/update my Plaster template, I’m always interested to see what the community can come up with.
The annual VMworld Hackathon hosted by the VMwareCode team is one of my favorite events of the year. We get to hang out with community members, eat, drink and pound on keyboards in a competition where anything goes. I’ve participated in each of the last 4 events (US only), and for the first time I was on the winning team! Very exciting! Thank you to the VMwareCode team for continuing to support such a fun event for the community! It’s honestly less about competing and more about learning new things. One of the best parts is getting messages weeks later stating that I helped someone with some little keyboard trick.
This year I put together a team and had a whole bunch of folks join to have some fun with the PowerCLI examples repository. The team was comprised of folks who had skills that ranged from novice to expert. Hopefully everyone learned a few things and could apply them to their normal jobs.
Huge thanks to all my team members. You guys were AWESOME & fun to work with!!
This Year’s Project:
The team would focus on creating an automated process around the PowerCLI Examples repository in GitHub. Some tasks would include:
Resolve any current Lint Errors (There are Hundreds)
Implement auto-fix instructions during commits for common errors
Add Pester Tests for scripts
Why would this be a useful project?
The PowerCLI examples repository is simply a mess. A lot of folks have submitted useful scripts/examples/modules and other things to the repository but there is no consistency in the material. It’s unrealistic to think that one person or even a small group could provide the oversight needed on such a large repository to ensure that only quality/useful code was being published. Our Hackathon team focused on attempting to make this process a little more human friendly. Which would allow the repository owners to set up acceptance criteria and allow for the build process to determine if the code meets the requirements. Additionally it would be great for the consumer of the repository to have an easy method for downloading and using the PowerCLI examples.
What we decided on:
In talks with the team we adjusted the tasks for the night to focus on making the PowerCLI examples repository more user friendly from the Administrative and User side. This would include the following tasks for the night:
Create a new GitHub Repository to keep things clean
Only focus on the Scripts Directory
Convert all the Scripts to Functions
Package the Functions as a PowerShell Module
Scaffold a directory structure to support a PowerShell Module
Select a single Script, convert it to a function
Add Pester Tests for the Single script
Create CI/CD pipeline using AppVeyor
Publish new Module to the PowerShell Gallery
Review/Define quality gates
Run Linting tools against the newly created functions
What we accomplished:
The good news is that we were able to complete each of the tasks above, with only a few caveats.
All of the scripts were converted to functions and the Linting was run against them. However it would not make sense to blindly place all of these items in the Module.
The repository we worked from can be viewed on my GitHub page.
Only 1 function Get-MigrationsSet has unit tests, it would take some time to create the tests for all of the functions that were converted. See the first bullet.