Search Results for

      Show / Hide Table of Contents

      Intent.IaC.Terraform

      Overview

      The Intent.IaC.Terraform module automatically generates Infrastructure as Code (IaC) through Terraform .tf files for your Intent Architect applications. This module scans all applications in your Intent Architect Solution to identify applications and generates the necessary Terraform configuration to deploy them to Azure.

      Features

      • Automatic Discovery: Scans Intent Architect Solutions to identify Azure Function applications
      • Eventing Integration: Detects and configures Azure Event Grid and Service Bus resources when Intent.Eventing.AzureEventGrid or Intent.Eventing.AzureServiceBus modules are present
      • Modular Structure: Generates organized Terraform modules for applications and subscriptions
      • Deployment-Ready: Creates subscription configurations that work with automated deployment pipelines

      Generated Structure

      The module generates Terraform files organized into two main modules:

      01-applications Module

      Contains the core infrastructure resources:

      • azure-main.tf - Common Azure provider configuration and resource group setup
      • azure-functions-{app-name}.tf - Individual Azure Function app configurations
      • azure-event-grid-resources.tf - Event Grid topics and related resources (when applicable)
      • azure-service-bus-resources.tf - Service Bus queues, topics, and subscriptions (when applicable)

      02-subscriptions Module

      Contains Event Grid subscription configurations:

      • azure-main.tf - Provider configuration for subscription deployment
      • azure-functions-{app-name}.tf - Event Grid subscriptions for each function app

      Prerequisites

      • Terraform CLI installed
        • Installation
        • Commands
      • Azure CLI installed and authenticated
        • Installation
        • Getting started

      Configuration

      The module automatically detects your applications inside your Intent Architect solution. Ensure your applications are properly configured with:

      1. Azure Function Applications: By using Intent.AzureFunctions module
      2. Service Bus Configuration: By using Intent.Eventing.AzureServiceBus module
      3. Event Grid Configuration: By using Intent.Eventing.AzureEventGrid module

      Deployment Process

      The generated Terraform modules are designed to work with a multi-stage deployment process:

      Stage 1: Deploy Applications

      cd 01-applications
      terraform init
      terraform plan -var="resource_group_name=my-rg" -var="resource_group_location=East US"
      terraform apply
      

      Stage 2: Deploy Application Code

      Deploy your Azure Functions application code using your preferred method (Azure DevOps, GitHub Actions, etc.)

      Stage 3: Deploy Subscriptions

      cd ../02-subscriptions
      terraform init
      terraform plan
      terraform apply
      
      Note

      The subscriptions module is deployed separately to ensure Azure Function endpoints are available before creating Event Grid subscriptions, as Event Grid requires valid endpoint URLs for subscription validation.

      Variables

      The generated Terraform modules accept the following variables:

      01-applications Module

      • resource_group_name - Name of the Azure resource group to create/use
      • location - Azure region for resource deployment

      02-subscriptions Module

      • azure_functions_{app-name}_id - Azure Function App Ids per application based on the output of module 01-applications

      Example Output Structure

      terraform/
      ├── 01-applications/
      │   ├── azure-main.tf
      │   ├── azure-functions-invoice.tf
      │   ├── azure-functions-orders.tf
      │   ├── azure-event-grid-resources.tf
      │   └── azure-service-bus-resources.tf
      └── 02-subscriptions/
          ├── azure-main.tf
          ├── azure-functions-orders.tf
          └── azure-functions-invoice.tf
      

      Troubleshooting

      Common Issues

      Event Grid Subscription Failures

      • Ensure Azure Functions are deployed and accessible before running the subscriptions module
      • Verify function URLs are valid and return HTTP 200 responses

      Resource Group Conflicts

      • Check if resource group already exists and has conflicting resources
      • Ensure proper permissions for resource group creation/modification

      Provider Authentication

      • Verify Azure CLI is authenticated: az login
      • Check subscription context: az account show
      • Edit this page
      ☀
      ☾
      In this article
      Back to top Copyright © 2017-, Intent Architect Holdings Ltd