DEV Community

Cover image for CDK For Terraform: MS Hosted Windows Build Agent
Arindam Mitra
Arindam Mitra

Posted on • Edited on

1

CDK For Terraform: MS Hosted Windows Build Agent

Greetings my fellow Technology Advocates and Specialists.

This is Chapter #3 of my Terraform CDK (Cloud Development Kit) Series.

In this Session, I will walk you through If CDK (Cloud Development Kit) for Terraform is available in Microsoft Hosted Windows Build Agent.

I had the Privilege to talk on this topic in ONE Azure Community:-

NAME OF THE AZURE COMMUNITY TYPE OF SPEAKER SESSION
.NET Zurich User Group In-Person
EVENT ANNOUNCEMENTS:-
Image description
IN-PERSON SESSION:-
LIVE DEMO was Recorded as part of my Presentation in .NET Zurich User Group Forum/Platform
Start Time of My Demo = 01 Hour 08 Mins 03 Secs
Duration of My Demo = 47 Mins 51 Secs
OBJECTIVES:-
# TOPICS
1. If Chocolatey Package Manager is installed in Microsoft Hosted Windows Build Agent.
2. If Terraform is installed in Microsoft Hosted Windows Build Agent. If not, Pipeline will install and then validate.
3. If Node is installed in Microsoft Hosted Windows Build Agent.
4. If Yarn is installed in Microsoft Hosted Windows Build Agent.
5. If CDK for Terraform is installed in Microsoft Hosted Windows Build Agent. If not, Pipeline will install and then validate.
REQUIREMENTS:-
  1. Azure Subscription.
  2. Azure DevOps Organisation and Project.
  3. Service Principal with Required RBAC ( Contributor) applied on Subscription or Resource Group(s).
  4. Azure Resource Manager Service Connection in Azure DevOps.
CODE REPOSITORY:-

Terraform CDK Series with Azure:-

Greetings to my fellow Technology Advocates and Specialists.

In this Session, I talk and run Demo on TERRAFORM CDK SERIES in below TECH COMMUNITIES:-

NAME OF THE TECH COMMUNITIES:-
Global Azure - 2024
DATE TOPICS CONTENT
17.04.2024 CDK for Terraform - Quickstart https://dev.to/arindam0310018/cdk-for-terraform-quickstart-1h3e
17.04.2024 CDK for Terraform - Setup & Configure https://dev.to/arindam0310018/cdk-for-terraform-setup-configure-f42
05.05.2024 CDK For Terraform: MS Hosted Windows Build Agent https://dev.to/arindam0310018/cdk-for-terraform-ms-hosted-windows-build-agent-3mon
05.05.2024 CDK For Terraform: MS Hosted Linux Build Agent https://dev.to/arindam0310018/cdk-for-terraform-ms-hosted-linux-build-agent-1egi



So, here goes the answer:
"No, Terraform and CDK for Terraform DOES NOT come installed by default in Microsoft Hosted Windows Build Agent."

PIPELINE CODE SNIPPET:-
AZURE DEVOPS YAML PIPELINE (azure-pipelines-with-CDK-For-Terraform-Win-v1.0.yml):-
trigger:
  none

######################
#DECLARE VARIABLES:-
######################
variables:
  ServiceConnection: amcloud-cicd-service-connection
  BuildAgent_Win: windows-latest
  envName: NonProd

#########################
# Declare Build Agents:-
#########################
pool:
  vmImage: $(BuildAgent_Win)

###################
# Declare Stages:-
###################

stages:

- stage: TEST_CDK_FOR_TERRAFORM_ON_WINDOWS 
  jobs:
  - job: TEST_CDK_FOR_TERRAFORM_ON_WINDOWS 
    displayName: TEST CDK FOR TERRAFORM ON WINDOWS
    steps:

