restore UISP server + caddy frontend, fix SSH host key regeneration, add tofu proxmox provider
This commit is contained in:
parent
216bd8e668
commit
d6cf15165a
11 changed files with 264 additions and 5 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
---
|
---
|
||||||
ansible_host: 204.110.191.224
|
ansible_host: 204.110.191.224
|
||||||
|
ansible_user: debian
|
||||||
ansible_python_interpreter: /usr/bin/python3
|
ansible_python_interpreter: /usr/bin/python3
|
||||||
ansible_ssh_common_args: '-o StrictHostKeyChecking=accept-new'
|
ansible_ssh_common_args: '-o StrictHostKeyChecking=accept-new'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ aprs.w5isp.com
|
||||||
[caddy_servers]
|
[caddy_servers]
|
||||||
skippy.w5isp.com
|
skippy.w5isp.com
|
||||||
netbox.vntx.net
|
netbox.vntx.net
|
||||||
|
uisp.vntx.net
|
||||||
|
|
||||||
[netbox_servers]
|
[netbox_servers]
|
||||||
netbox.vntx.net
|
netbox.vntx.net
|
||||||
|
|
@ -65,5 +66,5 @@ us.manero.org ansible_host=manero-us
|
||||||
ca.manero.org ansible_host=manero-ca
|
ca.manero.org ansible_host=manero-ca
|
||||||
|
|
||||||
[nixos_resolvers]
|
[nixos_resolvers]
|
||||||
nixos-resolver ansible_host=nixos-resolver
|
nixos-resolver1 ansible_host=nixos-resolver1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,7 @@
|
||||||
api_user: "{{ proxmox_api_user }}"
|
api_user: "{{ proxmox_api_user }}"
|
||||||
api_password: "{{ proxmox_api_password }}"
|
api_password: "{{ proxmox_api_password }}"
|
||||||
api_host: "{{ proxmox_api_host }}"
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
storage: "{{ proxmox_storage }}"
|
storage: "{{ proxmox_storage }}"
|
||||||
timeout: 90
|
timeout: 90
|
||||||
full: true
|
full: true
|
||||||
|
|
@ -129,6 +130,7 @@
|
||||||
api_user: "{{ proxmox_api_user }}"
|
api_user: "{{ proxmox_api_user }}"
|
||||||
api_password: "{{ proxmox_api_password }}"
|
api_password: "{{ proxmox_api_password }}"
|
||||||
api_host: "{{ proxmox_api_host }}"
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
cores: "{{ vm_cores }}"
|
cores: "{{ vm_cores }}"
|
||||||
memory: "{{ vm_memory }}"
|
memory: "{{ vm_memory }}"
|
||||||
update: true
|
update: true
|
||||||
|
|
@ -139,6 +141,7 @@
|
||||||
api_user: "{{ proxmox_api_user }}"
|
api_user: "{{ proxmox_api_user }}"
|
||||||
api_password: "{{ proxmox_api_password }}"
|
api_password: "{{ proxmox_api_password }}"
|
||||||
api_host: "{{ proxmox_api_host }}"
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
disk: scsi0
|
disk: scsi0
|
||||||
size: "{{ vm_disk_size }}G"
|
size: "{{ vm_disk_size }}G"
|
||||||
state: resized
|
state: resized
|
||||||
|
|
@ -151,6 +154,7 @@
|
||||||
api_user: "{{ proxmox_api_user }}"
|
api_user: "{{ proxmox_api_user }}"
|
||||||
api_password: "{{ proxmox_api_password }}"
|
api_password: "{{ proxmox_api_password }}"
|
||||||
api_host: "{{ proxmox_api_host }}"
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
ipconfig:
|
ipconfig:
|
||||||
ipconfig0: "ip={{ vm_ip }}/26,gw={{ vm_gateway }}"
|
ipconfig0: "ip={{ vm_ip }}/26,gw={{ vm_gateway }}"
|
||||||
nameservers:
|
nameservers:
|
||||||
|
|
@ -168,6 +172,7 @@
|
||||||
api_user: "{{ proxmox_api_user }}"
|
api_user: "{{ proxmox_api_user }}"
|
||||||
api_password: "{{ proxmox_api_password }}"
|
api_password: "{{ proxmox_api_password }}"
|
||||||
api_host: "{{ proxmox_api_host }}"
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
state: started
|
state: started
|
||||||
|
|
||||||
- name: Wait for VM to be accessible via SSH
|
- name: Wait for VM to be accessible via SSH
|
||||||
|
|
@ -466,6 +471,122 @@
|
||||||
roles:
|
roles:
|
||||||
- aprsc
|
- aprsc
|
||||||
|
|
||||||
|
- name: Provision UISP VM on Proxmox
|
||||||
|
hosts: localhost
|
||||||
|
gather_facts: false
|
||||||
|
tags:
|
||||||
|
- uisp
|
||||||
|
- provision
|
||||||
|
- never
|
||||||
|
vars:
|
||||||
|
# Proxmox connection settings
|
||||||
|
proxmox_node: "{{ lookup('env', 'PROXMOX_NODE') | default('vm2-380', true) }}"
|
||||||
|
proxmox_api_host: 10.0.0.2
|
||||||
|
proxmox_api_user: "{{ lookup('env', 'PROXMOX_API_USER') | default('root@pam', true) }}"
|
||||||
|
proxmox_api_password: "{{ lookup('env', 'PROXMOX_API_PASSWORD') }}"
|
||||||
|
proxmox_storage: local-lvm
|
||||||
|
proxmox_template_name: debian-cloud-init
|
||||||
|
proxmox_template_vmid: 9000
|
||||||
|
|
||||||
|
# UISP VM configuration
|
||||||
|
vm_name: uisp.vntx.net
|
||||||
|
vm_vmid: 224
|
||||||
|
vm_ip: 204.110.191.224
|
||||||
|
vm_gateway: 204.110.191.254
|
||||||
|
vm_cores: 20
|
||||||
|
vm_memory: 16384
|
||||||
|
vm_disk_size: 64
|
||||||
|
vm_vlan: 9
|
||||||
|
ansible_ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFghGMnDdkfNC6JPEhMxrKhYDmNcXjHXp/y/mf3uLtzb"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Clone cloud-init template for UISP server
|
||||||
|
community.proxmox.proxmox_kvm:
|
||||||
|
node: "{{ proxmox_node }}"
|
||||||
|
vmid: "{{ proxmox_template_vmid }}"
|
||||||
|
clone: "{{ proxmox_template_name }}"
|
||||||
|
newid: "{{ vm_vmid }}"
|
||||||
|
name: "{{ vm_name }}"
|
||||||
|
api_user: "{{ proxmox_api_user }}"
|
||||||
|
api_password: "{{ proxmox_api_password }}"
|
||||||
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
|
storage: "{{ proxmox_storage }}"
|
||||||
|
timeout: 90
|
||||||
|
full: true
|
||||||
|
|
||||||
|
- name: Configure VM resources
|
||||||
|
community.proxmox.proxmox_kvm:
|
||||||
|
node: "{{ proxmox_node }}"
|
||||||
|
vmid: "{{ vm_vmid }}"
|
||||||
|
name: "{{ vm_name }}"
|
||||||
|
api_user: "{{ proxmox_api_user }}"
|
||||||
|
api_password: "{{ proxmox_api_password }}"
|
||||||
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
|
cores: "{{ vm_cores }}"
|
||||||
|
memory: "{{ vm_memory }}"
|
||||||
|
net:
|
||||||
|
net0: "virtio,bridge=vmbr0,tag={{ vm_vlan }}"
|
||||||
|
update: true
|
||||||
|
|
||||||
|
- name: Resize disk
|
||||||
|
community.proxmox.proxmox_disk:
|
||||||
|
vmid: "{{ vm_vmid }}"
|
||||||
|
api_user: "{{ proxmox_api_user }}"
|
||||||
|
api_password: "{{ proxmox_api_password }}"
|
||||||
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
|
disk: scsi0
|
||||||
|
size: "{{ vm_disk_size }}G"
|
||||||
|
state: resized
|
||||||
|
|
||||||
|
- name: Configure cloud-init network
|
||||||
|
community.proxmox.proxmox_kvm:
|
||||||
|
node: "{{ proxmox_node }}"
|
||||||
|
vmid: "{{ vm_vmid }}"
|
||||||
|
name: "{{ vm_name }}"
|
||||||
|
api_user: "{{ proxmox_api_user }}"
|
||||||
|
api_password: "{{ proxmox_api_password }}"
|
||||||
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
|
ipconfig:
|
||||||
|
ipconfig0: "ip={{ vm_ip }}/26,gw={{ vm_gateway }}"
|
||||||
|
nameservers:
|
||||||
|
- 1.1.1.1
|
||||||
|
- 8.8.8.8
|
||||||
|
ciuser: debian
|
||||||
|
cipassword: "sxcbctolxALGnj2R8GStXrfW8GVd3s/ju91fNon7T1U="
|
||||||
|
searchdomains: vntx.net
|
||||||
|
sshkeys: "{{ ansible_ssh_key }}"
|
||||||
|
update: true
|
||||||
|
|
||||||
|
- name: Start VM
|
||||||
|
community.proxmox.proxmox_kvm:
|
||||||
|
node: "{{ proxmox_node }}"
|
||||||
|
vmid: "{{ vm_vmid }}"
|
||||||
|
name: "{{ vm_name }}"
|
||||||
|
api_user: "{{ proxmox_api_user }}"
|
||||||
|
api_password: "{{ proxmox_api_password }}"
|
||||||
|
api_host: "{{ proxmox_api_host }}"
|
||||||
|
validate_certs: false
|
||||||
|
state: started
|
||||||
|
|
||||||
|
- name: Wait for VM to be accessible via SSH
|
||||||
|
ansible.builtin.wait_for:
|
||||||
|
host: "{{ vm_ip }}"
|
||||||
|
port: 22
|
||||||
|
delay: 30
|
||||||
|
timeout: 300
|
||||||
|
state: started
|
||||||
|
|
||||||
|
- name: Add VM to in-memory inventory
|
||||||
|
ansible.builtin.add_host:
|
||||||
|
name: "{{ vm_name }}"
|
||||||
|
ansible_host: "{{ vm_ip }}"
|
||||||
|
ansible_user: debian
|
||||||
|
groups: uisp_servers
|
||||||
|
|
||||||
- name: Configure UISP servers
|
- name: Configure UISP servers
|
||||||
hosts: uisp_servers
|
hosts: uisp_servers
|
||||||
become: true
|
become: true
|
||||||
|
|
@ -473,7 +594,10 @@
|
||||||
tags:
|
tags:
|
||||||
- uisp
|
- uisp
|
||||||
roles:
|
roles:
|
||||||
- uisp
|
- role: base
|
||||||
|
tags: base
|
||||||
|
- role: uisp
|
||||||
|
tags: uisp
|
||||||
|
|
||||||
- name: Configure Dokku servers
|
- name: Configure Dokku servers
|
||||||
hosts: dokku_servers
|
hosts: dokku_servers
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
- name: Regenerate SSH host keys
|
- name: Regenerate SSH host keys
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
|
cmd: ssh-keygen -A
|
||||||
args:
|
args:
|
||||||
creates: /etc/ssh/ssh_host_ed25519_key
|
creates: /etc/ssh/ssh_host_ed25519_key
|
||||||
when: ansible_facts['os_family'] == "Debian"
|
when: ansible_facts['os_family'] == "Debian"
|
||||||
|
|
|
||||||
15
ansible/roles/caddy/templates/Caddyfile-uisp.vntx.net.j2
Normal file
15
ansible/roles/caddy/templates/Caddyfile-uisp.vntx.net.j2
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
uisp.vntx.net {
|
||||||
|
header {
|
||||||
|
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||||
|
}
|
||||||
|
|
||||||
|
reverse_proxy https://localhost:8443 {
|
||||||
|
transport http {
|
||||||
|
tls_insecure_skip_verify
|
||||||
|
}
|
||||||
|
header_up Host {host}
|
||||||
|
header_up X-Forwarded-Host {host}
|
||||||
|
header_up X-Real-IP {remote_host}
|
||||||
|
header_up X-Forwarded-Proto {scheme}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -105,7 +105,7 @@
|
||||||
|
|
||||||
- name: Download UISP installer script
|
- name: Download UISP installer script
|
||||||
ansible.builtin.get_url:
|
ansible.builtin.get_url:
|
||||||
url: https://getuisp.com/install.sh
|
url: https://uisp.ui.com/install
|
||||||
dest: "{{ uisp_app_dir }}/update.sh"
|
dest: "{{ uisp_app_dir }}/update.sh"
|
||||||
owner: "{{ uisp_user }}"
|
owner: "{{ uisp_user }}"
|
||||||
group: root
|
group: root
|
||||||
|
|
@ -119,9 +119,11 @@
|
||||||
failed_when: false
|
failed_when: false
|
||||||
|
|
||||||
- name: Run UISP installer (first install only — skips existing)
|
- name: Run UISP installer (first install only — skips existing)
|
||||||
ansible.builtin.command: "{{ uisp_app_dir }}/update.sh"
|
ansible.builtin.command: "{{ uisp_app_dir }}/update.sh --update"
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ uisp_user }}"
|
become_user: "{{ uisp_user }}"
|
||||||
|
environment:
|
||||||
|
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
when:
|
when:
|
||||||
- not uisp_postgres_container.exists | default(false)
|
- not uisp_postgres_container.exists | default(false)
|
||||||
register: uisp_install
|
register: uisp_install
|
||||||
|
|
@ -131,7 +133,7 @@
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
dest: /etc/cron.d/unms-update
|
dest: /etc/cron.d/unms-update
|
||||||
content: |
|
content: |
|
||||||
* * * * * {{ uisp_user }} {{ uisp_app_dir }}/update.sh --cron > /dev/null 2>&1 || true
|
* * * * * {{ uisp_user }} {{ uisp_app_dir }}/update.sh --update > /dev/null 2>&1 || true
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: '0644'
|
mode: '0644'
|
||||||
|
|
|
||||||
34
tofu/.terraform.lock.hcl
generated
34
tofu/.terraform.lock.hcl
generated
|
|
@ -1,6 +1,40 @@
|
||||||
# This file is maintained automatically by "tofu init".
|
# This file is maintained automatically by "tofu init".
|
||||||
# Manual edits may be lost in future updates.
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
|
provider "registry.opentofu.org/bpg/proxmox" {
|
||||||
|
version = "0.110.0"
|
||||||
|
constraints = "~> 0.73"
|
||||||
|
hashes = [
|
||||||
|
"h1:CmD2DUi0wm0QrmOo0+y9AWo0IHVnbBusJyXZUfJygog=",
|
||||||
|
"h1:GyRZ1NI0nZD0MRsL2fwzkM4js4wZMPrSS54culEoVL8=",
|
||||||
|
"h1:Lt4c3HAwfiLkZR6d4VGs39DbFJUPmAYuUsZWlrtGc7E=",
|
||||||
|
"h1:NTgKnVpERB79Njen2hi8qs4lqo/jAh65ossyHZ8vLsc=",
|
||||||
|
"h1:ONmlUxolb7Wsvw+uXJHat9qqoO2k4oB1pSX3jHdtc8c=",
|
||||||
|
"h1:Por3tFR3Xlup/nvDNI/NCc7bCgRJotcYOgBYOCbWtos=",
|
||||||
|
"h1:Vt35/l/0+/HBaFrZGKt3dlhstxaUJz77yZFHPHdjnjg=",
|
||||||
|
"h1:WWArX57beGP4K7BA+H8WRrxZTMNixQI2ad++K8P1JCo=",
|
||||||
|
"h1:biwuaVoTqlXMFxtjSJ7Pz3WgYXRRp/KsloLvK3SB2+c=",
|
||||||
|
"h1:eCQKW6guUjlUU06MKgGFgIuJRBlSmZJvsQEe8BpNAtg=",
|
||||||
|
"h1:qqL9hKHlFnfwxJJ0gi10gwkUCAnMdfiv3qt2fx+DKag=",
|
||||||
|
"h1:wz47cguCgZsPR+S7BC3F2FPu3NhMJ6vp/K0mCE7bswE=",
|
||||||
|
"h1:yWBV4ZnuKV4TwR32cqKj6+dkNf5cIbB06fxKOopM6ZI=",
|
||||||
|
"zh:208b983701f3dc1d1028d6bd6830453c5b778226899de97207317b140e56083e",
|
||||||
|
"zh:21d22ee1082745e309be59f690ca8fc63374b59d396c314905fba5ed13f7159c",
|
||||||
|
"zh:28523eee5fc04df414f67175bfe14260946d86be5a6fd1e1b124be18639b7545",
|
||||||
|
"zh:2b863781982476ed24d05cec19c23c8dc3894714c3e2f6571f489c297e3ed12a",
|
||||||
|
"zh:3bbeb3cbb705245d2084769c0612099ea267bc45d0f61d5d21604a1e8d341eae",
|
||||||
|
"zh:94706cacd457a15120ce7345cab3a7274714f12dc80150d468e80abe0bac867d",
|
||||||
|
"zh:9976da036955ad9b3cbb0c2a710d799d7b91a2d192f14050716b90c6493a35be",
|
||||||
|
"zh:ac30d314e03cebe281c5da1f7963c8ded3d470fb4ef5a0b9086c08d574f35b91",
|
||||||
|
"zh:c2f27ffbd83614d2507a948c56f0f5b4b1ecdc5654d65f68f2929ab4dbdf5d7b",
|
||||||
|
"zh:d9126e674744127976aa365b3ce2f8073f206dea945fc028a89d293bcbd94dab",
|
||||||
|
"zh:ecf37aca9a909ac1b9e9bd2e3cd3330dc8f5e666fde5dc436e520c19bf5eee55",
|
||||||
|
"zh:f26e0763dbe6a6b2195c94b44696f2110f7f55433dc142839be16b9697fa5597",
|
||||||
|
"zh:f3e30cce3165227f3417ab4497af873bae2a459be1adbb6196595ee1ca8ad6ae",
|
||||||
|
"zh:f4b2edd80b4c34917942401f9e4e7fb1cc5b803e7a12dc1dba7bbf834a5c7eb0",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||||
version = "5.19.1"
|
version = "5.19.1"
|
||||||
constraints = "~> 5.0"
|
constraints = "~> 5.0"
|
||||||
|
|
|
||||||
11
tofu/main.tf
11
tofu/main.tf
|
|
@ -8,6 +8,10 @@ terraform {
|
||||||
source = "cloudflare/cloudflare"
|
source = "cloudflare/cloudflare"
|
||||||
version = "~> 5.0"
|
version = "~> 5.0"
|
||||||
}
|
}
|
||||||
|
proxmox = {
|
||||||
|
source = "bpg/proxmox"
|
||||||
|
version = "~> 0.73"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -18,3 +22,10 @@ provider "porkbun" {
|
||||||
provider "cloudflare" {
|
provider "cloudflare" {
|
||||||
# Credentials via CLOUDFLARE_API_TOKEN env var
|
# Credentials via CLOUDFLARE_API_TOKEN env var
|
||||||
}
|
}
|
||||||
|
|
||||||
|
provider "proxmox" {
|
||||||
|
endpoint = "https://10.0.0.2:8006"
|
||||||
|
username = "root@pam"
|
||||||
|
password = var.proxmox_password
|
||||||
|
insecure = true
|
||||||
|
}
|
||||||
|
|
|
||||||
65
tofu/proxmox.tf
Normal file
65
tofu/proxmox.tf
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
# NixOS resolver VM — Unbound DNS resolver on Proxmox
|
||||||
|
# Template (VMID 9010) must exist first; built via: ansible-playbook playbook.yml --tags template
|
||||||
|
|
||||||
|
locals {
|
||||||
|
nixos_ssh_keys = trimspace(<<-EOT
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHLyVSEEAEbGZZqwPwEup0XrlTpu3x3iF9ExvvQPA4xN
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOzrDMNn3nINGdIogzRxY05fkn05LSYi98BGW1Bz5yXD
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIER/8suIKcrT3a/NZHjvOpRosPC5uX4kcznIJHt/98qj
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEEKtgXwoW8HZGqC+KJok9iNpI/lK4glvoryL4Ng/AL+
|
||||||
|
EOT
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "proxmox_virtual_environment_vm" "nixos_resolver" {
|
||||||
|
node_name = "vm2-380"
|
||||||
|
name = "nixos-resolver1"
|
||||||
|
vm_id = 110
|
||||||
|
|
||||||
|
clone {
|
||||||
|
vm_id = 9010
|
||||||
|
full = true
|
||||||
|
}
|
||||||
|
|
||||||
|
cpu {
|
||||||
|
cores = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
memory {
|
||||||
|
dedicated = 4096
|
||||||
|
}
|
||||||
|
|
||||||
|
disk {
|
||||||
|
datastore_id = "local-lvm"
|
||||||
|
interface = "scsi0"
|
||||||
|
size = 64
|
||||||
|
}
|
||||||
|
|
||||||
|
network_device {
|
||||||
|
bridge = "vmbr0"
|
||||||
|
}
|
||||||
|
|
||||||
|
initialization {
|
||||||
|
datastore_id = "local-lvm"
|
||||||
|
|
||||||
|
ip_config {
|
||||||
|
ipv4 {
|
||||||
|
address = "10.0.0.30/24"
|
||||||
|
gateway = "10.0.0.254"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dns {
|
||||||
|
servers = ["9.9.9.9"]
|
||||||
|
}
|
||||||
|
|
||||||
|
user_account {
|
||||||
|
username = "root"
|
||||||
|
keys = [local.nixos_ssh_keys]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
agent {
|
||||||
|
enabled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
5
tofu/variables.tf
Normal file
5
tofu/variables.tf
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
variable "proxmox_password" {
|
||||||
|
description = "Proxmox API password (set via TF_VAR_proxmox_password env var)"
|
||||||
|
type = string
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue