---
title: "Create a fixed configuration Redis cluster via Terraform"
sidebar_label: "Create a fixed configuration Redis cluster"
description: "How to create a fixed configuration Redis cluster"
sidebar_position: 5
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import ConfigureProviders from '@site/i18n/en/docusaurus-plugin-content-docs-terraform/current/_partials/common/configure-providers.mdx'
import ConfigureProvidersConfig from '@site/i18n/en/docusaurus-plugin-content-docs-terraform/current/_partials/common/configure-providers-config.mdx'
import CreateRouter from '@site/i18n/en/docusaurus-plugin-content-docs-terraform/current/_partials/cloud-networks/create-router.mdx'
import CreateNetworks from '@site/i18n/en/docusaurus-plugin-content-docs-terraform/current/_partials/cloud-networks/create-networks.mdx'
import CreateResourcesAlert from '@site/i18n/en/docusaurus-plugin-content-docs-terraform/current/_partials/common/create-resources-alert.mdx'

# Create a fixed configuration Redis cluster via Terraform

<CreateResourcesAlert />

<br />

1. Optional: [configure providers](#configure-providers).
2. [Create a private network and subnet](#create-networks).
3. [Create a cluster](#create-cluster).

## Configuration files \{#config}

<details>
  <summary>Example file for configuring providers</summary>

  <ConfigureProvidersConfig />
</details>

<details>
  <summary>Example file for creating a Redis cluster with a fixed configuration</summary>

  ```hcl
  resource "openstack_networking_network_v2" "network_1" {
    name           = "private-network"
    admin_state_up = "true"
  }

  resource "openstack_networking_subnet_v2" "subnet_1" {
    network_id = openstack_networking_network_v2.network_1.id
    cidr       = "192.168.199.0/24"
  }

  data "selectel_dbaas_datastore_type_v1" "datastore_type_1" {
    project_id = selectel_vpc_project_v2.project_1.id
    region     = "ru-9"
    filter {
      engine  = "redis"
      version = "6"
    }
  }

  data "selectel_dbaas_flavor_v1" "flavor_1" {
    project_id = selectel_vpc_project_v2.project_1.id
    region     = "ru-9"
    filter {
      datastore_type_id = data.selectel_dbaas_datastore_type_v1.datastore_type_1.datastore_types[0].id
      fl_size           = "standard"
      vcpus             = 2
      ram               = 6144
      disk              = 50
    }
  }

    resource "selectel_dbaas_redis_datastore_v1" "datastore_1" {
    name           = "datastore-1"
    project_id     = selectel_vpc_project_v2.project_1.id
    region         = "ru-9"
    type_id        = data.selectel_dbaas_datastore_type_v1.datastore_type_1.datastore_types[0].id
    subnet_id      = openstack_networking_subnet_v2.subnet_1.id
    node_count     = 2
    flavor_id      = data.selectel_dbaas_flavor_v1.flavor_1.flavors[0].id
    redis_password = "secret"
  }
  ```
</details>

## 1. Optional: configure providers \{#configure-providers}

If you have [configured the Selectel and OpenStack providers](/terraform/configure-terraform-environment/#configure-providers), skip this step.

<ConfigureProviders />

## 2. Create a private network and subnet \{#create-networks}

<CreateNetworks />

## 3. Create a fixed configuration cluster \{#create-cluster}

```hcl
data "selectel_dbaas_datastore_type_v1" "datastore_type_1" {
  project_id = selectel_vpc_project_v2.project_1.id
  region     = "ru-9"
  filter {
    engine  = "redis"
    version = "6"
  }
}

data "selectel_dbaas_flavor_v1" "flavor_1" {
  project_id = selectel_vpc_project_v2.project_1.id
  region     = "ru-9"
  filter {
    datastore_type_id = data.selectel_dbaas_datastore_type_v1.datastore_type_1.datastore_types[0].id
    fl_size           = "standard"
    vcpus             = 2
    ram               = 6144
    disk              = 50
  }
}

resource "selectel_dbaas_redis_datastore_v1" "datastore_1" {
  name           = "datastore-1"
  project_id     = selectel_vpc_project_v2.project_1.id
  region         = "ru-9"
  type_id        = data.selectel_dbaas_datastore_type_v1.datastore_type_1.datastore_types[0].id
  subnet_id      = openstack_networking_subnet_v2.subnet_1.id
  node_count     = 2
  flavor_id      = data.selectel_dbaas_flavor_v1.flavor_1.flavors[0].id
  redis_password = "secret"
}
```

Where:

* `region` — pool, for example `ru-9`. The list of available pools can be found in the instructions [Product availability by location](/infrastructure/product-availability-by-location/#managed-databases);
* `filter` — a filter for managed database types:
  * `engine` — a managed database type;
  * `version` — managed database version. The list of available versions can be viewed in the [Versions and configurations](/managed-databases/redis/configurations/) guide;
* `filter` — filter for fixed cluster configurations. The list of available configurations can be viewed in the [Versions and configurations](/managed-databases/redis/configurations/) guide;
  * `fl_size` — [fixed configuration tier](/managed-databases/redis/configurations/). Available values are `standard` and `high_freq`;
  * `vcpus` — number of vCPUs;
  * `ram` — amount of RAM in MB;
  * `disk` — disk size in GB;
* `nodes_count` — number of nodes. The maximum number of nodes is 3;
* `redis_password` — database password. The password length is between 32 and 64 characters, including uppercase letters, digits, and special characters.

See a detailed description of data sources and resources:

* [selectel\_dbaas\_datastore\_type\_v1](/terraform/selectel-provider-reference/data-sources/dbaas_datastore_type_v1/);
* [selectel\_dbaas\_flavor\_v1](/terraform/selectel-provider-reference/data-sources/dbaas_flavor_v1/);
* [selectel\_dbaas\_redis\_datastore\_v1](/terraform/selectel-provider-reference/resources/dbaas_redis_datastore_v1/).

<Formbricks />
