×

8.4. Пример файла конфигурации

 # Указываем, что требуется провайдер oblakoteka из собственного реестра
terraform {
  required_providers {
    oblakoteka = {
      source = "tf.oblakoteka.ru/oblakoteka/oblakoteka"
    }
  }
}
 
# Конфигурация провайдера oblakoteka: авторизация через ключ
provider "oblakoteka" {
  key_file = "oblakoteka_key.json"
}
 
 
# Заказ внешнего IP-адреса #1 в указанном регионе и подсети
resource "oblakoteka_kvm_extip" "ip1" {
  region = var.region_oblakoteka_ru_msk
#  subnet = "37.230.153.0/24"
  in_test = true
}
 
# Заказ внешнего IP-адреса #2 в той же подсети
resource "oblakoteka_kvm_extip" "ip2" {
  region = var.region_oblakoteka_ru_msk
#  subnet = "37.230.153.0/24"
  in_test = true
}
 
# Создание виртуальной сети vnet1 с NAT через внешний IP ip1
resource "oblakoteka_kvm_vnet" "vnet1" {
   region = var.region_oblakoteka_ru_msk
   name = "tf_vnet1"
   subnet = {
      subnet_cidr = "192.168.10.0/24" # внутренняя подсеть
      dns1 = "8.8.8.8"
      dns2 = "1.1.1.1"
   }
 
   outbound_nat_ip_address = {
     id = oblakoteka_kvm_extip.ip1.id # NAT через ip1
   }
}
 
# Создание второй виртуальной сети vnet2 без NAT
resource "oblakoteka_kvm_vnet" "vnet2" {
   region = var.region_oblakoteka_ru_msk
   name = "tf_vnet2"
   subnet = {
      subnet_cidr = "192.168.20.0/24"
   }
}
 
# Создание виртуальной машины vm1 с подключением к внешнему IP и двум vnet
resource "oblakoteka_kvm_instance" "vm1" {
  region = var.region_oblakoteka_ru_msk
  cod = var.cod_reconn_slava_1 # код COD (контейнер ОВМ)
  name = "tf_vm1"
  description = "test vm from tf"
  vm_type = var.vm_type_universal_lin # тип ВМ (универсальный Linux)
  os_template = var.os_debian_12_minimal # шаблон ОС (Debian 12)
  os_admin_pass = "Qwer1234" # пароль администратора ОС
  running = true # ВМ запускается сразу после создания
  in_test = true
  vcpu = 2 # количество vCPU
  vram = 2 # объем RAM (ГБ)
  # Диски ВМ
  disks = {
    "disk0" = {
      name = "disk0"
      type = var.disk_type_super # тип диска: super
      size = 25
      description = "System"
      bootable = true # загрузочный диск
    },
    "disk1" = {
      name = "disk1"
      type = var.disk_type_standard
      size = 35
      description = "Data1"
      bootable = false
    },
    "disk2" = {
      name = "disk2"
      type = var.disk_type_archive
      size = 45
      description = "Data2"
      bootable = false
    },
  }
 
  # Сетевые подключения
  connections = {
    "net0" = {
      extip_id = oblakoteka_kvm_extip.ip2.id # привязка внешнего IP ip2
    },
    "net1" = {
      vnet_id = oblakoteka_kvm_vnet.vnet1.id # подключение к vnet1
    },
    "net2" = {
      vnet_id = oblakoteka_kvm_vnet.vnet2.id # подключение к vnet2
    }
  }
}
 
# Определение переменных (регион, типы ВМ, дисков, ОС и т.д.)
# Ниже приведены значения по умолчанию, используемые в ресурсах
 
# Регион, в котором создаются все ресурсы
variable "region_oblakoteka_ru_msk" {
  default = "fc872fd4-fb56-486c-be35-813e8bfc820d"
}
# ID кода доступа к площадке (например, региону или проекту)
variable "cod_reconn_slava_1" {
  default = 2
}
 
# Типы виртуальных машин (Linux):
# базовая конфигурация для минимальных нагрузок
variable "vm_type_basic_lin" {
  default = "7190353d-891a-4175-b435-c590ff9ac835"
}
 
# универсальная конфигурация для большинства сценариев
variable "vm_type_universal_lin" {
  default = "b43005aa-a5b5-46e1-8a18-160ab8093cab"
}
 
# производительная конфигурация для ресурсоёмких задач
variable "vm_type_productive_lin" {
  default = "4de0e237-36cb-45a4-864f-deb947ed7246"
}
 
# Типы виртуальных машин (Windows):
variable "vm_type_basic_win" {
  default = "86f153b6-3d95-4687-9a7e-69bdc37fc005"
}
 
