204 lines
6.2 KiB
Terraform
204 lines
6.2 KiB
Terraform
# =============================================================================
|
|
# Inputs for the standalone PROD VM example.
|
|
# Values that depend on the organization or resource pool are in
|
|
# terraform.tfvars.example; the API token is in secrets.auto.tfvars.example.
|
|
# =============================================================================
|
|
|
|
variable "api_token" {
|
|
type = string
|
|
sensitive = true
|
|
description = "Nubes PROD API token from the Technical token section in the personal account."
|
|
}
|
|
|
|
variable "api_endpoint" {
|
|
type = string
|
|
default = "https://lk-api-gateway.ngcloud.ru/api/v1/svc"
|
|
description = "Nubes PROD API endpoint. Change only when targeting another stand."
|
|
}
|
|
|
|
variable "organization" {
|
|
type = string
|
|
description = "Name or UUID of the Cloud Director organization created manually in the personal account."
|
|
}
|
|
|
|
variable "ip_space_name" {
|
|
type = string
|
|
description = "Exact IP space name available to this organization; used for the allocation, Edge SNAT, and VM."
|
|
}
|
|
|
|
variable "org_vip_count" {
|
|
type = number
|
|
default = 3
|
|
description = "Organization IP allocation count. Three is the tested minimum for this VM-only deployment; increase if other services need IPs from this space."
|
|
|
|
validation {
|
|
condition = var.org_vip_count >= 3 && floor(var.org_vip_count) == var.org_vip_count
|
|
error_message = "This tested VM-only example requires at least 3 IPs; use a whole number and increase it for additional consumers."
|
|
}
|
|
}
|
|
|
|
variable "vdc_resource_name" {
|
|
type = string
|
|
default = "vm-minimal-vdc"
|
|
description = "Unique service name for the virtual data center."
|
|
}
|
|
|
|
variable "vdc_network_provider" {
|
|
type = string
|
|
default = "msk1"
|
|
description = "Network provider selected for this organization in the VDC creation form."
|
|
}
|
|
|
|
variable "vdc_provider_vdc" {
|
|
type = string
|
|
default = "Intel Cascade Lake 3.1"
|
|
description = "Provider VDC selected in the personal account; it must be compatible with the network provider."
|
|
}
|
|
|
|
variable "vdc_cpu_allocated" {
|
|
type = number
|
|
default = 8
|
|
description = "Number of vCPUs allocated to the VDC."
|
|
}
|
|
|
|
variable "vdc_cpu_guaranteed" {
|
|
type = number
|
|
default = 0
|
|
description = "Guaranteed vCPU percentage. PROD schema allows 0, 50, or 80; this value is fixed at VDC creation."
|
|
|
|
validation {
|
|
condition = contains([0, 50, 80], var.vdc_cpu_guaranteed)
|
|
error_message = "vdc_cpu_guaranteed must be 0, 50, or 80."
|
|
}
|
|
}
|
|
|
|
variable "vdc_mem_allocated" {
|
|
type = number
|
|
default = 200
|
|
description = "Memory allocated to the VDC, in GB."
|
|
}
|
|
|
|
variable "vdc_storage_config" {
|
|
type = string
|
|
default = "[{\"name\":\"SSD SDS\",\"size\":\"2000\"}]"
|
|
description = "JSON array of storage policies available to the selected Provider VDC; size is in GB."
|
|
}
|
|
|
|
variable "nsxt_resource_name" {
|
|
type = string
|
|
default = "vm-minimal-edge"
|
|
description = "Unique service name for the perimeter Edge gateway."
|
|
}
|
|
|
|
variable "nsxt_ip_addr_pool" {
|
|
type = string
|
|
default = "10.10.102.0/24"
|
|
description = "Unused /24 routed-network range for this Edge. Verify that it does not overlap another network."
|
|
}
|
|
|
|
variable "nsxt_main_dns" {
|
|
type = string
|
|
default = "81.22.46.22"
|
|
description = "Primary DNS server assigned to VMs on the routed network."
|
|
}
|
|
|
|
variable "nsxt_second_dns" {
|
|
type = string
|
|
default = "185.247.187.77"
|
|
description = "Secondary DNS server assigned to VMs on the routed network."
|
|
}
|
|
|
|
variable "vapp_resource_name" {
|
|
type = string
|
|
default = "vm-minimal-vapp"
|
|
description = "Unique service name for the vApp in the personal account."
|
|
}
|
|
|
|
variable "vapp_name" {
|
|
type = string
|
|
default = "vm-minimal-vapp"
|
|
description = "Unique vApp name matching the platform pattern; it is used when forming the VM DNS name."
|
|
}
|
|
|
|
variable "vm_resource_name" {
|
|
type = string
|
|
default = "vm-minimal"
|
|
description = "Unique service name for the virtual machine in the personal account."
|
|
}
|
|
|
|
variable "vm_name" {
|
|
type = string
|
|
default = "vm-minimal"
|
|
description = "VM name matching the platform pattern; it also identifies the VM IP set."
|
|
}
|
|
|
|
variable "vm_image" {
|
|
type = string
|
|
default = "Ubuntu_22-20G"
|
|
description = "Available PROD VM image. The base disk size is part of the image and cannot be changed here."
|
|
}
|
|
|
|
variable "vm_cpu" {
|
|
type = number
|
|
default = 2
|
|
description = "Number of VM vCPUs (PROD schema range: 1-64)."
|
|
}
|
|
|
|
variable "vm_ram" {
|
|
type = number
|
|
default = 4
|
|
description = "VM memory in GB (PROD schema range: 1-256)."
|
|
}
|
|
|
|
variable "vm_disk" {
|
|
type = number
|
|
default = 128
|
|
description = "Additional VM disk size in GB. The image supplies the separate base disk."
|
|
}
|
|
|
|
variable "vm_user_login" {
|
|
type = string
|
|
default = "ubuntu"
|
|
description = "Linux account created for SSH access; it is set during VM creation."
|
|
}
|
|
|
|
variable "vm_user_public_key" {
|
|
type = string
|
|
description = "Your OpenSSH public key, such as the contents of ~/.ssh/id_ed25519.pub. Never put a private key here."
|
|
}
|
|
|
|
variable "vm_access_port_list" {
|
|
type = list(object({
|
|
port = string
|
|
type = string
|
|
}))
|
|
default = [
|
|
{ port = "22", type = "tcp" },
|
|
{ port = "80", type = "tcp" }
|
|
]
|
|
description = "Inbound VM ports and protocols. Restrict this list to the services the VM actually needs."
|
|
}
|
|
|
|
variable "vm_access_ip_list" {
|
|
type = list(string)
|
|
description = "Source IP addresses or CIDRs allowed to reach the VM. Set this to trusted addresses; avoid 0.0.0.0/0 where possible."
|
|
}
|
|
|
|
variable "vm_same_snat" {
|
|
type = bool
|
|
default = true
|
|
description = "When true, the VM is published through its own external IP created during deployment."
|
|
}
|
|
|
|
variable "git_revision" {
|
|
type = string
|
|
default = null
|
|
description = "Optional redeploy trigger. Set a new non-empty marker to request redeploy on Update; leave null for normal VM creation."
|
|
}
|
|
|
|
variable "reconcile_trigger" {
|
|
type = string
|
|
default = null
|
|
description = "Optional reconcile trigger. Change the marker to request reconcile on Update; reconcile does not run on Create."
|
|
}
|