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.

Read more


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 }}'

Read more


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.

Read more


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.

Read more


IaC - Gold Image as Code: A DevOps approach to building base images efficiently!

My favorite task is to automate a process that takes days, manual configs and meetings with SMEs into a pipeline with scripts that complete in minutes. In this article we are using Azure DevOps pipelines, Azure Vault, Azure Blob Storage, Hashicorp's packer, Chocolatey and Powershell to orchestrate the creation of a gold image that has the latest-patched version of Windows 10 H2, nine applications installed and 2 configurations applied. All of this is built in less than 1 hour and the pipeline can be triggered every month to get new patches and software updates without interaction. The base images can be used for WVD, Citrix machine catalogs, RDSH and scale groups . 

Read more


Easy config of an Azure DevOps agent in a Kubernetes cluster with Helm Charts

Helm charts make it simple to deploy containers in K8S . I see it as Kubernetes package manager, think Chocolatey for Windows. Here are simple steps to get the Azure Agent configured in your Kubernetes cluster by using Helm charts and parameters so that you can have your own or extra builder in your pipelines if you already have a K8S cluster.