variable "vm_type_universal_win" {
  default = "ffc90a3c-08ec-44f3-8dfe-630cf584acdb"
}
 
variable "vm_type_productive_win" {
  default = "dc2bf451-f021-4a57-8616-0e12b60855d7"
}
 
# Тип виртуальной машины для образов MikroTik CHR
variable "vm_type_mikrotik" {
  default = "2faea487-3954-4a80-9879-48ad31532e0a"
}
 
# Типы дисков:
 
# Высокопроизводительный сетевой диск
variable "disk_type_super" {
  default = "61d80fad-efe4-487d-9b08-3a56ce1166a1"
}
 
# Высокопроизводительный локальный диск
variable "disk_type_super_local" {
  default = "f8a94762-ddf6-4e5a-8e24-b76c3cae3d8d"
}
 
# Универсальный сетевой диск
variable "disk_type_standard" {
  default = "877ac4c7-1680-4c2b-a018-4659d796c0a9"
}
 
# Универсальный локальный диск
variable "disk_type_standard_local" {
  default = "de72eb6e-c257-4cd4-bb8e-2effd3a67887"
}
 
# Архивный сетевой диск (для хранения редко используемых данных)
variable "disk_type_archive" {
  default = "cfb474b4-ba9c-4434-ac35-7be543ac2d3f"
}
 
# Архивный локальный диск
variable "disk_type_archive_local" {
  default = "345ad33c-02fb-477b-9192-36721e2ad227"
}
 
# Образы ОС (Linux):
 
# Debian 12 с минимальной установкой
variable "os_debian_12_minimal" {
  default = "073a519c-f009-4b54-bf65-5025a3a34900"
}
 
# Ubuntu 24.04 LTS с минимальной установкой
variable "os_ubuntu_2404_lts_minimal" {
  default = "801548d3-700f-42cf-bb39-aaedcdc2afba"
}
 
# Кастомный Linux-образ (пользовательский)
variable "os_linux_custom" {
  default = "362a9e0b-6676-437a-8174-8d76bdbb1f44"
}
 
# Образы ОС (Windows с GUI):
 
variable "os_windows_2022_rus_gui" {
  default = "d0c240bb-c868-44c2-8d62-8963fa1277dc"
}
 
variable "os_windows_2022_en_gui" {
  default = "1908cf91-7b98-4be5-815d-6884cc4fc2e0"
}
 
variable "os_windows_2019_rus_gui" {
  default = "6cb36fc4-8774-46cc-988e-cc90448a61d1"
}
 
variable "os_windows_2019_en_gui" {
  default = "402e344c-5ea1-44ac-970a-0a1b98b38371"
}
 
variable "os_windows_2016_en_gui" {
  default = "362b4f64-b0ff-48bd-9d4a-4debd375f85f"
}
 
# Кастомные образы Windows (разные интерфейсы подключения дисков)
 
variable "os_windows_2022_custom_scsi" {
  default = "9262a248-577f-49ce-bf67-dfee7ee1cc60"
}
 
variable "os_windows_2022_custom_sata" {
  default = "b3cd5d9b-a8fd-4710-bf74-e1704def6382"
}
 
variable "os_windows_2019_custom_scsi" {
  default = "e9c4987d-6800-4067-9399-b1dd38f884df"
}
 
variable "os_windows_2019_custom_sata" {
  default = "c0733e7f-6abc-4f82-9032-58f0b7142283"
}
 
# Образы MikroTik Cloud Hosted Router
 
variable "os_mikrotik_chr_7" {
  default = "2293adfa-cf1a-4841-bea8-288e09fae050"
}
 
variable "os_mikrotik_chr_6" {
  default = "4bfc2696-f609-4db3-99bd-419f9575d8ca"
}
 
# Прочие кастомные образы
 
variable "os_custom_other_scsi" {
  default = "9f5d5abf-45f7-411b-bf14-2628c15b0d50"
}
 
variable "os_custom_other_sata" {
  default = "fd83b7a7-0f2d-4c27-b898-9a271d5d1d30"
}
 
# Закомментированные outputs (можно раскомментировать при необходимости)
 
# output "whoami_out" {
#   value = data.oblakoteka_whoami.whoami
# }
 
# output "ip1_out" {
#   value = oblakoteka_kvm_extip.ip1
# }
 
# output "vnet1_out" {
#   value = oblakoteka_kvm_vnet.vnet1
# }
 
# Вывод информации о созданной ВМ
output "vm1_out" {
   value = oblakoteka_kvm_instance.vm1
}