Search code examples
azureazure-virtual-networkazure-traffic-managerterraform-provider-azure

Terraform script for Traffic Manager throws Unknown error


I encounter the error when I deploy Traffic manager. It might be very basic configuration. However, it says Unknow service error I have no clue to fix this.

Terraform Version

Terraform v0.10.0

# Service Principle

variable "subscription_id" {}

variable "client_id" {}

variable "client_secret" {}        

variable "tenant_id" {}    

Resource Group

variable "resource_group" {}

variable "location" {}

variable "environment" {}

Actual script

  # Service Principle
    provider "azurerm" {
      subscription_id = "${var.subscription_id}"
      client_id       = "${var.client_id}"
      client_secret   = "${var.client_secret}"
      tenant_id       = "${var.tenant_id}"
    }

    # Traffic Manager Profile

    resource "azurerm_traffic_manager_profile" "profile" {
  name                   = "trafficmanagerprofile"
  resource_group_name    = "production"
  traffic_routing_method = "Weighted"

  dns_config {
    relative_name = "production"
    ttl           = 30
  }

  monitor_config {
    protocol = "http"
    port     = 80
    path     = "/"
  }
}

resource "azurerm_public_ip" "pip" {
  name                         = "ip${count.index}"
  location                     = "${var.azure_region}"
  resource_group_name          = "production"
  public_ip_address_allocation = "dynamic"
  domain_name_label            = "${var.dns_name}${count.index}"
  count                        = "${var.num_vms}"
}

resource "azurerm_traffic_manager_endpoint" "endpoint" {
  name                = "endpoint${count.index}"
  resource_group_name = "production"
  profile_name        = "${azurerm_traffic_manager_profile.profile.name}"
  target_resource_id  = "${element(azurerm_public_ip.pip.*.id, count.index)}"
  type                = "azureEndpoints"
  weight              = 1
  count               = "${var.num_vms}"
}

Debug Output

Error: autorest/azure: Service returned an error. Status=400 Code="Unknown" Message="Unknown service error"

Expected Behavior

It should be create a Traffic Manager Profile instance on Azure

Actual Behavior

Resource Group created but traffic manager profile throws error.

I am struggling with this from long time can anybody help me out here?

Solution

  • Please use the following script, it works for me.

      resource "azurerm_traffic_manager_profile" "profile" {
      name                   = "trafficmanagerprofile"
      resource_group_name    = "shuioracle"
      traffic_routing_method = "Weighted"
    
      dns_config {
        relative_name = "shuioracle"
        ttl           = 30
      }
    
      monitor_config {
        protocol = "http"
        port     = 80
        path     = "/"
      }
    }
    
    resource "azurerm_public_ip" "pip" {
      name                         = "ip${count.index}"
      location                     = "South Central US"
      resource_group_name          = "shuioracle"
      public_ip_address_allocation = "static"
      domain_name_label            = "shuilinux5${count.index}"
      count                        = "3"
    }
    
    resource "azurerm_traffic_manager_endpoint" "endpoint" {
      name                = "endpoint${count.index}"
      resource_group_name = "shuioracle"
      profile_name        = "${azurerm_traffic_manager_profile.profile.name}"
      target_resource_id  = "${element(azurerm_public_ip.pip.*.id, count.index)}"
      type                = "azureEndpoints"
      weight              = 1
      count               = "3"
    }
    

    In you script , modify public_ip_address_allocation = "dynamic" to static.

    Use static, then your script will success. When you create public IP, if you use dynamic, it will not associate IP address, if you use static, it will associate IP.

    You could check this example and this example.