Files
tf_examples/vm_v3_minimal/variables.tf
T

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."
}