---
title: "Создать файловое хранилище с типом HDD Базовое через Terraform"
sidebar_label: "Создать файловое хранилище"
description: "Как создать файловое хранилище с типом HDD Базовое"
sidebar_position: 1
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import ConfigureProviders from '@site/terraform/_partials/common/configure-providers.mdx'
import ConfigureProvidersConfig from '@site/terraform/_partials/common/configure-providers-config.mdx'
import CreateNetworks from '@site/terraform/_partials/cloud-networks/create-networks.mdx'
import CreateResourcesAlert from '@site/terraform/_partials/common/create-resources-alert.mdx'

# Создать файловое хранилище с типом HDD Базовое через Terraform

<CreateResourcesAlert />

<br />

1. Опционально: [настройте провайдеры](#configure-providers).
2. [Создайте приватную сеть и подсеть](#create-networks).
3. [Настройте конфигурацию сети хранилища](#configure-storage-network).
4. [Создайте файловое хранилище](#create-storage).
5. [Настройте правила доступа к файловому хранилищу](#configure-access).

## Конфигурационные файлы \{#config}

<details>
  <summary>Пример файла для настройки провайдеров</summary>

  <ConfigureProvidersConfig />
</details>

<details>
  <summary>Пример файла для создания файлового хранилища</summary>

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

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

  resource "openstack_sharedfilesystem_sharenetwork_v2" "sharenetwork_1" {
    name              = "share-network"
    neutron_net_id    = openstack_networking_network_v2.network_1.id
    neutron_subnet_id = openstack_networking_subnet_v2.subnet_1.id
  }

  resource "openstack_sharedfilesystem_share_v2" "share_1" {
    name             = "nfs-storage"
    share_type       = "basic.ru-9a"
    share_proto      = "NFS"
    size             = 50
    share_network_id = openstack_sharedfilesystem_sharenetwork_v2.sharenetwork_1.id
    metadata         = {"ip": "192.168.199.3"}
  }

  resource "openstack_sharedfilesystem_share_access_v2" "shareaccess_1" {
    access_level = "rw"
    access_to    = "0.0.0.0/0"
    access_type  = "ip"
    share_id     = openstack_sharedfilesystem_share_v2.share_1.id
  }
  ```
</details>

## 1. Опционально: настроить провайдеры \{#configure-providers}

Если вы [настроили провайдеры](/terraform/configure-terraform-environment/#configure-providers) Selectel и OpenStack, пропустите этот шаг.

<ConfigureProviders />

## 2. Создать приватную сеть и подсеть \{#create-networks}

<CreateNetworks />

## 3. Настроить конфигурацию сети хранилища \{#configure-storage-network}

```hcl
resource "openstack_sharedfilesystem_sharenetwork_v2" "sharenetwork_1" {
  name              = "share-network"
  neutron_net_id    = openstack_networking_network_v2.network_1.id
  neutron_subnet_id = openstack_networking_subnet_v2.subnet_1.id
}
```

Посмотрите подробное описание ресурса [openstack\_sharedfilesystem\_sharenetwork\_v2](/terraform/openstack-provider-reference/shared-filesystem-manila/resources/openstack_sharedfilesystem_sharenetwork_v2/).

## 4. Создать файловое хранилище \{#create-storage}

```hcl
resource "openstack_sharedfilesystem_share_v2" "share_1" {
  name             = "nfs-storage"
  share_type       = "basic.ru-9a"
  share_proto      = "NFS"
  size             = 50
  share_network_id = openstack_sharedfilesystem_sharenetwork_v2.sharenetwork_1.id
  metadata         = {"ip": "192.168.199.3"}
}
```

Здесь:

* `share_type` — [тип файлового хранилища](/file-storage/about/about-file-storage/#file-storage-types) и [сегмент пула](/infrastructure/locations/#pool) в формате `<type>.<pool_segment>`, например `basic.ru-9a`:
  * `<type>`:
    * `basic` — тип HDD Базовое;
    * `universal` — тип SSD Универсальное;
    * `fast` — тип SSD Быстрое;
  * `<pool_segment>` — сегмент пула, в котором будет создано файловое хранилище, например `ru-9a`. Список доступных сегментов пула можно посмотреть в инструкции [Матрицы доступности](/infrastructure/availability-matrix/);
* `share_proto` — протокол файлового хранилища: `NFS` или `CIFS`;
* `size` — размер файлового хранилища в ГБ, например `50`. Ограничения — от 50 ГБ до 50 ТБ;
* опционально: `metadata = {"ip": "<ip_address>"}` — приватный IP-адрес файлового хранилища, например `192.168.0.3`. После создания хранилища IP-адрес нельзя будет изменить.

Посмотрите подробное описание ресурса [openstack\_sharedfilesystem\_share\_v2](/terraform/openstack-provider-reference/shared-filesystem-manila/resources/openstack_sharedfilesystem_share_v2/).

## 5. Настроить правила доступа к файловому хранилищу \{#configure-access}

```hcl
resource "openstack_sharedfilesystem_share_access_v2" "shareaccess_1" {
  access_level = "rw"
  access_to    = "0.0.0.0/0"
  access_type  = "ip"
  share_id     = openstack_sharedfilesystem_share_v2.share_1.id
}
```

Здесь:

* `access_level` — [уровень доступа](/file-storage/manage/configure-access-by-ips/#access-levels) к хранилищу, зависит от протокола:
  * для CIFS SMBv3 — `rw` (чтение и запись);
  * для NFSv4 — `ro` (только чтение) или `rw` (чтение и запись);
* `access_to` — IP-адрес или CIDR приватной подсети, для которых будет открыт доступ. Например:
  * `192.168.199.10` — доступ для IP-адреса;
  * `192.168.199.0/24` — доступ для диапазона приватной подсети;
  * `0.0.0.0/0` — доступ для всех адресов приватной подсети. Для настройки этого доступа можно добавить в ресурс [openstack\_sharedfilesystem\_share\_v2](#create-storage) строку `metadata = {"access_list_allow_all": "true"}`.

Посмотрите подробное описание ресурса [openstack\_sharedfilesystem\_share\_access\_v2](/terraform/openstack-provider-reference/shared-filesystem-manila/resources/openstack_sharedfilesystem_share_access_v2/).

<Formbricks />
