This commit is contained in:
43
tofu/e2e/main.tf
Normal file
43
tofu/e2e/main.tf
Normal file
@@ -0,0 +1,43 @@
|
||||
locals {
|
||||
vm_offset = tonumber(var.run_id) % 44 # 211 - 254
|
||||
clone_vmid = 9100 + local.vm_offset
|
||||
clone_ip = "192.168.178.${211 + local.vm_offset}/24"
|
||||
}
|
||||
|
||||
resource "proxmox_virtual_environment_vm" "e2e_clone" {
|
||||
name = "e2e-run-${var.run_id}"
|
||||
description = "Ephemeral E2E test VM for run ${var.run_id}"
|
||||
tags = ["opentofu", "e2e", "ephemeral", "clone"]
|
||||
|
||||
node_name = var.node_name
|
||||
vm_id = local.clone_vmid
|
||||
|
||||
clone {
|
||||
vm_id = var.clone_template_id
|
||||
full = false
|
||||
}
|
||||
|
||||
agent {
|
||||
enabled = false
|
||||
}
|
||||
stop_on_destroy = true
|
||||
|
||||
initialization {
|
||||
ip_config {
|
||||
ipv4 {
|
||||
address = local.clone_ip
|
||||
gateway = var.gateway
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
output "clone_vmid" {
|
||||
description = "VMID of the cloned E2E VM"
|
||||
value = local.clone_vmid
|
||||
}
|
||||
|
||||
output "clone_ip" {
|
||||
description = "IP address of the cloned E2E VM (without CIDR)"
|
||||
value = "192.168.178.${211 + local.vm_offset}" # 211-254
|
||||
}
|
||||
12
tofu/e2e/provider.tf
Normal file
12
tofu/e2e/provider.tf
Normal file
@@ -0,0 +1,12 @@
|
||||
provider "proxmox" {
|
||||
endpoint = "https://192.168.178.2:8006/"
|
||||
username = "root@pam"
|
||||
password = var.proxmox_password
|
||||
insecure = true
|
||||
|
||||
ssh {
|
||||
agent = false
|
||||
username = "root"
|
||||
password = var.proxmox_password
|
||||
}
|
||||
}
|
||||
34
tofu/e2e/variables.tf
Normal file
34
tofu/e2e/variables.tf
Normal file
@@ -0,0 +1,34 @@
|
||||
variable "proxmox_password" {
|
||||
description = "Password for root@pam on Proxmox"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "node_name" {
|
||||
description = "Proxmox node name"
|
||||
type = string
|
||||
default = "pve"
|
||||
}
|
||||
|
||||
variable "run_id" {
|
||||
description = "Unique identifier for this E2E run (e.g. Drone build number)"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "clone_template_id" {
|
||||
description = "VMID of the E2E template to clone from"
|
||||
type = number
|
||||
default = 9000
|
||||
}
|
||||
|
||||
variable "clone_vm_password" {
|
||||
description = "Password for the cloned VM"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "gateway" {
|
||||
description = "Network gateway IP"
|
||||
type = string
|
||||
default = "192.168.178.1"
|
||||
}
|
||||
26
tofu/e2e/versions.tf
Normal file
26
tofu/e2e/versions.tf
Normal file
@@ -0,0 +1,26 @@
|
||||
terraform {
|
||||
required_version = ">= 1.6.0"
|
||||
|
||||
backend "s3" {
|
||||
bucket = "tofu-state"
|
||||
key = "e2e/${var.run_id}/terraform.tfstate"
|
||||
region = "garage"
|
||||
|
||||
endpoints = {
|
||||
s3 = "https://garage.gilmour109.de"
|
||||
}
|
||||
|
||||
skip_credentials_validation = true
|
||||
skip_metadata_api_check = true
|
||||
skip_requesting_account_id = true
|
||||
skip_region_validation = true
|
||||
use_path_style = true
|
||||
}
|
||||
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "bpg/proxmox"
|
||||
version = "~> 0.96.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user