Skip to content

Setting up the environment for IIS Web App extension

Vladyslav Horbachov edited this page May 30, 2024 · 6 revisions

Overview

This guide provides detailed instructions on setting up a testing environment for Azure DevOps extensions IIS Web App Deployment Using WinRM.

The environment setup is described in two scenarios: Automatic and Manual

Configuration Components

This testing infrastructure involves setting up two primary virtual machines:

Build Agent VM: This machine acts as the job agent for Azure DevOps, handling build and deployment tasks.

IIS Server VM: This server hosts the Internet Information Services (IIS) for deploying and serving the web application.

Both VMs should be configured within the same Virtual Network (VNET).

WinRM diagram drawio

Automatic infrastructure

This scenario automatically creates a resource group on Azure and deploys testing infrastructure using Terraform, Packer and GitHub Actions.

  1. Fork the Repository: winrm-infrastructure

This repository contains the necessary GitHub Actions, Terraform + Packer files and scripts for setting up the VMs and network configurations.

  1. Configure Repository Secrets according to Readme file in the repository

Add the required secrets that will be used by the GitHub Actions pipeline to interact with your Azure environment and Azure DevOps

  1. Run the pipeline: Trigger the Deploy Infrastructure pipeline on your fork.

This pipeline will automatically provision and configure the required Azure resources, including the build agent and IIS server VMs, according to the infrastructure code and scripts present in the repository.

image
  1. Go to Azure DevOps and create a new pipeline using Self-Hosted pool:
pool:
  name: Self-Hosted

steps:
- task: IISWebAppMgmt@3
  displayName: 'Manage IISWebsite'
  inputs:
    machinesList: 10.1.0.6
    AdminUserName: 'iis-vm\vmadmin'
    AdminPassword: 'P@ssw0rd1234!'
    WebsiteName: IISWebappM
    WebsitePhysicalPath: 'C:\azagent\Sample'
    AddBinding: true
    CreateOrUpdateAppPoolForWebsite: true
    ConfigureAuthenticationForWebsite: true
    Port: 443
    AppPoolNameForWebsite: testapp
    AnonymousAuthenticationForWebsite: true
    WindowsAuthenticationForWebsite: false
    AppPoolName: DefaultAppPool
    DeployInParallel: false