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"
}