# Указываем, что требуется провайдер oblakoteka из собственного реестра terraform { required_providers { oblakoteka = { source = "tf.oblakoteka.ru/oblakoteka/oblakoteka" } } } # Конфигурация провайдера oblakoteka: авторизация через ключ provider "oblakoteka" { key_file = "oblakoteka_key.json" } # Информация о текущем пользователе data "oblakoteka_whoami" "whoami" {} # Заказ внешнего IP-адреса #1 в указанном регионе resource "oblakoteka_kvm_extip" "ip1" { region = "ru_msk" # subnet = "" in_test = true } # Заказ внешнего IP-адреса #2 в том же регионе resource "oblakoteka_kvm_extip" "ip2" { region = "ru_msk" # subnet = "" in_test = true } # Создание виртуальной сети vnet1 с NAT через внешний IP ip1 resource "oblakoteka_kvm_vnet" "vnet1" { region = "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 } } # Создание второй виртуальной сети vnet2 без NAT resource "oblakoteka_kvm_vnet" "vnet2" { region = "ru_msk" name = "tf_vnet2" subnet = { subnet_cidr = "192.168.30.0/24" } } # Создание виртуальной машины vm1 с подключением к внешнему IP и двум vnet resource "oblakoteka_kvm_instance" "vm1" { region = "ru_msk" cod = "reconn_slava1" # код ЦОД name = "tf_vm1" description = "test vm from tf" vm_type = "universal_lin" # тип ВМ (универсальный Linux) os_template = "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 = "super" # тип диска: super size = 20 description = "System" bootable = true # загрузочный диск }, "disk1" = { name = "disk1" type = "standard" # тип диска: standard size = 30 description = "Data1" bootable = false }, "disk2" = { name = "disk2" type = "archive" # тип диска: archive size = 40 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 } } } # Создание второй виртуальной машины vm2 с увеличенными ресурсами resource "oblakoteka_kvm_instance" "vm2" { region = "ru_msk" cod = "reconn_slava1" name = "tf_vm2" description = "vm2 from tf" vm_type = "high_performance_lin" # тип ВМ (производительная Linux) os_template = "debian_12_minimal" # шаблон ОС (Debian 12) os_admin_pass = "Qwer1234" # пароль администратора ОС ssh_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJbOIrkRQapl6EGXleO0VUq0ZWZ65+YSwF6i/1TqYsIb infraaccess" #Добавление SSH ключа running = true # ВМ запускается сразу после создания in_test = true # Тестовый период: да vcpu = 8 # количество vCPU vram = 16 # объем RAM (ГБ) # Диски ВМ disks = { "disk0" = { name = "disk0" type = "super" # тип диска: super size = 20 description = "System" bootable = true # загрузочный диск } } } # Закомментированные 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 # }