Provision Azure Spring Apps using Terraform
Published Dec 07 2022 05:36 AM 2,959 Views

This blog will demonstrate how to provision an app on Azure Spring Apps using Terraform with easy steps.


Terraform is one of the most popular configuration orchestration tools providing a consistent syntax and structure across cloud platforms. It allows safe and convenient design, management, and improvement of infrastructure as code. If you are working in a relatively small team and running DevOps on your own, you can embed Terraform script in your CI/CD pipeline like GitHub Actions to manage everything as code from the provision and config cloud resources to build, test and deploy the app on it. If you are working in an enterprise with a dedicated infrastructure team, you might have that infrastructure team provisioning virtual networks, databases, and compute resources with Terraform, so that the app team can focus on business logic and deploy their code with CI/CD pipeline.


The Spring PetClinic is a popular sample application for tutorials. It was distributed with the Spring Framework until the 2.5 version (2007).



We will use Azure Cloud Shell to walk through the whole steps. If it is your first time using it, you can find more setup info in the official doc.


1.  This sample code (name it as helps you to setup the necessary configs for petclinic. You may upload this to your git repo and pull it to the azure cloud shell:



provider "azurerm" {
  features {}

resource "azurerm_resource_group" "example" {
  name     = "petclinic_terraform"
  location = "East US"

resource "azurerm_application_insights" "example" {
  name                = "petclinic-test-appinsights"
  location            = azurerm_resource_group.example.location
  resource_group_name =
  application_type    = "web"

resource "azurerm_spring_cloud_service" "example" {
  name                = "petclinic-springcloud"
  resource_group_name =
  location            = azurerm_resource_group.example.location
  sku_name            = "S0"

  config_server_git_setting {
    uri          = ""
    label        = "config"
    search_paths = ["dir1", "dir2"]

  trace {
    connection_string = azurerm_application_insights.example.connection_string
    sample_rate       = 10.0

  tags = {
    Env = "staging"

resource "azurerm_spring_cloud_app" "example" {
  name                = "petclinicapps"
  resource_group_name =
  service_name        =
  is_public           = true
  https_only          = true

  identity {
    type = "SystemAssigned"

resource "azurerm_spring_cloud_java_deployment" "example" {
  name                = "default"
  spring_cloud_app_id =
  instance_count      = 2
  jvm_options         = "-XX:+PrintGC"
  runtime_version     = "Java_11"

  environment_variables = {
    "Env" : "Staging"

resource "azurerm_spring_cloud_active_deployment" "example" {
  spring_cloud_app_id =
  deployment_name     =




2. After pulling the repo with the tf file into your cloud shell, init the terraform with



terraform init








terraform plan -out=springapps.plan




4. Now execute the plan with



terraform apply springapps.plan 



Once you see the complete message, the provision is done.


You can go to the Azure portal and check:


You can find more API on Terraform for Azure Spring Apps from the official doc.

Learn more about the new monthly free grant of 50 vCPU and 100 GB hours.

  Try it Now

Version history
Last update:
‎Dec 07 2022 05:29 AM
Updated by: