diff options
| -rw-r--r-- | .gitignore | 3 | ||||
| -rw-r--r-- | terraform/main.tf | 105 | ||||
| -rw-r--r-- | terraform/modules/eveng/main.tf | 40 | ||||
| -rw-r--r-- | terraform/modules/eveng/outputs.tf | 3 | ||||
| -rw-r--r-- | terraform/modules/eveng/variables.tf | 42 |
5 files changed, 107 insertions, 86 deletions
@@ -1,3 +1,6 @@ + +isos/ + # Local .terraform directories terraform/.terraform/ diff --git a/terraform/main.tf b/terraform/main.tf index 9977fb4..fc10416 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -1,89 +1,22 @@ -# Provider -terraform { - required_providers { - proxmox = { - source = "bpg/proxmox" - version = "~> 0.83" - } - } +# module "vyos" { +# source = "./modules/vyos" +# node_name = var.node_name +# vm_id = 201 +# memory = 2048 +# } + +module "eveng" { + source = "./modules/eveng" + node_name = var.node_name + vm_id = 202 + memory_dedicated = 8192 + cpu_cores = 4 } -provider "proxmox" { - endpoint = var.proxmox_endpoint - api_token = var.proxmox_api_token - - insecure = true -} - - -# LXC Container - -resource "proxmox_virtual_environment_container" "lxc01" { - - vm_id = var.lxc_id - node_name = var.node_name - - - started = true - - wait_for_ip { - ipv4 = true - } - - operating_system { - template_file_id = "local:vztmpl/debian-12-standard_12.12-1_amd64.tar.zst" - } - - - cpu { - cores = var.lxc_cores - } - - memory { - dedicated = var.lxc_memory - swap = 512 - } - - disk { - datastore_id = "local-lvm" - size = 8 - } - - network_interface { - name = "eth0" - bridge = "vmbr0" - - } - - initialization { - hostname = var.lxc_name - - ip_config { - ipv4 { - address = "dhcp" - } - } - - user_account { - keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHB4jD3PVsg1edlMwBW6Hb/NYLnzEI8dyJQRnQQap45q enrico@cachyos" - ] - } - } -} - - -resource "local_file" "ansible_inventory" { - content = <<-EOT - [lxc] - ${try(proxmox_virtual_environment_container.lxc01.ipv4["eth0"], "Brak_IP")} ansible_user=root ansible_ssh_common_args='-o StrictHostKeyChecking=no' - EOT - - filename = "${path.module}/../ansible/inventory.ini" -} - -output "aktualne_ip_kontenera" { - description = "Adres IP pobrany przez Terraforma" - value = try(proxmox_virtual_environment_container.lxc01.ipv4["eth0"], "Proxmox jeszcze nie zaraportowaĆ IP!") -} +# module "observability_stack" { +# source = "./modules/observability" +# node_name = var.node_name +# lxc_id = 203 +# network_bridge = "vmbr0" +# } diff --git a/terraform/modules/eveng/main.tf b/terraform/modules/eveng/main.tf new file mode 100644 index 0000000..02677ad --- /dev/null +++ b/terraform/modules/eveng/main.tf @@ -0,0 +1,40 @@ +terraform { + required_providers { + proxmox = { + source = "bpg/proxmox" + version = "~> 0.83" + } + } +} + +resource "proxmox_virtual_environment_vm" "eveng" { + name = var.vm_name + node_name = var.node_name + vm_id = var.vm_id + + started = true + + cpu { + cores = var.cpu_cores + type = "host" + } + + memory { + dedicated = var.memory_dedicated + } + + network_device { + bridge = var.network_bridge + } + + disk { + datastore_id = var.datastore_id + interface = "scsi0" + size = var.disk_size + file_format = "raw" + } + + cdrom { + file_id = var.iso_file + } +} diff --git a/terraform/modules/eveng/outputs.tf b/terraform/modules/eveng/outputs.tf new file mode 100644 index 0000000..54de82b --- /dev/null +++ b/terraform/modules/eveng/outputs.tf @@ -0,0 +1,3 @@ +output "ip_address" { + value = try(proxmox_virtual_environment_vm.eveng.ipv4_addresses[1][0], "Brak IP ") +} diff --git a/terraform/modules/eveng/variables.tf b/terraform/modules/eveng/variables.tf new file mode 100644 index 0000000..9eacfa1 --- /dev/null +++ b/terraform/modules/eveng/variables.tf @@ -0,0 +1,42 @@ +variable "node_name" { + type = string +} + +variable "vm_id" { + type = number +} + +variable "vm_name" { + type = string + default = "eve-ng-lab" +} + +variable "cpu_cores" { + type = number + default = 4 +} + +variable "memory_dedicated" { + type = number + default = 8192 +} + +variable "network_bridge" { + type = string + default = "vmbr0" +} + +variable "datastore_id" { + type = string + default = "local-lvm" +} + +variable "disk_size" { + type = number + default = 50 +} + +variable "iso_file" { + type = string + default = "local:iso/eve-ce-prod-6.2.0-4-full.iso" +} |