You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.8 KiB
80 lines
1.8 KiB
terraform {
|
|
required_providers {
|
|
proxmox = {
|
|
source = "telmate/proxmox"
|
|
version = "2.9.11"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "proxmox" {
|
|
pm_api_url = "https://joseph.djpianalto.com/api2/json"
|
|
pm_api_token_id = "terraform@pam!terraform_api_token"
|
|
pm_api_token_secret = var.pm_api_token_secret
|
|
pm_tls_insecure = false
|
|
}
|
|
|
|
resource "proxmox_vm_qemu" "kubernetes_cluster" {
|
|
for_each = var.vms
|
|
|
|
name = each.value.name
|
|
vmid = each.key
|
|
target_node = each.value.node
|
|
clone = var.template_name
|
|
|
|
agent = 1
|
|
os_type = "linux"
|
|
cores = each.value.cores
|
|
sockets = 1
|
|
cpu = "host"
|
|
memory = each.value.memory
|
|
scsihw = "virtio-scsi-pci"
|
|
bootdisk = "scsi0"
|
|
|
|
disk {
|
|
slot = 0
|
|
size = each.value.disk
|
|
type = "scsi"
|
|
storage = "${each.value.node}_vm_store"
|
|
}
|
|
|
|
network {
|
|
model = "virtio"
|
|
bridge = "vmbr0"
|
|
}
|
|
|
|
lifecycle {
|
|
ignore_changes = [
|
|
network,
|
|
]
|
|
}
|
|
|
|
ipconfig0 = "ip=${each.value.ip}/16,gw=10.0.0.254"
|
|
sshkeys = <<EOF
|
|
${var.ssh_key}
|
|
EOF
|
|
ciuser = "ansible"
|
|
cipassword = var.ansible_password
|
|
searchdomain = "local"
|
|
nameserver = "10.0.0.252"
|
|
|
|
provisioner "remote-exec" {
|
|
inline = ["echo Hello World!; sleep 10"]
|
|
|
|
connection {
|
|
host = each.value.ip
|
|
type = "ssh"
|
|
user = "ansible"
|
|
private_key = file(var.private_key_file)
|
|
}
|
|
}
|
|
|
|
provisioner "local-exec" {
|
|
command = "ansible-playbook --vault-pass-file /home/dustyp/ansible_vault_pass --limit ${each.value.ip}, -i /home/dustyp/code/Ansible/basic_setup/inventory.yml /home/dustyp/code/Ansible/basic_setup/main.yml"
|
|
}
|
|
|
|
provisioner "local-exec" {
|
|
command = "ansible-playbook -i ${each.value.ip}, kubernetes_playbook.yml"
|
|
}
|
|
}
|