Загрузка данных


terraform {
  required_providers {
    proxmox = {
      source  = "bpg/proxmox"
      version = "0.89.1"
    }
    freeipa = {
      source  = "camptocamp/freeipa"
      version = "1.0.0"
    }
  }
}

variable "pm_api_token" {}
variable "ipa_password" {}

provider "proxmox" {
  endpoint  = "https://192.168.0" # Проверь IP хоста Proxmox
  api_token = var.pm_api_token
  insecure  = true
}

provider "freeipa" {
  host     = "ipa.au-team.cloud"
  username = "admin"
  password = var.ipa_password
}

# Описание 5 виртуальных машин
resource "proxmox_virtual_machine" "k8s_srv" {
  count     = 5
  name      = "k8s-srv${count.index + 1}"
  node_name = "dc"

  clone {
    vm_id = 101 # ID твоего шаблона
  }

  cpu {
    cores = 2
  }

  memory {
    dedicated = 2048
  }

  initialization {
    user_account {
      username = "altlinux"
      password = "P@ssw0rd"
    }
    ip_config {
      ipv4 {
        address = "192.168.0.${201 + count.index}/24"
        gateway = "192.168.0.254"
      }
    }
  }

  network_device {
    bridge = "cloudzon"
  }

  disk {
    datastore_id = "storage"
    interface    = "virtio0"
    size         = 20
  }
}

# Создание DNS-записей A во FreeIPA
resource "freeipa_dns_record" "k8s_dns_a" {
  count    = 5
  zone     = "au-team.cloud"
  name     = "k8s-srv${count.index + 1}"
  records  = ["192.168.0.${201 + count.index}"]
  type     = "A"
}

# Создание PTR записей (обратная зона)
resource "freeipa_dns_record" "k8s_dns_ptr" {
  count    = 5
  zone     = "0.168.192.in-addr.arpa"
  name     = "${201 + count.index}"
  records  = ["k8s-srv${count.index + 1}.au-team.cloud."]
  type     = "PTR"
}