Skip to content

Latest commit

 

History

History
180 lines (147 loc) · 11.4 KB

README.md

File metadata and controls

180 lines (147 loc) · 11.4 KB

Azure Redis Cache

Changelog Notice Apache V2 License TF Registry

This Terraform module creates a Redis Cache instance along with firewall rules. No logging is available from this resource.

The default configuration is an highly available cluster of 3 shards and data persistence enabled on the Premium tier.

Global versioning rule for Claranet Azure modules

Module version Terraform version AzureRM version
>= 7.x.x 1.3.x >= 3.0
>= 6.x.x 1.x >= 3.0
>= 5.x.x 0.15.x >= 2.0
>= 4.x.x 0.13.x / 0.14.x >= 2.0
>= 3.x.x 0.12.x >= 2.0
>= 2.x.x 0.12.x < 2.0
< 2.x.x 0.11.x < 2.0

Contributing

If you want to contribute to this repository, feel free to use our pre-commit git hook configuration which will help you automatically update and format some files for you by enforcing our Terraform code module best-practices.

More details are available in the CONTRIBUTING.md file.

Usage

This module is optimized to work with the Claranet terraform-wrapper tool which set some terraform variables in the environment needed by this module. More details about variables set by the terraform-wrapper available in the documentation.

module "azure_region" {
  source  = "claranet/regions/azurerm"
  version = "x.x.x"

  azure_region = var.azure_region
}

module "rg" {
  source  = "claranet/rg/azurerm"
  version = "x.x.x"

  location    = module.azure_region.location
  client_name = var.client_name
  environment = var.environment
  stack       = var.stack
}

module "logs" {
  source  = "claranet/run/azurerm//modules/logs"
  version = "x.x.x"

  client_name         = var.client_name
  environment         = var.environment
  stack               = var.stack
  location            = module.azure_region.location
  location_short      = module.azure_region.location_short
  resource_group_name = module.rg.resource_group_name
}

module "redis" {
  source  = "claranet/redis/azurerm"
  version = "x.x.x"

  client_name    = var.client_name
  environment    = var.environment
  location       = module.azure_region.location
  location_short = module.azure_region.location_short
  stack          = var.stack

  resource_group_name = module.rg.resource_group_name

  allowed_cidrs = ["1.2.3.4/32", "5.6.7.8/16"]

  logs_destinations_ids = [
    module.logs.logs_storage_account_id,
    module.logs.log_analytics_workspace_id
  ]

  extra_tags = {
    foo = "bar"
  }
}

Providers

Name Version
azurecaf ~> 1.2, >= 1.2.22
azurerm ~> 3.83

Modules

Name Source Version
diagnostics claranet/diagnostic-settings/azurerm ~> 6.5.0

Resources

Name Type
azurerm_redis_cache.redis resource
azurerm_redis_firewall_rule.redis_fw_rule resource
azurerm_storage_account.redis_storage resource
azurecaf_name.data_storage data source
azurecaf_name.redis data source
azurecaf_name.redis_fw_rule data source

Inputs

