Skip to content

terraform should destroy and create resources if there is change in settings of aks cluster  #389

@nayaksuraj

Description

@nayaksuraj

Is there an existing issue for this?

  • I have searched the existing issues

Greenfield/Brownfield provisioning

brownfield

Terraform Version

1.4.6

Module Version

7.1.0

AzureRM Provider Version

3.58.0

Affected Resource(s)/Data Source(s)

azurerm_kubernetes_cluster

Terraform Configuration Files

resource "random_id" "prefix" {
  byte_length = 8
}

resource "azurerm_resource_group" "main" {
  count = var.create_resource_group ? 1 : 0

  location = var.location
  name     = coalesce(var.resource_group_name, "${random_id.prefix.hex}-rg")
}

locals {
  resource_group = {
    name     = var.create_resource_group ? azurerm_resource_group.main[0].name : var.resource_group_name
    location = var.location
  }
}

resource "azurerm_virtual_network" "test" {
  address_space       = ["10.52.0.0/16"]
  location            = local.resource_group.location
  name                = "${random_id.prefix.hex}-vn"
  resource_group_name = local.resource_group.name
}

resource "azurerm_subnet" "test" {
  address_prefixes                               = ["10.52.0.0/24"]
  name                                           = "${random_id.prefix.hex}-sn"
  resource_group_name                            = local.resource_group.name
  virtual_network_name                           = azurerm_virtual_network.test.name
  enforce_private_link_endpoint_network_policies = true
}

locals {
  nodes = {
    for i in range(1) : "w${i}" => {
      name           = substr("worker${i}${random_id.prefix.hex}", 0, 8)
      vm_size        = "Standard_D2s_v3"
      node_count     = 1
      vnet_subnet_id = azurerm_subnet.test.id
    }
  }
}

module "aks" {
  source = "../.."

  prefix                        = "prefix-${random_id.prefix.hex}"
  resource_group_name           = local.resource_group.name
  os_disk_size_gb               = 50
  public_network_access_enabled = true
  sku_tier                      = "Standard"
  rbac_aad                      = false
  vnet_subnet_id                = azurerm_subnet.test.id
  node_pools                    = {}
  agents_pool_name = "np"
}

tfvars variables values

variable "create_resource_group" {
  type     = bool
  default  = false
  nullable = false
}

variable "location" {
  default = "westeurope"
}

variable "resource_group_name" {
  type    = string
  default = "common"
}

Debug Output/Panic Output

module.aks.azurerm_kubernetes_cluster.main: Creating...
╷
│ Error: A resource with the ID "/subscriptions/ggjjkkkk-333-44-5555-cfrwwwwww/resourceGroups/core-common/providers/Microsoft.ContainerService/managedClusters/aks-demo-cls" already exists - to be managed via Terraform this resource needs to be imported into the State. Please see the resource documentation for "azurerm_kubernetes_cluster" for more information.
│ 
│   with module.aks.azurerm_kubernetes_cluster.main,
│   on .terraform/modules/aks/main.tf line 17, in resource "azurerm_kubernetes_cluster" "main":
│   17: resource "azurerm_kubernetes_cluster" "main" {
│

Expected Behaviour

It should first delete the cluster and create. Now it's trying to create the cluster.

Actual Behaviour

No response

Steps to Reproduce

  1. First create the cluster using one example available in the repo
  2. try to change any value regarding the cluster. For example, you could change the default node group name and apply. You will see a mentioned error where Terraform will try to create a cluster first instead of destroy and create.

Important Factoids

No response

References

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions