Yulia
Yulia

Reputation: 31

How to implement in terraform azure for redis with private endpoint?

I need help with terraform. I need deploy azure for redis cache using private endpoint. My code:

 resource "azurerm_redis_cache" "redis_cache_example" {
  name                          = "redis-cache-ex"
  location                      = var.location
  resource_group_name           = var.resource_group_name
  capacity                      = var.redis_plan_capacity
  family                        = var.redis_plan_family
  sku_name                      = var.redis_plan_sku_name
  enable_non_ssl_port           = false
  minimum_tls_version           = "1.2"
  public_network_access_enabled = false
}

resource "azurerm_private_dns_zone" "private_dns_zone_example" {
  name                = "example.redis-ex.azure.com"
  resource_group_name = var.resource_group_name
}

resource "azurerm_private_dns_zone_virtual_network_link" "virtual_network_link_example" {
  name                  = "exampleVnet.com"
  private_dns_zone_name = azurerm_private_dns_zone.private_dns_zone_example.name
  virtual_network_id    = var.vnet_id
  resource_group_name   = var.resource_group_name
}

resource "azurerm_private_endpoint" "redis_pe_example" {
  name                = "redis-private-endpoint-ex"
  location            = var.location
  resource_group_name = var.resource_group_name
  subnet_id           = var.subnet_id

   private_dns_zone_group {
    name                 = "privatednsrediszonegroup"
    private_dns_zone_ids = [azurerm_private_dns_zone.private_dns_zone_example.id]
  }

  private_service_connection {
    name                           = "peconnection-example"
    private_connection_resource_id = azurerm_redis_cache.redis_cache_example.id
    is_manual_connection           = false
    subresource_names              = ["redisCache"]
  }
}

After deploying my redis doesn't ping within vnet. What's wrong with my terraform?

Upvotes: 1

Views: 3989

Answers (1)

Tom Lime
Tom Lime

Reputation: 1204

You can also add an azurerm_private_endpoint resource and link it to azurerm_redis_cache (or i guess other resource as well).


resource "azurerm_redis_cache" "default" {
...
}

resource "azurerm_private_endpoint" "default" {
  count               = 1
  name                = format("%s-redis%d", var.env, count.index + 1)
  resource_group_name = data.azurerm_resource_group.default.name
  location            = data.azurerm_resource_group.default.location
  subnet_id           = data.azurerm_subnet.default.id

  private_service_connection {
    name                           = format("%s-redis%d-pe", var.env, count.index + 1)
    private_connection_resource_id = azurerm_redis_cache.default[count.index].id
    is_manual_connection           = false
    subresource_names              = ["redisCache"]
  }
}

You can find list of other private resources on AZ docs.

Upvotes: 3

Related Questions