##################################################
# Test CDK for Terraform in Windows Build Agent:-
##################################################
    - task: AzureCLI@2
      displayName: Test CDK for Terraform on Windows
      inputs:
        azureSubscription: $(ServiceConnection)
        scriptType: ps
        scriptLocation: inlineScript
        inlineScript: |
          echo "##########################################################"
          $choco_ver = choco -v
          echo "The latest chocolatey version installed is: $choco_ver"
          echo "##########################################################"

          echo "Terraform is NOT INSTALLED!."
          echo " Proceed to installation..."
          echo "##########################################################"
          choco install terraform -y
          $tf_validate_install = terraform -v
          echo "##########################################################"
          echo "The latest terraform version installed is: $tf_validate_install"
          echo "##########################################################"

          $node_ver = node --version
          echo "The latest node version installed is: $node_ver"
          echo "##########################################################"

          $yarn_ver = yarn --version
          echo "The latest yarn version installed is: $yarn_ver"
          echo "##########################################################"

          echo "CDK for Terraform is NOT INSTALLED!."
          echo "Proceed to installation..."
          npm install --global cdktf-cli@latest
          npm install @cdktf/provider-azurerm
          echo "##########################################################"
          $cdktf_validate_install = cdktf --version
          echo "The latest cdktf version installed is: $cdktf_validate_install"
          echo "##########################################################"

Enter fullscreen mode Exit fullscreen mode

Now, let me explain each part of YAML Pipeline for better understanding.

PART #1:-
BELOW FOLLOWS PIPELINE VARIABLES CODE SNIPPET:-
######################
#DECLARE VARIABLES:-
######################
variables:
  ServiceConnection: amcloud-cicd-service-connection
  BuildAgent_Win: windows-latest
  envName: NonProd

Enter fullscreen mode Exit fullscreen mode
NOTE:-
1. Please change the values of the variables accordingly.
2. The entire YAML pipeline is build using Variables. No Values are Hardcoded.
PART #2:-
This is a Single Stage Pipeline - TEST_CDK_FOR_TERRAFORM_ON_WINDOWS (with 1 Pipeline Task):-
###################
# Declare Stages:-
###################

stages:

- stage: TEST_CDK_FOR_TERRAFORM_ON_WINDOWS 
  jobs:
  - job: TEST_CDK_FOR_TERRAFORM_ON_WINDOWS 
    displayName: TEST CDK FOR TERRAFORM ON WINDOWS
    steps:

Enter fullscreen mode Exit fullscreen mode
PIPELINE TASK #1:-:-
1. Validate Chocolatey Package Manager.
2. Install and validate Terraform.
3. Validate Node.
4. Validate Yarn.
5. Install and validate CDK for Terraform.
##################################################
# Test CDK for Terraform in Windows Build Agent:-
##################################################
    - task: AzureCLI@2
      displayName: Test CDK for Terraform on Windows
      inputs:
        azureSubscription: $(ServiceConnection)
        scriptType: ps
        scriptLocation: inlineScript
        inlineScript: |
          echo "##########################################################"
          $choco_ver = choco -v
          echo "The latest chocolatey version installed is: $choco_ver"
          echo "##########################################################"

          echo "Terraform is NOT INSTALLED!."
          echo " Proceed to installation..."
          echo "##########################################################"
          choco install terraform -y
          $tf_validate_install = terraform -v
          echo "##########################################################"
          echo "The latest terraform version installed is: $tf_validate_install"
          echo "##########################################################"

          $node_ver = node --version
          echo "The latest node version installed is: $node_ver"
          echo "##########################################################"

          $yarn_ver = yarn --version
          echo "The latest yarn version installed is: $yarn_ver"
          echo "##########################################################"

          echo "CDK for Terraform is NOT INSTALLED!."
          echo "Proceed to installation..."
          npm install --global cdktf-cli@latest
          npm install @cdktf/provider-azurerm
          echo "##########################################################"
          $cdktf_validate_install = cdktf --version
          echo "The latest cdktf version installed is: $cdktf_validate_install"
          echo "##########################################################"

Enter fullscreen mode Exit fullscreen mode

NOW ITS TIME TO TEST!!!

TEST CASES:-
1. Pipeline executed successfully.
Image description
2. Terraform Installed and Validated Successfully.
3. Node and Yarn version validated Successfully.
4. CDK for Terraform Installed and Validated Successfully.
Image description

Hope You Enjoyed the Session!!!

Stay Safe | Keep Learning | Spread Knowledge

Billboard image

Deploy and scale your apps on AWS and GCP with a world class developer experience

Coherence makes it easy to set up and maintain cloud infrastructure. Harness the extensibility, compliance and cost efficiency of the cloud.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay