×

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

 
# Указываем, что требуется провайдер cloupard из собственного реестра
terraform {
  required_providers {
    cloupard = {
      source = "tf.cloupard.uz/clouparduz/clouparduz"
    }
  }
}
 
# Конфигурация провайдера cloupard: авторизация через ключ
provider "cloupard" {
  key_file = "key.json"
}
 
# Заказ внешнего IP-адреса #1 в указанном регионе и подсети
resource "cloupard_kvm_extip" "ip1" {
  region = "uz_tas2"
  # subnet = ""
  in_test = true
}
 
# Заказ внешнего IP-адреса #2 в той же подсети
resource "cloupard_kvm_extip" "ip2" {
  region = "uz_tas2"
  # subnet = ""
  in_test = true
}
 
# Создание виртуальной сети vnet1 с NAT через внешний IP ip1
resource "cloupard_kvm_vnet" "vnet1" {
  region = "uz_tas2"
  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 = cloupard_kvm_extip.ip1.id
  }
}
 
# Создание второй виртуальной сети vnet2 без NAT
resource "cloupard_kvm_vnet" "vnet2" {
  region = "uz_tas2"
  name = "tf_vnet2"
  subnet = {
    subnet_cidr = "192.168.20.0/24"
  }
}
 
# Создание виртуальной машины vm1 с подключением к внешнему IP и двум vnet
resource "cloupard_kvm_instance" "vm1" {
  region = "uz_tas2"
  cod = "unicon"                        # код ЦОД
  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 = 30
      description = "System"
      bootable = true                   # загрузочный диск
    },
    "disk1" = {
      name = "disk1"
      type = "standard"                 # тип диска: standard
      size = 40
      description = "Data1"
      bootable = false
    },
    "disk2" = {
      name = "disk2"
      type = "archive"                  # тип диска: archive
      size = 45
      description = "Data2"
      bootable = false
    }
  }
 
  # Сетевые подключения
  connections = {
    "net0" = {
      extip_id = cloupard_kvm_extip.ip2.id   # привязка внешнего IP ip2
    },
    "net1" = {
      vnet_id = cloupard_kvm_vnet.vnet1.id   # подключение к vnet1
    },
    "net2" = {
      vnet_id = cloupard_kvm_vnet.vnet2.id   # подключение к vnet2
    }
  }
}
 
# Создание второй виртуальной машины vm2 с увеличенными ресурсами
resource "cloupard_kvm_instance" "vm2" {
  region = "uz_tas2"
  cod = "unicon"                           # код ЦОД
  name = "tf_vm1"
  description = "test vm from tf"
  vm_type = "universal_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 "ip1_out" {
#  value = cloupard_kvm_extip.ip1
#}
 
#output "ip2_out" {
#  value = cloupard_kvm_extip.ip2
#}
 
#output "vnet1_out" {
#  value = cloupard_kvm_vnet.vnet1
#}
 
#output "vnet2_out" {
#  value = cloupard_kvm_vnet.vnet2
#}
 
#output "vm1_out" {
#  value = cloupard_kvm_instance.vm1
#}
 
#output "vm2_out" {
# value = cloupard_kvm_instance.vm2
#}