Создать кластер MySQL semi-sync
Создать кластер MySQL semi-sync
Мы рекомендуем создавать ресурсы по порядку. Если вы единовременно создаете все ресурсы, которые описаны в конфигурационном файле, может возникнуть ошибка — Terraform создает ресурсы независимо от порядка, в котором они перечислены в файле.
- Опционально: настройте провайдеры.
- Создайте приватную сеть и подсеть.
- Создайте кластер.
- Создайте пользователя.
- Создайте базу данных.
- Выдайте пользователю доступ к базе данных.
Конфигурационные файлы
Пример файла для настройки провайдеров
terraform {
required_providers {
selectel = {
source = "selectel/selectel"
version = "5.4.0"
}
openstack = {
source = "terraform-provider-openstack/openstack"
version = "2.1.0"
}
}
}
provider "selectel" {
domain_name = "123456"
username = "user"
password = "password"
}
resource "selectel_vpc_project_v2" "project_1" {
name = "project"
}
resource "selectel_iam_serviceuser_v1" "serviceuser_1" {
name = "username"
password = "password"
role {
role_name = "member"
scope = "project"
project_id = selectel_vpc_project_v2.project_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_iam_serviceuser_v1.serviceuser_1.name
password = selectel_iam_serviceuser_v1.serviceuser_1.password
region = "ru-9"
}
Пример файла для создания кластера MySQL semi-sync фиксированной конфигурации
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 = "mysql_native"
version = "8"
}
}
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 = 4
ram = 16384
disk = 128
}
}
resource "selectel_dbaas_mysql_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 = 3
flavor_id = data.selectel_dbaas_flavor_v1.flavor_1.flavors[0].id
}
resource "selectel_dbaas_user_v1" "user_1" {
project_id = selectel_vpc_project_v2.project_1.id
region = "ru-9"
datastore_id = selectel_dbaas_mysql_datastore_v1.datastore_1.id
name = "user"
password = "secret"
}
resource "selectel_dbaas_mysql_database_v1" "database_1" {
project_id = selectel_vpc_project_v2.project_1.id
region = "ru-9"
datastore_id = selectel_dbaas_mysql_datastore_v1.datastore_1.id
name = "database_1"
}
resource "selectel_dbaas_grant_v1" "grant_1" {
project_id = selectel_vpc_project_v2.project_1.id
region = "ru-9"
datastore_id = selectel_dbaas_mysql_datastore_v1.datastore_1.id
database_id = selectel_dbaas_mysql_database_v1.database_1.id
user_id = selectel_dbaas_user_v1.user_1.id
}
Пример файла для создания кластера MySQL semi-sync произвольной конфигурации
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 = "mysql_native"
version = "8"
}
}
resource "selectel_dbaas_mysql_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 = 3
flavor {
vcpus = 1
ram = 4096
disk = 32
}
}
resource "selectel_dbaas_user_v1" "user_1" {
project_id = selectel_vpc_project_v2.project_1.id
region = "ru-9"
datastore_id = selectel_dbaas_mysql_datastore_v1.datastore_1.id
name = "user"
password = "secret"
}
resource "selectel_dbaas_mysql_database_v1" "database_1" {
project_id = selectel_vpc_project_v2.project_1.id
region = "ru-9"
datastore_id = selectel_dbaas_mysql_datastore_v1.datastore_1.id
name = "database_1"
}
resource "selectel_dbaas_grant_v1" "grant_1" {
project_id = selectel_vpc_project_v2.project_1.id
region = "ru-9"
datastore_id = selectel_dbaas_mysql_datastore_v1.datastore_1.id
database_id = selectel_dbaas_mysql_database_v1.database_1.id
user_id = selectel_dbaas_user_v1.user_1.id
}