Want to make I.T. Happy? Automate Cert Import and Binding for IIS.

An important part of any web server build is to install a valid SSL cert and bind it to the sites. In a regular IT team certs are misunderstood since it is something they do only when they expire or when there is a new server to build, some even fear dealing with certs. New IT teams are building servers and infrastructure as code and this step makes it easy to deploy and bind the certs when using windows and IIS.
Configure the Azure DevOps Agent to use Ansible playbooks locally.

Sometimes you might want to do things in localhost. My example is that I want to mount a share locally so that I can create directories for mount points and different permissions. I don't want to spin up a new machine to do this simple task so I will run Ansible on the localhost which is my Azure DevOps Agent.
Easy way to create an Ansible Dynamic Inventory from an Azure Resource group

I was looking at the best way to create an inventory from a virtual machine scale set and found this gem. The Azure dynamic-inventory plugin is the easiest way to get VMs, scale set and resources from resource groups and do stuff with ansible.
Elastic Cloud Enterprise Configuration with Ansible

One of the advantages about using DevOps practices is that you can rely less in documentation and more on orchestration. Documentation can come from a vendor or the engineer that configured the system or a mix of both since you have to modify based on your environments. Using an Ansible role like the one developed by Elastic saves a ton of time and add best practices and performance tuning while at it!
Fix for Azure DevOps Build Immutable Image: Invalid Grant - AADSTS50173

I have a pipeline with an on prem Azure DevOps agent that is loaded with packer so that I can use the packer image build step. After changing my password and installing the azure cli the pipeline failed with status code 400.
Error: Invalid Grant
Error Description: AADSTS50173: The provided grant has expired due to it being revoked, a fresh auth token is needed. The user might have changed or reset their password. The grant was issued on '{{ timestamp }}' and the TokensValidFrom date (before which tokens are not valid) for this user is '{{ timestamp }}'
Storing and Passing the packer imageid to Azure DevOps variable in a variable group.

For infrastructure as code I am using packer (Build Immutable image) task to create a gold image. I then want to pass the image URI to Terraform so it can spin up servers or scale sets. Since I like to add date/time in our packer image name then the name is not static so we have to save the resource ID somewhere after a successful packer build so that Terraform is aware of which image to use.
Using ServiceNow flow REST step to start and pass variables to an Azure DevOps pipeline with started integrationhub package.

If you have the starter pack and want to create your own automation without having to pay for higher packs you can pass variables to Azure DevOps or Jenkins and run pipelines to orchestrate tasks.
In this article we configure a SNOW Catalog Item with a Flow which has a rest step that passes variables and starts a pipeline in Azure DevOps. The pipeline then runs the script with variables and updates the request so the user is aware of progress. Then the SNOW flow checks the request and based on the modification from the script it closes the request or opens a task for IT to check and perform the request manually.
Create secured, fast and efficient self service software installations for your users by integrating ServiceNow's IntegrationHub, Powershell and Chocolatey

If you have servicenow and chocolatey in your company this is a great project to provide your users with a way to get software without depending on a busy IT admin to remote in to your PC, download files and install apps. Chocolatey steamlines app installs and Service Now takes the same request the user would've submitted to a person and turns it into a powershell script that is securely executed with your mid servers. In this article we show the basics of the integration.
More Linux-like features for Windows, this time is the built-in package manager: WinGet

In I.T. we are used to tools like SCCM, Altiris and PDQ to name a few and they get the job done but in order to transition to a DevOps worklfow we need a command based / linux-like package management solution. Powershell scripts can be used to download, install and report on MSIs and EXEs exit codes. Chocolatey organized and created a central repo for all of us to colaborate and pull from. Now, Microsoft, is developing WinGet to have a built-in, linux-like, choco-familiar, devops way to do package management. In this article you will see how to configure WinGet and install an app.
Shifting from legacy VDI to an innovative containerized solution.

For the past few years I have been searching, learning and implementing different techniques to integrate DevOps practices with VDI. Most VDI solutions are using legacy solutions that require manual configurations, repetitive steps and no DevOps strategies for automation. The architects and engineers that notice this trend are creating their own orchestration around the costly vendor solutions. In my searching I found a few companies and repos that are providing containerized "desktop" solutions with graphical interfaces so that users can remote/console in and interact inside the container as they are accustomed to with a VDI or RDP. I found Kasm Technologies and, after reading their articles and configuring my POC, it became my personal favorite because it matched the vision and innovation I had in mind. A containerized desktop infrastructure (CDI) follows DevOps practices at its core with Docker and CI/CD Pipelines.