Создать файловое хранилище
Мы рекомендуем создавать ресурсы по порядку. Если вы единовременно создаете все ресурсы, которые описаны в конфигурационном файле, может возникнуть ошибка — Terraform создает ресурсы независимо от порядка, в котором они перечислены в файле.
- Опционально: настройте провайдеры.
- Создайте приватную сеть и подсеть.
- Настройте конфигурацию сети хранилища.
- Создайте файловое хранилище.
- Настройте правила доступа к файловому хранилищу.
Конфигурационные файлы
Пример файла для настройки провайдеров
terraform {
required_providers {
servercore = {
source = "terraform.servercore.com/servercore/servercore"
version = "~> 6.0"
}
openstack = {
source = "terraform-provider-openstack/openstack"
version = "2.1.0"
}
}
}
provider "servercore" {
domain_name = "123456"
username = "user"
password = "password"
auth_region = "ru-9"
auth_url = "https://cloud.api.selcloud.ru/identity/v3/"
}
resource "servercore_project_v2" "project_1" {
name = "project"
}
resource "servercore_iam_serviceuser_v1" "serviceuser_1" {
name = "username"
password = "password"
role {
role_name = "member"
scope = "project"
project_id = servercore_project_v2.project_1.id
}
}
provider "openstack" {
auth_url = "https://cloud.api.selcloud.ru/identity/v3"
domain_name = "123456"
tenant_id = servercore_project_v2.project_1.id
user_name = servercore_iam_serviceuser_v1.serviceuser_1.name
password = servercore_iam_serviceuser_v1.serviceuser_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
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
}
1. Опционально: настроить провайдеры
Если вы настроили провайдеры Servercore и OpenStack, пропустите этот шаг.
-
Убедитесь, что в панели управления вы создали сервисного пользователя с ролями Администратор аккаунта и Администратор пользователей.
-
Создайте директорию для хранения конфигурационных файлов и отдельный файл с расширением
.tf
для настройки провайдеров. -
В файл для настройки провайдеров добавьте провайдеры Servercore и OpenStack:
terraform {
required_providers {
servercore = {
source = "terraform.servercore.com/servercore/servercore"
version = "~> 6.0"
}
openstack = {
source = "terraform-provider-openstack/openstack"
version = "2.1.0"
}
}
}Здесь
version
— версии провайдеров. Актуальную версию про вайдера Openstack можно посмотреть в Terraform Registry и GitHub.Подробнее о продуктах, услугах и сервисах, которыми можно управлять с помощью провайдеров, в инструкции Провайдеры Servercore и OpenStack.
-
Инициализируйте провайдер Servercore:
provider "servercore" {
domain_name = "123456"
username = "user"
password = "password"
auth_region = "ru-9"
auth_url = "https://cloud.api.selcloud.ru/identity/v3/"
}