Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

infra.provisioning

21 options

infra.provisioning.pveInstallerAnswers

infra.provisioning.pveInstallerAnswers.bindAddress

IP the answer service binds to. Defaults to loopback; host configs (netcore) set this to the LAN-facing IP so PVE/PBS installers can fetch directly.

Type: string

Default:

"127.0.0.1"

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.enable

Whether to enable PVE auto-install answer-file HTTP server.

Type: boolean

Default:

false

Example:

true

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts

List of PVE/PBS hosts the server has answers for. Each entry must have a matching SOPS entry at services/pve-installer-answers/passwords/<hostname> populated before deploy — sops-nix activation fails closed otherwise.

Type: list of (submodule)

Default:

[ ]

Example:

[{
  hostname = "pve-alpha";
  productType = "pve";
  mac = "52:54:00:12:34:56";
  ip = "198.51.100.30";
  cidr = "198.51.100.30/24";
  domain = "example.lan";
}]

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.cidr

CIDR notation <ip>/<prefix> for the management network. E.g., “192.0.2.99/24”.

Type: string

Default: none (required when its feature is enabled)

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.country

Two-letter country code written to the answer file’s [global] section; the installer derives mirror and locale defaults from it.

Type: string

Default:

"us"

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.dns

DNS server (the fleet’s internal DNS by default). Must be non-null for every declared host (asserted).

Type: null or string

Default:

lib.head config.fleet.network.internal_resolvers

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.domain

DNS domain used to build the FQDN.

Type: string

Default: none (required when its feature is enabled)

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.filesystem

Root filesystem for the install.

Type: one of "ext4", "xfs", "zfs (raid0)", "zfs (raid1)", "zfs (raid10)", "zfs (raidz-1)", "zfs (raidz-2)", "zfs (raidz-3)", "btrfs (raid0)", "btrfs (raid1)", "btrfs (raid10)"

Default:

"ext4"

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.firstBootScript

Shell script body executed once at the host’s first boot after install. Served at GET /first-boot/; the installer (via the [first-boot] section in answer.toml) downloads the script body, chmods it 0700, executes it once as root, then deletes it.

Empty (default) means no [first-boot] section is emitted in this host’s answer.toml and the GET endpoint returns 404 for this hostname.

Typical use: install + enable a systemd unit that runs growpart + pvresize + lvresize on every boot, so disk resizes (via terranix’s useDeploySizes = false flip) are picked up automatically without operator intervention.

Type: string

Default:

""

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.gateway

Default gateway (the fleet’s internal gateway by default). Must be non-null for every declared host (asserted).

Type: null or string

Default:

config.fleet.network.gateway

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.hostname

Short hostname; combined with domain for FQDN. ALSO used as the lookup key for the root-password SOPS entry at services/pve-installer-answers/passwords/<hostname>.

Type: string

Default: none (required when its feature is enabled)

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.installDisk

Block device to install onto. XCP-ng VMs use xvda; PVE-on- metal would be sda or nvme0n1. Must match what the kernel sees at install time — wrong device aborts the installer with “disk in ‘disk-selection’ not found”.

Type: string

Default:

"xvda"

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.ip

Management IPv4 address (no CIDR suffix).

Type: string

Default: none (required when its feature is enabled)

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.keyboard

Keyboard layout code written to the answer file’s [global] section (Proxmox installer layout id, e.g. “en-us”, “de”).

Type: string

Default:

"en-us"

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.mac

MAC address of the install NIC, lowercase preferred (the matcher lowercases both sides). Substring-matched against the installer’s POSTed system_info JSON. Must be unique across hosts or the first match wins.

Type: string matching the pattern ^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$

Default: none (required when its feature is enabled)

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.mailto

Notification address baked into the answer file. Must be non-null for every declared host (asserted).

Type: null or string

Default:

"ops@${config.fleet.settings.domain.base}"

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.productType

Which Proxmox product the answer is for. Doesn’t affect the answer.toml schema today (all three share it), but kept explicit so future per-product divergences are trivial and so log lines say “matched (pbs)” not just “”.

Type: one of "pve", "pbs", "pmg"

Default: none (required when its feature is enabled)

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.rootSshKeys

List of authorized SSH keys for root on the freshly-installed PVE/PBS host. Typically a singleton with fleet.network.sysadmin_ssh_key.

Type: list of string

Default:

[ ]

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.hosts.*.timezone

Timezone written to the answer file’s [global] section (IANA name, e.g. “Europe/Madrid”).

Type: string

Default:

"UTC"

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.port

TCP port the answer service binds to.

Type: signed integer

Default:

8081

Declared by: nix/modules/infra/provisioning/pve-installer-answers


infra.provisioning.pveInstallerAnswers.publicUrl

Base URL the PVE installer uses to reach this server. Embedded into the [first-boot] url field in answer.toml so the installed host can fetch its per-host first-boot script at <publicUrl>/first-boot/<hostname>. Default matches an answers.<internal-domain> ingress on the serving host.

Type: null or string

Default:

"http://answers.${config.fleet.settings.domain.internal}"

Declared by: nix/modules/infra/provisioning/pve-installer-answers