Compare commits

..

No commits in common. "main" and "v0.1.0" have entirely different histories.
main ... v0.1.0

5 changed files with 35 additions and 35 deletions

View File

@ -16,9 +16,9 @@ steps:
commands:
- tflint --color
- name: tofu
image: quay.io/thegeeklab/wp-opentofu
- name: terraform
image: docker.io/jmccann/drone-terraform:8
settings:
action:
actions:
- validate
tofu_version: 1.6.1
tf_version: 1.5.0

22
main.tf
View File

@ -1,21 +1,3 @@
locals {
ipv4_addresses = {
for server_key, server in var.server : server.name => flatten([
for k, v in try(proxmox_virtual_environment_vm.server[server.name].ipv4_addresses, []) :
v if length(regexall(try(server.netif_filter, var.server_netif_filter), proxmox_virtual_environment_vm.server[server.name].network_interface_names[k])) > 0
])
}
}
locals {
ipv6_addresses = {
for server_key, server in var.server : server.name => flatten([
for k, v in try(proxmox_virtual_environment_vm.server[server.name].ipv6_addresses, []) :
v if length(regexall(try(server.netif_filter, var.server_netif_filter), proxmox_virtual_environment_vm.server[server.name].network_interface_names[k])) > 0
])
}
}
resource "proxmox_virtual_environment_vm" "server" {
for_each = { for row in var.server : row.name => row }
@ -113,7 +95,9 @@ resource "restapi_object" "ucs_server" {
"position" : var.ucs_zones[try(each.value.dns_zone, var.server_dns_zone)],
"properties" : {
"name" : each.value.name,
"a" : concat(local.ipv4_addresses[each.key]),
"a" : concat(
[for k, v in flatten(proxmox_virtual_environment_vm.server[each.value.name].ipv4_addresses) : v if k != index(proxmox_virtual_environment_vm.server[each.value.name].network_interface_names, "lo")],
),
}
})
}

View File

@ -1,8 +1,5 @@
output "output" {
value = {
for server_key, server in proxmox_virtual_environment_vm.server : server_key => merge(
server,
{ ipv4_addresses = local.ipv4_addresses[server_key] },
)
for server_key, server in proxmox_virtual_environment_vm.server : server_key => server
}
}

View File

@ -1,4 +1,12 @@
// Proxmox VE
# variable "pve_api_url" {
# type = string
# }
# variable "pve_api_token" {
# type = string
# }
variable "pve_ssh_keys" {
type = list(string)
}
@ -8,11 +16,27 @@ variable "pve_node_name" {
}
// Cloudflare
variable "cloudflare_api_token" {
type = string
}
variable "cloudflare_zones" {
type = any
}
// Univention
variable "ucs_api_url" {
type = string
}
variable "ucs_api_username" {
type = string
}
variable "ucs_api_password" {
type = string
}
variable "ucs_zones" {
type = any
}
@ -43,8 +67,3 @@ variable "server_guest_agent" {
type = bool
default = false
}
variable "server_netif_filter" {
type = string
default = "^(eth|ens|enp).+"
}

View File

@ -1,13 +1,13 @@
terraform {
required_providers {
cloudflare = {
source = "registry.opentofu.org/cloudflare/cloudflare"
source = "cloudflare/cloudflare"
}
proxmox = {
source = "registry.opentofu.org/bpg/proxmox"
source = "bpg/proxmox"
}
restapi = {
source = "registry.opentofu.org/thegeeklab/restapi"
source = "mastercard/restapi"
}
}
}