Name Description Type Default Required
allow_non_ssl_connections Activate non SSL port (6779) for Redis connection bool false no
allowed_cidrs List of allowed CIDR ranges to access the Azure Redis Cache resource. any [] no
capacity Redis size: (Basic/Standard: 1,2,3,4,5,6) (Premium: 1,2,3,4) https://docs.microsoft.com/fr-fr/azure/redis-cache/cache-how-to-premium-clustering number 2 no
client_name Name of the client string n/a yes
cluster_shard_count Number of cluster shards desired number 3 no
custom_diagnostic_settings_name Custom name of the diagnostics settings, name will be 'default' if not set. string "default" no
custom_name Custom name of Redis Server string "" no
data_persistence_enabled "true" to enable data persistence. bool true no
data_persistence_frequency_in_minutes Data persistence snapshot frequency in minutes. number 60 no
data_persistence_max_snapshot_count Max number of data persistence snapshots. number null no
data_persistence_storage_account_replication Replication type for the Storage Account used for data persistence. string "LRS" no
data_persistence_storage_account_tier Replication type for the Storage Account used for data persistence. string "Premium" no
data_persistence_storage_custom_name Custom name for the Storage Account used for Redis data persistence. string "" no
default_tags_enabled Option to enable or disable default tags. bool true no
environment Name of the application's environnement string n/a yes
extra_tags Additional tags to associate. map(string) {} no
location Azure region in which instance will be hosted string n/a yes
location_short Azure region trigram string n/a yes
logs_categories Log categories to send to destinations. list(string) null no
logs_destinations_ids List of destination resources IDs for logs diagnostic destination.
Can be Storage Account, Log Analytics Workspace and Event Hub. No more than one of each can be set.
If you want to specify an Azure EventHub to send logs and metrics to, you need to provide a formated string with both the EventHub Namespace authorization send ID and the EventHub name (name of the queue to use in the Namespace) separated by the `
` character. list(string) n/a
logs_metrics_categories Metrics categories to send to destinations. list(string) null no
minimum_tls_version The minimum TLS version string "1.2" no
name_prefix Optional prefix for the generated name string "" no
name_suffix Optional suffix for the generated name string "" no
patch_schedules A list of Patch Schedule, Azure Cache for Redis patch schedule is used to install important software updates in specified time window.
list(object({
day_of_week = string
start_hour_utc = optional(string)
maintenance_window = optional(string)
}))
[] no
private_static_ip_address The Static IP Address to assign to the Redis Cache when hosted inside the Virtual Network. Changing this forces a new resource to be created. string null no
public_network_access_enabled Whether the Azure Redis Cache is available from public network. bool false no
redis_additional_configuration Additional configuration for the Redis instance. Some of the keys are set automatically. See https://www.terraform.io/docs/providers/azurerm/r/redis_cache.html#redis_configuration for full reference.
object({
aof_backup_enabled = optional(bool)
aof_storage_connection_string_0 = optional(string)
aof_storage_connection_string_1 = optional(string)
enable_authentication = optional(bool)
active_directory_authentication_enabled = optional(bool)
maxmemory_reserved = optional(number)
maxmemory_delta = optional(number)
maxmemory_policy = optional(string)
maxfragmentationmemory_reserved = optional(number)
rdb_backup_enabled = optional(bool)
rdb_backup_frequency = optional(number)
rdb_backup_max_snapshot_count = optional(number)
rdb_storage_connection_string = optional(string)
notify_keyspace_events = optional(string)
})
{} no
redis_version Redis version to deploy. Allowed value is only 6 for new instances since v4 deprecation. number 6 no
resource_group_name Name of the application ressource group, herited from infra module string n/a yes
sku_name Redis Cache Sku name. Can be Basic, Standard or Premium string "Premium" no
stack Name of the application stack string n/a yes
subnet_id The ID of the Subnet within which the Redis Cache should be deployed. Changing this forces a new resource to be created. string null no
use_caf_naming Use the Azure CAF naming provider to generate default resource name. custom_name override this if set. Legacy default name is used if this is set to false. bool true no
zones A list of a one or more Availability Zones, where the Redis Cache should be allocated. list(number) null no

Outputs

Name Description
redis_capacity Redis capacity
redis_configuration Redis configuration
redis_family Redis family
redis_hostname Redis instance hostname
redis_id Redis instance id
redis_name Redis instance name
redis_port Redis instance port
redis_primary_access_key Redis primary access key
redis_primary_connection_string The primary connection string of the Redis Instance.
redis_private_static_ip_address Redis private static IP address
redis_secondary_access_key Redis secondary access key
redis_secondary_connection_string The secondary connection string of the Redis Instance.
redis_sku_name Redis SKU name
redis_ssl_port Redis instance SSL port
terraform_module Information about this Terraform module

Related documentation

Microsoft Azure service documentation: docs.microsoft.com/en-us/azure/azure-cache-for-redis/