add: semaphore-vms terraform project for semaphore UI
This commit is contained in:
33
terraform/projects/semaphore-vms/main.tf
Normal file
33
terraform/projects/semaphore-vms/main.tf
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
module "pve_vm" {
|
||||||
|
source = "../../modules/pve_vm"
|
||||||
|
for_each = local.vm_list
|
||||||
|
|
||||||
|
node_name = each.value.node_name
|
||||||
|
vm_name = each.value.vm_name
|
||||||
|
vm_cpu = each.value.vm_cpu
|
||||||
|
vm_ram = each.value.vm_ram
|
||||||
|
vm_vlan = each.value.vm_vlan
|
||||||
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
# Ordered list of VM hostnames
|
||||||
|
sem_hosts = ["sem01", "sem02", "sem03"]
|
||||||
|
|
||||||
|
# Create a map: host -> node
|
||||||
|
vm_list = {
|
||||||
|
for idx, host in local.sem_hosts :
|
||||||
|
host => {
|
||||||
|
node_name = data.proxmox_virtual_environment_nodes.pve_nodes.names[idx]
|
||||||
|
vm_name = host
|
||||||
|
vm_cpu = 1
|
||||||
|
vm_ram = 2048
|
||||||
|
vm_vlan = 66
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data "proxmox_virtual_environment_nodes" "pve_nodes" {}
|
||||||
|
|
||||||
|
output "vm_ip" {
|
||||||
|
value = { for k, v in module.pve_vm : k => v.vm_ip }
|
||||||
|
}
|
||||||
18
terraform/projects/semaphore-vms/provider.tf
Normal file
18
terraform/projects/semaphore-vms/provider.tf
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
proxmox = {
|
||||||
|
source = "bpg/proxmox"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "proxmox" {
|
||||||
|
endpoint = var.proxmox_endpoint
|
||||||
|
api_token = var.proxmox_api_token
|
||||||
|
insecure = false
|
||||||
|
ssh {
|
||||||
|
agent = false
|
||||||
|
private_key = file("~/.ssh/id_ed25519")
|
||||||
|
username = "root"
|
||||||
|
}
|
||||||
|
}
|
||||||
10
terraform/projects/semaphore-vms/variables.tf
Normal file
10
terraform/projects/semaphore-vms/variables.tf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
variable "proxmox_endpoint" {
|
||||||
|
description = "Proxmox URL endpoint"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "proxmox_api_token" {
|
||||||
|
description = "Proxmox API token"
|
||||||
|
type = string
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user