Перейти к основному содержимому
Создать файловое хранилище
Последнее изменение:

Создать файловое хранилище

  1. Опционально: настройте провайдеры.
  2. Создайте приватную сеть и подсеть.
  3. Настройте конфигурацию сети хранилища.
  4. Создайте файловое хранилище.
  5. Настройте правила доступа к файловому хранилищу.
  6. Создайте ресурсы.
Конфигурационный файл
terraform {
required_providers {
selectel = {
source = "selectel/selectel"
version = "4.0.1"
}
openstack = {
source = "terraform-provider-openstack/openstack"
version = "1.53.0"
}
}
}

provider "selectel" {
domain_name = "123456"
username = "user"
password = "password"
}

resource "selectel_vpc_project_v2" "project_1" {
name = "project"
}

resource "selectel_vpc_user_v2" "user_1" {
name = "username"
password = "password"
}

resource "selectel_vpc_role_v2" "role_1" {
project_id = selectel_vpc_project_v2.project_1.id
user_id = selectel_vpc_user_v2.user_1.id
}

provider "openstack" {
auth_url = "https://cloud.api.selcloud.ru/identity/v3"
domain_name = "123456"
tenant_id = selectel_vpc_project_v2.project_1.id
user_name = selectel_vpc_user_v2.user_1.name
password = selectel_vpc_user_v2.user_1.password
region = "ru-9"
}

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
}

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
}

1. Опционально: настроить провайдеры

Если вы настроили провайдеры Selectel и OpenStack, пропустите этот шаг.

  1. Создайте директорию для хранения конфигурационных файлов и файл с расширением .tf.

  2. Добавьте провайдеры Selectel и OpenStack:

    terraform {
    required_providers {
    selectel = {
    source = "selectel/selectel"
    version = "4.0.1"
    }
    openstack = {
    source = "terraform-provider-openstack/openstack"
    version = "1.53.0"
    }
    }
    }

    Здесь version — версии провайдеров. Актуальную версию можно посмотреть в документации Selectel (в Terraform Registry и GitHub) и OpenStack (в Terraform Registry и GitHub).

    Подробнее о продуктах, услугах и сервисах, которыми можно управлять с помощью провайдеров, в инструкции Провайдеры Selectel и OpenStack.

  3. Инициализируйте провайдер Selectel:

    provider "selectel" {
    domain_name = "123456"
    username = "user"
    password = "password"
    }

    Здесь:

    • domain_name — номер аккаунта Selectel. Можно посмотреть в панели управления в правом верхнем углу;
    • username — имя сервисного пользователя с ролями Администратор аккаунта и Администратор пользователей. Можно посмотреть в панели управления: откройте меню (номер аккаунта) в правом верхнем углу → выберите пункт Профиль и настройки → раздел Управление пользователями → вкладка Сервисные пользователи (раздел доступен только Владельцу аккаунта и Администратору пользователей);
    • password — пароль сервисного пользователя. Можно посмотреть при создании пользователя или изменить на новый.
  4. Создайте проект облачной платформы:

    resource "selectel_vpc_project_v2" "project_1" {
    name = "project"
    }

    Посмотрите подробное описание ресурса selectel_vpc_project_v2.

  5. Создать сервисного пользователя для доступа к проекту и назначьте ему роль Администратор проекта:

    resource "selectel_vpc_user_v2" "user_1" {
    name = "username"
    password = "password"
    }

    resource "selectel_vpc_role_v2" "role_1" {
    project_id = selectel_vpc_project_v2.project_1.id
    user_id = selectel_vpc_user_v2.user_1.id
    }

    Посмотрите подробное описание ресурсов selectel_vpc_user_v2 и selectel_vpc_role_v2.

  6. Инициализируйте провайдер OpenStack:

    provider "openstack" {
    auth_url = "https://cloud.api.selcloud.ru/identity/v3"
    domain_name = "123456"
    tenant_id = selectel_vpc_project_v2.project_1.id
    user_name = selectel_vpc_user_v2.user_1.name
    password = selectel_vpc_user_v2.user_1.password
    region = "ru-9"
    }

    Здесь:

    • domain_name — номер аккаунта Selectel. Можно посмотреть в панели управления в правом верхнем углу;
    • regionпул, например ru-9. Все ресурсы будут создаваться в этом пуле. Список доступных пулов можно посмотреть в инструкции Матрицы доступности.
  7. Опционально: если вы хотите использовать зеркало, создайте отдельный конфигурационный файл Terraform CLI и добавьте в него блок:

    provider_installation {
    network_mirror {
    url = "https://mirror.selectel.ru/3rd-party/terraform-registry/"
    include = ["registry.terraform.io/*/*"]
    }
    direct {
    exclude = ["registry.terraform.io/*/*"]
    }
    }

    Подробнее о настройках зеркал в инструкции CLI Configuration File документации HashiCorp.

2. Создать приватную сеть и подсеть

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"
}

Здесь cidr — CIDR приватной подсети, например 192.168.199.0/24

Посмотрите подробное описание ресурсов:

3. Настроить конфигурацию сети хранилища

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.

4. Создать файловое хранилище

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
}

Здесь:

  • share_typeтип файлового хранилища в формате <type>.<pool_segment>, например basic.ru-9a:
    • <type>basic, universal или fast;
    • <pool_segment> — сегмент пула, в котором будет создано сетевое файловое хранилище, например, ru-9a;
  • share_proto — протокол файлового хранилища: NFS или CIFS;
  • size — размер файлового хранилища в ГБ, например 50. Ограничения — от 50 ГБ до 50 ТБ.

Посмотрите подробное описание ресурса openstack_sharedfilesystem_share_v2.

5. Настроить правила доступа к файловому хранилищу

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 — уровень доступа к хранилищу: rw или 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 строку metadata = {"access_list_allow_all": "true"}

Посмотрите подробное описание ресурса openstack_sharedfilesystem_share_access_v2.

6. Создать ресурсы

  1. Убедитесь, что вы находитесь в директории с конфигурационным файлом.

  2. Инициализируйте конфигурацию Terraform в директории:

    terraform init
  3. Проверьте, что конфигурационный файл составлен без ошибок:

    terraform validate
  4. Отформатируйте конфигурационный файл:

    terraform fmt
  5. Проверьте, какие ресурсы будут созданы:

    terraform plan
  6. Примените изменения и создайте ресурсы:

    terraform apply
  7. Подтвердите создание — введите yes и нажмите Enter. Созданные ресурсы отобразятся в панели управления.

  8. Если для создания ресурсов оказалось недостаточно квот, увеличьте квоты.