When I last left things, I had successfully installed TFS on a virtual machine in Azure. And I wrote the template in such a way that it could be deployed to Azure Stack as well. After completing that process, I started working through deploying an ARM template through TFS using an automated build process. It turns out that the server running the build agent needs to have Visual Studio installed in order to deploy resources to Azure. I have since updated my ARM template and PowerShell script to automate the installation of Visual Studio Community 2015 and the TFS build agent. I also updated the template to take two new parameters: FileContainerURL and FileContainerSASToken. The former points to the blob container that holds the necessary installation files. The latter passes a SAS Token for read and list access to the blob container. Continue reading “CICD Pipeline with Azure Stack – Part 2”
This is the first post in a series of getting a CICD pipeline working with Azure Stack. You can read part 2 here, part 3 here, and part 4 here.. I will add links to additional posts as they are created.
There are a few things that have been coming up a lot lately at work that I would like to dive into some more to get a better understanding. The first is Infrastructure as Code (IaC). I’ve started doing my fair share of this in both Azure and AWS, but I feel like I’m just starting to truly get my head around the best practices and patterns to use when deploying IaC. The next trend is a move towards continuous integration and continuous deployment, CICD. How can I take the principles of a CICD pipeline and apply them to the IaC work I’ve been doing? Finally, there is the hybrid cloud element that is coming with Azure Stack. Unless you’ve been living under a rock, you’ve probably heard about Azure Stack. If not, here are a couple resources to get you started. I wanted to put all of those items together and build out a project that uses them.
Currently I am working on a project to create a CICD pipeline in Azure Stack. I am planning to use Team Foundation Server 2015, running on a virtual machine on Azure Stack. I want the installation of TFS to be automated using ARM templates and a CustomScript extension. (I would use DSC, but I feel I’ve shaved the yak enough already). The installer and configuration files are sitting in Azure Blob storage, and I want to be able to pull them from the Server 2012 R2 instance that will be running TFS. I can do it using Invoke-WebRequest or Start-BitsTransfer, but I wanted to try using the Azure PowerShell storage cmdlets instead. Of course the vanilla install of Server 2012 R2 does not have the Azure modules or PowerShellGet module to access the PowerShell Gallery and install them. So instead I am going to use Invoke-WebRequest and Github to grab it instead. Continue reading “Installing Azure PowerShell on Server 2012 R2 using PowerShell”
Building IaaS in the cloud is becoming more popular. And part of building IaaS is providing some level of disaster recovery. After spending the last few weeks working in AWS, I realized that the toolsets I expected to exist just don’t. So what did I do? Scripted my own, or at least a start. Continue reading “Automating Snapshot Creation and Copying in AWS”
When it comes to AWS, it often feels like Windows is a second class citizen. I have been doing work in the Azure public cloud for a long time, where the situation is somewhat reversed. In AWS, the commands, assumptions, and example use cases are almost always in Linux with Windows as a bit of an after thought. I’ve been doing a lot of AWS work recently, and one of the things that came up was the ability to deploy AutoScale groups and Launch Configurations using CloudFormation. By itself, that process is relatively straightforward, especially if you are working in a Linux context. But what if you are deploying Windows boxes in a domain and want them to have a specific hostname structure? That’s a bit more tricky, but I got it figured out. Continue reading “AutoScale Groups with Domain Join”