@@ -21,3 +21,43 @@ resource "azurerm_resource_group" "rg" {
21
21
location = var. location
22
22
tags = merge ({ " Name" = format (" %s" , var. resource_group_name ) }, var. tags , )
23
23
}
24
+
25
+ resource "azurerm_redis_cache" "main" {
26
+ for_each = var. redis_server_settings
27
+ name = format (" %s" , each. key )
28
+ resource_group_name = local. resource_group_name
29
+ location = local. location
30
+ capacity = each. value [" capacity" ]
31
+ family = lookup (var. redis_family , each. value . sku_name )
32
+ sku_name = each. value [" sku_name" ]
33
+ enable_non_ssl_port = each. value [" enable_non_ssl_port" ]
34
+ minimum_tls_version = each. value [" minimum_tls_version" ]
35
+ private_static_ip_address = each. value [" private_static_ip_address" ]
36
+ public_network_access_enabled = each. value [" public_network_access_enabled" ]
37
+ replicas_per_master = each. value [" sku_name" ] == " Premium" && { for shard_count , v in var . redis_server_settings : shard_count => v } == null ? each. value [" replicas_per_master" ] : null
38
+ shard_count = { for sku_name , v in var . redis_server_settings : sku_name => v } == " Premium" && { for replicas_per_master , v in var . redis_server_settings : replicas_per_master => v } == null ? each. value [" shard_count" ] : null
39
+ subnet_id = each. value [" sku_name" ] == " Premium" ? var. subnet_id : null
40
+ zones = each. value [" zones" ]
41
+ tags = merge ({ " Name" = format (" %s" , each. key ) }, var. tags , )
42
+
43
+ redis_configuration {
44
+ enable_authentication = lookup (var. redis_configuration , " enable_authentication" , true )
45
+ maxfragmentationmemory_reserved = lookup (var. redis_configuration , " maxfragmentationmemory_reserved" , null )
46
+ maxmemory_delta = lookup (var. redis_configuration , " maxmemory_delta" )
47
+ maxmemory_policy = lookup (var. redis_configuration , " maxmemory_policy" )
48
+ maxmemory_reserved = lookup (var. redis_configuration , " maxmemory_reserved" )
49
+ notify_keyspace_events = lookup (var. redis_configuration , " notify_keyspace_events" )
50
+ rdb_backup_enabled = lookup (var. redis_configuration , " rdb_backup_enabled" , false )
51
+ rdb_backup_frequency = { for rdb_backup_enabled , v in var . redis_configuration : rdb_backup_enabled => v } == true ? lookup (var. redis_configuration , " rdb_backup_frequency" ) : null
52
+ rdb_backup_max_snapshot_count = { for rdb_backup_enabled , v in var . redis_configuration : rdb_backup_enabled => v } == true ? lookup (var. redis_configuration , " rdb_backup_max_snapshot_count" ) : null
53
+ rdb_storage_connection_string = { for rdb_backup_enabled , v in var . redis_configuration : rdb_backup_enabled => v } == true ? lookup (var. redis_configuration , " rdb_storage_connection_string" ) : null
54
+ }
55
+
56
+ lifecycle {
57
+ # A bug in the Redis API where the original storage connection string isn't being returned
58
+ ignore_changes = [redis_configuration . 0 . rdb_storage_connection_string ]
59
+ }
60
+
61
+ }
62
+
63
+
0 commit comments