@muhlba91/pulumi-proxmoxve
Version:
A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.
1,383 lines • 122 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
export interface ContainerLegacyClone {
/**
* The identifier for the target datastore.
*/
datastoreId?: pulumi.Input<string | undefined>;
/**
* When cloning, create a full copy of all disks. Set
* to `false` to create a linked clone. Linked clones require the source
* container to be a template on storage that supports copy-on-write
* (e.g. Ceph RBD) (defaults to `true`).
*/
full?: pulumi.Input<boolean | undefined>;
/**
* The name of the source node (leave blank, if
* equal to the `nodeName` argument).
*/
nodeName?: pulumi.Input<string | undefined>;
/**
* The identifier for the source container.
*/
vmId: pulumi.Input<number>;
}
export interface ContainerLegacyConsole {
/**
* Whether to enable the console device (defaults
* to `true`).
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* The number of available TTY (defaults to `2`).
*/
ttyCount?: pulumi.Input<number | undefined>;
/**
* The console mode (defaults to `tty`).
*/
type?: pulumi.Input<string | undefined>;
}
export interface ContainerLegacyCpu {
/**
* The CPU architecture (defaults to `amd64`).
*/
architecture?: pulumi.Input<string | undefined>;
/**
* The number of CPU cores (defaults to `1`).
*/
cores?: pulumi.Input<number | undefined>;
/**
* Limit of CPU usage. Value `0` indicates no limit (defaults to `0`).
*/
limit?: pulumi.Input<number | undefined>;
/**
* The CPU units (defaults to `1024`).
*/
units?: pulumi.Input<number | undefined>;
}
export interface ContainerLegacyDevicePassthrough {
/**
* Deny the container to write to the device (defaults to `false`).
*/
denyWrite?: pulumi.Input<boolean | undefined>;
/**
* Group ID to be assigned to the device node.
*/
gid?: pulumi.Input<number | undefined>;
/**
* Access mode to be set on the device node. Must be a
* 4-digit octal number.
*/
mode?: pulumi.Input<string | undefined>;
/**
* Device to pass through to the container (e.g. `/dev/sda`).
*/
path: pulumi.Input<string>;
/**
* User ID to be assigned to the device node.
*/
uid?: pulumi.Input<number | undefined>;
}
export interface ContainerLegacyDisk {
/**
* Explicitly enable or disable ACL support
*/
acl?: pulumi.Input<boolean | undefined>;
/**
* The Proxmox storage ID where the rootfs
* volume is created (defaults to `local`).
*/
datastoreId?: pulumi.Input<string | undefined>;
/**
* List of extra mount options.
*/
mountOptions?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* The in-datastore path to the disk image.
* Use this attribute for cross-resource references.
*/
pathInDatastore?: pulumi.Input<string | undefined>;
/**
* Enable user quotas for the container rootfs
*/
quota?: pulumi.Input<boolean | undefined>;
/**
* Will include this volume to a storage replica job
*/
replicate?: pulumi.Input<boolean | undefined>;
/**
* The size of the root filesystem in gigabytes (defaults
* to `4`). When set to 0 a directory or zfs/btrfs subvolume will be created.
* Requires `datastoreId` to be set.
*/
size?: pulumi.Input<number | undefined>;
}
export interface ContainerLegacyFeatures {
/**
* Whether the container supports FUSE mounts (defaults to `false`)
*/
fuse?: pulumi.Input<boolean | undefined>;
/**
* Whether the container supports `keyctl()` system call (defaults to `false`)
*/
keyctl?: pulumi.Input<boolean | undefined>;
/**
* Whether the container supports `mknod()` system call (defaults to `false`)
*/
mknod?: pulumi.Input<boolean | undefined>;
/**
* List of allowed mount types (`cifs` or `nfs`)
*/
mounts?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Whether the container is nested (defaults to `false`)
*/
nesting?: pulumi.Input<boolean | undefined>;
}
export interface ContainerLegacyIdmap {
/**
* Starting ID in the container namespace.
*/
containerId: pulumi.Input<number>;
/**
* Starting ID in the host namespace.
*/
hostId: pulumi.Input<number>;
/**
* Number of IDs to map (must be at least `1`).
*/
size: pulumi.Input<number>;
/**
* Mapping type (`uid` or `gid`).
*/
type: pulumi.Input<string>;
}
export interface ContainerLegacyInitialization {
/**
* The DNS configuration.
*/
dns?: pulumi.Input<inputs.ContainerLegacyInitializationDns | undefined>;
/**
* Command to run as init, optionally with arguments. It may start with an absolute path, relative path, or a binary in `$PATH`.
*/
entrypoint?: pulumi.Input<string | undefined>;
/**
* The hostname. Must be a valid DNS name.
*/
hostname?: pulumi.Input<string | undefined>;
/**
* The IP configuration (one block per network
* device).
*/
ipConfigs?: pulumi.Input<pulumi.Input<inputs.ContainerLegacyInitializationIpConfig>[] | undefined>;
/**
* The user account configuration.
*/
userAccount?: pulumi.Input<inputs.ContainerLegacyInitializationUserAccount | undefined>;
}
export interface ContainerLegacyInitializationDns {
/**
* The DNS search domain.
*/
domain?: pulumi.Input<string | undefined>;
/**
* The DNS server.
* The `server` attribute is deprecated and will be removed in a future release. Please use
* the `servers` attribute instead.
*
* @deprecated The `server` attribute is deprecated and will be removed in a future release. Please use the `servers` attribute instead.
*/
server?: pulumi.Input<string | undefined>;
/**
* The list of DNS servers.
*/
servers?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
export interface ContainerLegacyInitializationIpConfig {
/**
* The IPv4 configuration.
*/
ipv4?: pulumi.Input<inputs.ContainerLegacyInitializationIpConfigIpv4 | undefined>;
/**
* The IPv6 configuration.
*/
ipv6?: pulumi.Input<inputs.ContainerLegacyInitializationIpConfigIpv6 | undefined>;
}
export interface ContainerLegacyInitializationIpConfigIpv4 {
/**
* The IPv4 address in CIDR notation
* (e.g. 192.168.2.2/24). Alternatively, set this to `dhcp` for
* autodiscovery.
*/
address?: pulumi.Input<string | undefined>;
/**
* The IPv4 gateway (must be omitted
* when `dhcp` is used as the address).
*/
gateway?: pulumi.Input<string | undefined>;
}
export interface ContainerLegacyInitializationIpConfigIpv6 {
/**
* The IPv6 address in CIDR notation
* (e.g. fd1c::7334/64). Alternatively, set this
* to `dhcp` for DHCPv6, or `auto` for SLAAC.
*/
address?: pulumi.Input<string | undefined>;
/**
* The IPv6 gateway (must be omitted
* when `dhcp` or `auto` are used as the address).
*/
gateway?: pulumi.Input<string | undefined>;
}
export interface ContainerLegacyInitializationUserAccount {
/**
* The SSH keys for the root account.
*/
keys?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* The password for the root account.
*/
password?: pulumi.Input<string | undefined>;
}
export interface ContainerLegacyMemory {
/**
* The dedicated memory in megabytes (defaults
* to `512`).
*/
dedicated?: pulumi.Input<number | undefined>;
/**
* The swap size in megabytes (defaults to `0`).
*/
swap?: pulumi.Input<number | undefined>;
}
export interface ContainerLegacyMountPoint {
/**
* Explicitly enable or disable ACL support.
*/
acl?: pulumi.Input<boolean | undefined>;
/**
* Whether to include the mount point in backups (only
* used for volume mount points, defaults to `false`).
*/
backup?: pulumi.Input<boolean | undefined>;
/**
* List of extra mount options.
*/
mountOptions?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Path to the mount point as seen from inside the
* container.
*/
path: pulumi.Input<string>;
/**
* The in-datastore path to the mount point volume.
* Use this attribute for cross-resource references instead of `volume`.
*/
pathInDatastore?: pulumi.Input<string | undefined>;
/**
* Enable user quotas inside the container (not supported
* with ZFS subvolumes).
*/
quota?: pulumi.Input<boolean | undefined>;
/**
* Read-only mount point.
*/
readOnly?: pulumi.Input<boolean | undefined>;
/**
* Will include this volume to a storage replica job.
*/
replicate?: pulumi.Input<boolean | undefined>;
/**
* Mark this non-volume mount point as available on all
* nodes.
*/
shared?: pulumi.Input<boolean | undefined>;
/**
* Volume size (only for volume mount points).
* Can be specified with a unit suffix (e.g. `10G`).
*/
size?: pulumi.Input<string | undefined>;
/**
* Volume reference. Accepts a Proxmox storage ID
* (e.g. `local-lvm`) to allocate a new volume, a full PVE volume ID
* (e.g. `local-lvm:subvol-108-disk-101`) to mount an existing volume,
* or an absolute host path (e.g. `/mnt/bindmounts/shared`) to
* bind-mount a host directory.
*/
volume: pulumi.Input<string>;
}
export interface ContainerLegacyNetworkInterface {
/**
* The name of the network bridge (defaults
* to `vmbr0`).
*/
bridge?: pulumi.Input<string | undefined>;
/**
* Whether to enable the network device (defaults
* to `true`).
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* Whether this interface's firewall rules should be
* used (defaults to `false`).
*/
firewall?: pulumi.Input<boolean | undefined>;
/**
* Whether the host runs DHCP on this interface's
* behalf (defaults to `false`). Requires Proxmox VE 9.1+. Required for
* application containers that do not include a DHCP client.
*/
hostManaged?: pulumi.Input<boolean | undefined>;
/**
* The MAC address.
*/
macAddress?: pulumi.Input<string | undefined>;
/**
* Maximum transfer unit of the interface. Cannot be
* larger than the bridge's MTU.
*/
mtu?: pulumi.Input<number | undefined>;
/**
* The network interface name.
*/
name: pulumi.Input<string>;
/**
* The rate limit in megabytes per second.
*/
rateLimit?: pulumi.Input<number | undefined>;
/**
* The VLAN identifier.
*/
vlanId?: pulumi.Input<number | undefined>;
}
export interface ContainerLegacyOperatingSystem {
/**
* The identifier for an OS template file.
* The ID format is `<datastore_id>:<content_type>/<file_name>`, for example `local:iso/jammy-server-cloudimg-amd64.tar.gz`.
* Can be also taken from `proxmoxve.download.FileLegacy` resource, or from the output of `pvesm list <storage>`.
*/
templateFileId: pulumi.Input<string>;
/**
* The type (defaults to `unmanaged`).
*/
type?: pulumi.Input<string | undefined>;
}
export interface ContainerLegacyStartup {
/**
* A non-negative number defining the delay in
* seconds before the next container is shut down.
*/
downDelay?: pulumi.Input<number | undefined>;
/**
* A non-negative number defining the general startup
* order.
*/
order?: pulumi.Input<number | undefined>;
/**
* A non-negative number defining the delay in
* seconds before the next container is started.
*/
upDelay?: pulumi.Input<number | undefined>;
}
export interface ContainerLegacyWaitForIp {
/**
* Wait for at least one IPv4 address (non-loopback, non-link-local) (defaults to `false`).
*/
ipv4?: pulumi.Input<boolean | undefined>;
/**
* Wait for at least one IPv6 address (non-loopback, non-link-local) (defaults to `false`).
*
* When `waitForIp` is not specified or both `ipv4` and `ipv6` are `false`, the provider waits for any valid global unicast address (IPv4 or IPv6). In dual-stack networks where DHCPv6 responds faster, this may result in only IPv6 addresses being available. Set `ipv4 = true` to ensure IPv4 address availability.
*/
ipv6?: pulumi.Input<boolean | undefined>;
}
export interface FileLegacySourceFile {
/**
* Whether the source file has changed since the last run
*/
changed?: pulumi.Input<boolean | undefined>;
/**
* The SHA256 checksum of the source file.
*/
checksum?: pulumi.Input<string | undefined>;
/**
* The file name to use instead of the source file
* name. Useful when the source file does not have a valid file extension,
* for example when the source file is a URL referencing a `.qcow2` image.
*/
fileName?: pulumi.Input<string | undefined>;
/**
* Whether to skip the TLS verification step for
* HTTPS sources (defaults to `false`).
*/
insecure?: pulumi.Input<boolean | undefined>;
/**
* The minimum required TLS version for HTTPS
* sources. "Supported values: `1.0|1.1|1.2|1.3` (defaults to `1.3`).
*/
minTls?: pulumi.Input<string | undefined>;
/**
* A path to a local file or a URL.
*/
path: pulumi.Input<string>;
}
export interface FileLegacySourceRaw {
/**
* The raw data.
*/
data: pulumi.Input<string>;
/**
* The file name.
*/
fileName: pulumi.Input<string>;
/**
* The number of bytes to resize the file to.
*/
resize?: pulumi.Input<number | undefined>;
}
export interface GetContainersLegacyFilter {
/**
* Name of the container attribute to filter on. One of [`name`, `template`, `status`, `nodeName`]
*/
name: string;
/**
* Treat values as regex patterns
*/
regex?: boolean;
/**
* List of values to pass the filter. Container's attribute should match at least one value in the list.
*/
values: string[];
}
export interface GetContainersLegacyFilterArgs {
/**
* Name of the container attribute to filter on. One of [`name`, `template`, `status`, `nodeName`]
*/
name: pulumi.Input<string>;
/**
* Treat values as regex patterns
*/
regex?: pulumi.Input<boolean | undefined>;
/**
* List of values to pass the filter. Container's attribute should match at least one value in the list.
*/
values: pulumi.Input<pulumi.Input<string>[]>;
}
export interface GetDatastoresDatastore {
/**
* Whether the store is active.
*/
active?: boolean;
/**
* Allowed store content types.
*/
contentTypes?: string[];
/**
* Whether the store is enabled.
*/
enabled?: boolean;
/**
* The ID of the store.
*/
id: string;
/**
* The name of the node the store is on.
*/
nodeName: string;
/**
* Shared flag from store configuration.
*/
shared?: boolean;
/**
* Available store space in bytes.
*/
spaceAvailable?: number;
/**
* Total store space in bytes.
*/
spaceTotal?: number;
/**
* Used store space in bytes.
*/
spaceUsed?: number;
/**
* Used fraction (used/total).
*/
spaceUsedFraction?: number;
/**
* Store type.
*/
type: string;
}
export interface GetDatastoresDatastoreArgs {
/**
* Whether the store is active.
*/
active?: pulumi.Input<boolean | undefined>;
/**
* Allowed store content types.
*/
contentTypes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Whether the store is enabled.
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* The ID of the store.
*/
id: pulumi.Input<string>;
/**
* The name of the node the store is on.
*/
nodeName: pulumi.Input<string>;
/**
* Shared flag from store configuration.
*/
shared?: pulumi.Input<boolean | undefined>;
/**
* Available store space in bytes.
*/
spaceAvailable?: pulumi.Input<number | undefined>;
/**
* Total store space in bytes.
*/
spaceTotal?: pulumi.Input<number | undefined>;
/**
* Used store space in bytes.
*/
spaceUsed?: pulumi.Input<number | undefined>;
/**
* Used fraction (used/total).
*/
spaceUsedFraction?: pulumi.Input<number | undefined>;
/**
* Store type.
*/
type: pulumi.Input<string>;
}
export interface GetDatastoresFilters {
/**
* Only list stores with the given content types.
*/
contentTypes?: string[];
/**
* Only list stores with the given ID.
*/
id?: string;
/**
* If `target` is different to `nodeName`, then only lists shared stores which content is accessible on this node and the specified `target` node.
*/
target?: string;
}
export interface GetDatastoresFiltersArgs {
/**
* Only list stores with the given content types.
*/
contentTypes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Only list stores with the given ID.
*/
id?: pulumi.Input<string | undefined>;
/**
* If `target` is different to `nodeName`, then only lists shared stores which content is accessible on this node and the specified `target` node.
*/
target?: pulumi.Input<string | undefined>;
}
export interface GetDatastoresLegacyDatastore {
/**
* Whether the store is active.
*/
active?: boolean;
/**
* Allowed store content types.
*/
contentTypes?: string[];
/**
* Whether the store is enabled.
*/
enabled?: boolean;
/**
* The ID of the store.
*/
id: string;
/**
* The name of the node the store is on.
*/
nodeName: string;
/**
* Shared flag from store configuration.
*/
shared?: boolean;
/**
* Available store space in bytes.
*/
spaceAvailable?: number;
/**
* Total store space in bytes.
*/
spaceTotal?: number;
/**
* Used store space in bytes.
*/
spaceUsed?: number;
/**
* Used fraction (used/total).
*/
spaceUsedFraction?: number;
/**
* Store type.
*/
type: string;
}
export interface GetDatastoresLegacyDatastoreArgs {
/**
* Whether the store is active.
*/
active?: pulumi.Input<boolean | undefined>;
/**
* Allowed store content types.
*/
contentTypes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Whether the store is enabled.
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* The ID of the store.
*/
id: pulumi.Input<string>;
/**
* The name of the node the store is on.
*/
nodeName: pulumi.Input<string>;
/**
* Shared flag from store configuration.
*/
shared?: pulumi.Input<boolean | undefined>;
/**
* Available store space in bytes.
*/
spaceAvailable?: pulumi.Input<number | undefined>;
/**
* Total store space in bytes.
*/
spaceTotal?: pulumi.Input<number | undefined>;
/**
* Used store space in bytes.
*/
spaceUsed?: pulumi.Input<number | undefined>;
/**
* Used fraction (used/total).
*/
spaceUsedFraction?: pulumi.Input<number | undefined>;
/**
* Store type.
*/
type: pulumi.Input<string>;
}
export interface GetDatastoresLegacyFilters {
/**
* Only list stores with the given content types.
*/
contentTypes?: string[];
/**
* Only list stores with the given ID.
*/
id?: string;
/**
* If `target` is different to `nodeName`, then only lists shared stores which content is accessible on this node and the specified `target` node.
*/
target?: string;
}
export interface GetDatastoresLegacyFiltersArgs {
/**
* Only list stores with the given content types.
*/
contentTypes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Only list stores with the given ID.
*/
id?: pulumi.Input<string | undefined>;
/**
* If `target` is different to `nodeName`, then only lists shared stores which content is accessible on this node and the specified `target` node.
*/
target?: pulumi.Input<string | undefined>;
}
export interface GetVm2LegacyTimeouts {
/**
* A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.
*/
read?: string;
}
export interface GetVm2LegacyTimeoutsArgs {
/**
* A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.
*/
read?: pulumi.Input<string | undefined>;
}
export interface GetVmTimeouts {
/**
* A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.
*/
read?: string;
}
export interface GetVmTimeoutsArgs {
/**
* A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.
*/
read?: pulumi.Input<string | undefined>;
}
export interface GetVmsLegacyFilter {
/**
* Name of the VM attribute to filter on. One of [`name`, `template`, `status`, `nodeName`]
*/
name: string;
/**
* Treat values as regex patterns
*/
regex?: boolean;
/**
* List of values to pass the filter. VM's attribute should match at least one value in the list.
*/
values: string[];
}
export interface GetVmsLegacyFilterArgs {
/**
* Name of the VM attribute to filter on. One of [`name`, `template`, `status`, `nodeName`]
*/
name: pulumi.Input<string>;
/**
* Treat values as regex patterns
*/
regex?: pulumi.Input<boolean | undefined>;
/**
* List of values to pass the filter. VM's attribute should match at least one value in the list.
*/
values: pulumi.Input<pulumi.Input<string>[]>;
}
export interface GroupLegacyAcl {
/**
* The path.
*/
path: pulumi.Input<string>;
/**
* Whether to propagate to child paths.
*/
propagate?: pulumi.Input<boolean | undefined>;
/**
* The role identifier.
*/
roleId: pulumi.Input<string>;
}
export interface HostsLegacyEntry {
/**
* The IP address.
*/
address: pulumi.Input<string>;
/**
* The hostnames.
*/
hostnames: pulumi.Input<pulumi.Input<string>[]>;
}
export interface PoolLegacyMember {
/**
* The datastore identifier.
*/
datastoreId?: pulumi.Input<string | undefined>;
/**
* The member identifier.
*/
id?: pulumi.Input<string | undefined>;
/**
* The node name.
*/
nodeName?: pulumi.Input<string | undefined>;
/**
* The member type.
*/
type?: pulumi.Input<string | undefined>;
/**
* The virtual machine identifier.
*/
vmId?: pulumi.Input<number | undefined>;
}
export interface ProviderSsh {
/**
* Whether to use the SSH agent for authentication. Takes precedence over the `privateKey` and `password` fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or `false` if not set.
*/
agent?: pulumi.Input<boolean | undefined>;
/**
* Whether to enable SSH agent forwarding. Defaults to the value of the `PROXMOX_VE_SSH_AGENT_FORWARDING` environment variable, or `false` if not set.
*/
agentForwarding?: pulumi.Input<boolean | undefined>;
/**
* The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.
*/
agentSocket?: pulumi.Input<string | undefined>;
/**
* The method used to resolve node IP addresses for SSH connections. Set to `dns` to skip the Proxmox API-based resolution and use local DNS instead. DNS resolution prefers IPv4 but falls back to IPv6 if no IPv4 addresses are available. Useful in multi-subnet environments where the API may return an inaccessible IP. Defaults to `api`.
*/
nodeAddressSource?: pulumi.Input<string | undefined>;
/**
* Overrides for SSH connection configuration for a Proxmox VE node.
*/
nodes?: pulumi.Input<pulumi.Input<inputs.ProviderSshNode>[] | undefined>;
/**
* The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block when using username/password authentication. Default has no effect when using API token authentication, as there is no password to inherit. Can also be sourced from `PROXMOX_VE_SSH_PASSWORD`.
*/
password?: pulumi.Input<string | undefined>;
/**
* The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.
*/
privateKey?: pulumi.Input<string | undefined>;
/**
* The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.
*/
socks5Password?: pulumi.Input<string | undefined>;
/**
* The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.
*/
socks5Server?: pulumi.Input<string | undefined>;
/**
* The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.
*/
socks5Username?: pulumi.Input<string | undefined>;
/**
* The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` block.
*/
username?: pulumi.Input<string | undefined>;
}
export interface ProviderSshNode {
/**
* The address of the Proxmox VE node.
*/
address: pulumi.Input<string>;
/**
* The name of the Proxmox VE node.
*/
name: pulumi.Input<string>;
/**
* The port of the Proxmox VE node.
*/
port?: pulumi.Input<number | undefined>;
}
export interface UserLegacyAcl {
/**
* The path.
*/
path: pulumi.Input<string>;
/**
* Whether to propagate to child paths.
*/
propagate?: pulumi.Input<boolean | undefined>;
/**
* The role identifier.
*/
roleId: pulumi.Input<string>;
}
export interface Vm2LegacyCdrom {
/**
* The file ID of the CD-ROM, or `cdrom|none`. Defaults to `cdrom` (i.e. empty CD-ROM drive — `cdrom` is PVE's literal "no media inserted" storage path). Use `none` to leave the CD-ROM unplugged, or a storage path like `local:iso/debian.iso` to insert an image.
*/
fileId?: pulumi.Input<string | undefined>;
}
export interface Vm2LegacyCpu {
/**
* The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based. For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.
*/
affinity?: pulumi.Input<string | undefined>;
/**
* The CPU architecture `<aarch64 | x86_64>` (defaults to the host). Setting `architecture` is only allowed for `root@pam` authenticated user.
*/
architecture?: pulumi.Input<string | undefined>;
/**
* The number of CPU cores per socket (PVE defaults to `1` when unset).
*/
cores?: pulumi.Input<number | undefined>;
/**
* Set of additional CPU flags. Use `+FLAG` to enable, `-FLAG` to disable a flag. Custom CPU models can specify any flag supported by QEMU/KVM, VM-specific flags must be from the following set for security reasons: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.
*/
flags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Limit of CPU usage. `0` means no limit (PVE default).
*/
limit?: pulumi.Input<number | undefined>;
/**
* Enable NUMA topology emulation. Matches the PVE Processors → **Enable NUMA** checkbox.
*/
numa?: pulumi.Input<boolean | undefined>;
/**
* The number of CPU sockets (PVE defaults to `1` when unset).
*/
sockets?: pulumi.Input<number | undefined>;
/**
* Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher. See [the PVE admin guide](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for the full list of supported types.
*/
type?: pulumi.Input<string | undefined>;
/**
* CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs. On cgroup v2 `0` is a valid value meaning disable CPU share weighting.
*/
units?: pulumi.Input<number | undefined>;
/**
* Number of vCPUs started with the VM, bounded by `cores * sockets`. Matches the PVE Processors → **VCPUs** field. Leave unset to start with `cores * sockets` vCPUs. Requires PVE hotplug feature enabled to change at runtime.
*/
vcpus?: pulumi.Input<number | undefined>;
}
export interface Vm2LegacyRng {
/**
* Maximum bytes of entropy allowed to get injected into the guest every period.
*/
maxBytes?: pulumi.Input<number | undefined>;
/**
* Period in milliseconds to limit entropy injection to the guest.
*/
period?: pulumi.Input<number | undefined>;
/**
* The file on the host to gather entropy from. In most cases, `/dev/urandom` should be preferred over `/dev/random` to avoid entropy-starvation issues on the host.
*/
source?: pulumi.Input<string | undefined>;
}
export interface Vm2LegacyTimeouts {
/**
* A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
*/
create?: pulumi.Input<string | undefined>;
/**
* A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
*/
delete?: pulumi.Input<string | undefined>;
/**
* A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.
*/
read?: pulumi.Input<string | undefined>;
/**
* A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
*/
update?: pulumi.Input<string | undefined>;
}
export interface Vm2LegacyVga {
/**
* Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Currently only `vnc` is available. Migration with VNC clipboard is not supported by Proxmox.
*/
clipboard?: pulumi.Input<string | undefined>;
/**
* The VGA memory in megabytes (4-512 MB). Has no effect with serial display.
*/
memory?: pulumi.Input<number | undefined>;
/**
* The VGA type (defaults to `std`).
*/
type?: pulumi.Input<string | undefined>;
}
export interface VmCdrom {
/**
* The file ID of the CD-ROM, or `cdrom|none`. Defaults to `cdrom` (i.e. empty CD-ROM drive — `cdrom` is PVE's literal "no media inserted" storage path). Use `none` to leave the CD-ROM unplugged, or a storage path like `local:iso/debian.iso` to insert an image.
*/
fileId?: pulumi.Input<string | undefined>;
}
export interface VmCpu {
/**
* The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based. For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.
*/
affinity?: pulumi.Input<string | undefined>;
/**
* The CPU architecture `<aarch64 | x86_64>` (defaults to the host). Setting `architecture` is only allowed for `root@pam` authenticated user.
*/
architecture?: pulumi.Input<string | undefined>;
/**
* The number of CPU cores per socket (PVE defaults to `1` when unset).
*/
cores?: pulumi.Input<number | undefined>;
/**
* Set of additional CPU flags. Use `+FLAG` to enable, `-FLAG` to disable a flag. Custom CPU models can specify any flag supported by QEMU/KVM, VM-specific flags must be from the following set for security reasons: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.
*/
flags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Limit of CPU usage. `0` means no limit (PVE default).
*/
limit?: pulumi.Input<number | undefined>;
/**
* Enable NUMA topology emulation. Matches the PVE Processors → **Enable NUMA** checkbox.
*/
numa?: pulumi.Input<boolean | undefined>;
/**
* The number of CPU sockets (PVE defaults to `1` when unset).
*/
sockets?: pulumi.Input<number | undefined>;
/**
* Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher. See [the PVE admin guide](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for the full list of supported types.
*/
type?: pulumi.Input<string | undefined>;
/**
* CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs. On cgroup v2 `0` is a valid value meaning disable CPU share weighting.
*/
units?: pulumi.Input<number | undefined>;
/**
* Number of vCPUs started with the VM, bounded by `cores * sockets`. Matches the PVE Processors → **VCPUs** field. Leave unset to start with `cores * sockets` vCPUs. Requires PVE hotplug feature enabled to change at runtime.
*/
vcpus?: pulumi.Input<number | undefined>;
}
export interface VmLegacyAgent {
/**
* Whether to enable the QEMU agent (defaults
* to `false`).
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* The maximum amount of time to wait for data from
* the QEMU agent to become available ( defaults to `15m`).
*/
timeout?: pulumi.Input<string | undefined>;
/**
* Whether to enable the FSTRIM feature in the QEMU agent
* (defaults to `false`).
*/
trim?: pulumi.Input<boolean | undefined>;
/**
* The QEMU agent interface type (defaults to `virtio`).
*/
type?: pulumi.Input<string | undefined>;
/**
* Configuration for waiting for specific IP address types when the VM starts.
*/
waitForIp?: pulumi.Input<inputs.VmLegacyAgentWaitForIp | undefined>;
}
export interface VmLegacyAgentWaitForIp {
/**
* Whether to disable waiting for the agent to report an IP address (defaults to `false`). Set to `true` to skip the IP lookup entirely, so the provider does not wait for the agent during `refresh` and at the end of `apply`. Useful when the guest agent is slow to start, not yet installed, or not running, to avoid blocking those operations. When disabled, `ipv4Addresses`, `ipv6Addresses`, and `networkInterfaceNames` are left empty.
*/
disabled?: pulumi.Input<boolean | undefined>;
/**
* Wait for at least one IPv4 address (non-loopback, non-link-local) (defaults to `false`).
*/
ipv4?: pulumi.Input<boolean | undefined>;
/**
* Wait for at least one IPv6 address (non-loopback, non-link-local) (defaults to `false`).
*
* When `waitForIp` is not specified or both `ipv4` and `ipv6` are `false` (and `disabled` is `false`), the provider waits for any valid global unicast address (IPv4 or IPv6). In dual-stack networks where DHCPv6 responds faster, this may result in only IPv6 addresses being available. Set `ipv4 = true` to ensure IPv4 address availability.
*/
ipv6?: pulumi.Input<boolean | undefined>;
}
export interface VmLegacyAmdSev {
/**
* Sets policy bit to allow Simultaneous Multi Threading (SMT)
* (Ignored unless for SEV-SNP) (defaults to `true`).
*/
allowSmt?: pulumi.Input<boolean | undefined>;
/**
* Add kernel hashes to guest firmware for measured linux kernel launch (defaults to `false`).
*/
kernelHashes?: pulumi.Input<boolean | undefined>;
/**
* Sets policy bit to disallow debugging of guest (defaults
* to `false`).
*/
noDebug?: pulumi.Input<boolean | undefined>;
/**
* Sets policy bit to disallow key sharing with other guests (Ignored for SEV-SNP) (defaults to `false`).
*
* The `amdSev` setting is only allowed for a `root@pam` authenticated user.
*/
noKeySharing?: pulumi.Input<boolean | undefined>;
/**
* Enable standard SEV with `std` or enable experimental SEV-ES with the `es` option or enable experimental SEV-SNP with the `snp` option (defaults to `std`).
*/
type?: pulumi.Input<string | undefined>;
}
export interface VmLegacyAudioDevice {
/**
* The device (defaults to `intel-hda`).
* - `AC97` - Intel 82801AA AC97 Audio.
* - `ich9-intel-hda` - Intel HD Audio Controller (ich9).
* - `intel-hda` - Intel HD Audio.
*/
device?: pulumi.Input<string | undefined>;
/**
* The driver (defaults to `spice`).
*/
driver?: pulumi.Input<string | undefined>;
/**
* Whether to enable the audio device (defaults
* to `true`).
*/
enabled?: pulumi.Input<boolean | undefined>;
}
export interface VmLegacyCdrom {
/**
* Whether to enable the CD-ROM drive (defaults
* to `false`). *Deprecated*. The attribute will be removed in the next version of the provider.
* Set `fileId` to `none` to leave the CD-ROM drive empty.
*
* @deprecated Remove this attribute's configuration as it is no longer used and the attribute will be removed in the next version of the provider. Set `fileId` to `none` to leave the CDROM drive empty.
*/
enabled?: pulumi.Input<boolean | undefined>;
/**
* A file ID for an ISO file (defaults to `cdrom` as
* in the physical drive). Use `none` to leave the CD-ROM drive empty.
*/
fileId?: pulumi.Input<string | undefined>;
/**
* A hardware interface to connect CD-ROM drive to (defaults to `ide3`).
* "Must be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. " +
* "Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.
*/
interface?: pulumi.Input<string | undefined>;
}
export interface VmLegacyClone {
/**
* The identifier for the target datastore.
*/
datastoreId?: pulumi.Input<string | undefined>;
/**
* Full or linked clone (defaults to `true`).
*/
full?: pulumi.Input<boolean | undefined>;
/**
* The name of the source node (leave blank, if
* equal to the `nodeName` argument).
*/
nodeName?: pulumi.Input<string | undefined>;
/**
* Number of retries in Proxmox for clone vm.
* Sometimes Proxmox errors with timeout when creating multiple clones at
* once.
*/
retries?: pulumi.Input<number | undefined>;
/**
* The identifier for the source VM.
*/
vmId: pulumi.Input<number>;
}
export interface VmLegacyCpu {
/**
* The CPU cores that are used to run the VM’s vCPU. The
* value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based.
* For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four
* CPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.
*/
affinity?: pulumi.Input<string | undefined>;
/**
* The CPU architecture (defaults to `x8664`).
*/
architecture?: pulumi.Input<string | undefined>;
/**
* The number of CPU cores (defaults to `1`).
*/
cores?: pulumi.Input<number | undefined>;
/**
* The CPU flags.
* - `+aes`/`-aes` - Activate AES instruction set for HW acceleration.
* - `+amd-no-ssb`/`-amd-no-ssb` - Notifies guest OS that host is not
* vulnerable for Spectre on AMD CPUs.
* - `+amd-ssbd`/`-amd-ssbd` - Improves Spectre mitigation performance with
* AMD CPUs, best used with "virt-ssbd".
* - `+hv-evmcs`/`-hv-evmcs` - Improve performance for nested
* virtualization (only supported on Intel CPUs).
* - `+hv-tlbflush`/`-hv-tlbflush` - Improve performance in overcommitted
* Windows guests (may lead to guest BSOD on old CPUs).
* - `+ibpb`/`-ibpb` - Allows improved Spectre mitigation on AMD CPUs.
* - `+md-clear`/`-md-clear` - Required to let the guest OS know if MDS is
* mitigated correctly.
* - `+pcid`/`-pcid` - Meltdown fix cost reduction on Westmere, Sandy- and
* Ivy Bridge Intel CPUs.
* - `+pdpe1gb`/`-pdpe1gb` - Allows guest OS to use 1 GB size pages, if
* host HW supports it.
* - `+spec-ctrl`/`-spec-ctrl` - Allows improved Spectre mitigation with
* Intel CPUs.
* - `+ssbd`/`-ssbd` - Protection for "Speculative Store Bypass" for Intel
* models.
* - `+virt-ssbd`/`-virt-ssbd` - Basis for "Speculative Store Bypass"
* protection for AMD models.
*/
flags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* The number of hotplugged vCPUs (defaults
* to `0`).
*/
hotplugged?: pulumi.Input<number | undefined>;
/**
* Limit of CPU usage, `0...128` (supports
* fractional values, e.g. `63.5`). (defaults to `0` -- no limit).
*/
limit?: pulumi.Input<number | undefined>;
/**
* Enable/disable NUMA. (default to `false`)
*/
numa?: pulumi.Input<boolean | undefined>;
/**
* The number of CPU sockets (defaults to `1`).
*/
sockets?: pulumi.Input<number | undefined>;
/**
* The emulated CPU type, it's recommended to
* use `x86-64-v2-AES` (defaults to `qemu64`).
*/
type?: pulumi.Input<string | undefined>;
/**
* The CPU units. PVE default is `1024` for cgroups v1 and `100` for cgroups v2.
*/
units?: pulumi.Input<number | undefined>;
}
export interface VmLegacyDisk {
/**
* The disk AIO mode (defaults to `ioUring`).
*/
aio?: pulumi.Input<string | undefined>;
/**
* Whether the drive should be included when making backups (defaults to `true`).
*/
backup?: pulumi.Input<boolean | undefined>;
/**
* The cache type (defaults to `none`).
*/
cache?: pulumi.Input<string | undefined>;
/**
* The identifier for the datastore to create
* the disk in (defaults to `local-lvm`).
*/
datastoreId?: pulumi.Input<string | undefined>;
/**
* Whether to pass discard/trim requests to the
* underlying storage. Supported values are `on`/`ignore` (defaults
* to `ignore`).
*/
discard?: pulumi.Input<string | undefined>;
/**
* The file format.
*/
fileFormat?: pulumi.Input<string | undefined>;
/**
* The file ID for a disk image when importing a disk into VM. The ID format is
* `<datastore_id>:<content_type>/<file_name>`, for example `local:iso/centos8.img`. Can be also taken from
* `proxmoxve.download.FileLegacy` resource. Prefer `importFrom` for uncompressed images.
* Use `fileId` when working with compressed cloud images (e.g., `.qcow2.xz`) that were downloaded
* with `contentType = "iso"` and `decompressionAlgorithm` set. See the
* Create a VM from a Cloud Image guide for examples.
*/
fileId?: pulumi.Input<string | undefined>;
/**
* The file ID for a disk image to import into VM. The image must be of `import` content type
* (uncompressed images only). The ID format is `<datastore_id>:import/<file_name>`, for example `local:import/centos8.qcow2`.
* Can be also taken from `proxmoxve.download.FileLegacy` resource. Note: compressed images downloaded with
* `decompressionAlgorithm` cannot use `importFrom`; use `fileId` instead.
*/
importFrom?: pulumi.Input<string | undefined>;
/**
* The disk interface for Proxmox, currently `scsi`,
* `sata` and `virtio` interfaces are supported. Append the disk index at
* the end, for example, `virtio0` for the first virtio disk, `virtio1` for
* the second, etc.
*/
interface: pulumi.Input<string>;
/**
* Whether to use iothreads for this disk (defaults
* to `false`).
*/
iothread?: pulumi.Input<boolean | undefined>;
/**
* The in-datastore path to the disk image.
* ***Experimental.***Use to attach another VM's disks,
* or (as root only) host's filesystem paths (`datastoreId` empty string).
* See "*Example: Attached disks*".
*/
pathInDatastore?: pulumi.Input<string | undefined>;
/**
* The number of I/O queues for this disk, `2` or
* greater. Only supported for SCSI disks, and applied by Proxmox only
* when `scsiHardware` is set to `virtio-scsi-single`. A change requires
* a VM power cycle (or reboot via the Proxmox API) to take effect.
*/
queues?: pulumi.Input<number | undefined>;
/**
* Whether the drive should be considered for replication jobs (defaults to `true`).
*/
replicate?: pulumi.Input<boolean | undefined>;
/**
* The serial number of the disk, up to 20 bytes long.
*/
serial?: pulumi.Input<string | undefined>;
/**
* The disk size in gigabytes (defaults to `8`).
*/
size?: pulumi.Input<number | undefined>;
/**
* The speed limits.
*/
speed?: pulumi.Input<inputs.VmLegacyDiskSpeed | undefined>;
/**
* Whether to use an SSD emulation option for this disk (
* defaults to `false`). Note that SSD emulation is not supported on VirtIO
* Block drives.
*/
ssd?: pulumi.Input<boolean | undefined>;
}
export interface VmLegacyDiskSpeed {
/**
* The maximum read I/O in operations per second.
*/
iopsRead?: pulumi.Input<number | undefined>;
/**
* The maximum unthrottled read I/O pool in operations per second.
*/
iopsReadBurstable?: pulumi.Input<number | undefined>;
/**
* The maximum write I/O in operations per second.
*/
iopsWrite?: pulumi.Input<number | undefined>;
/**
* The maximum unthrottled write I/O pool in operations per second.
*/
iopsWriteBurstable?: pulumi.Input<number | undefined>;
/**
* The maximum read speed in megabytes per second.
*/
read?: pulumi.Input<number | undefined>;
/**
* The maximum burstable read speed in
* megabytes per second.
*/
readBurstable?: pulumi.Input<number | undefined>;
/**
* The maximum write speed in megabytes per second.
*/
write?: pulumi.Input<number | undefined>;
/**
* The maximum burstable write speed in
* megabytes per second.
*/
writeBurstable?: pulumi.Input<number | undefined>;
}
export interface VmLegacyEfiDisk {
/**
* The identifier for the datastore to create
* the disk in (defaults to `local-lvm`).
*/
datastoreId?: pulumi.Input<string | undefined>;
/**
* The file format (defaults to `raw`).
*/
fileFormat?: pulumi.Input<string | undefined>;
/**
* Use am EFI vars template with
* distribution-specific and Microsoft Standard keys enrolled, if used with
* EFI type=`4m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults
* to `false`).
*/
preEnrolledKeys?: pulumi.Input<boolean | undefined>;
/**
* Size and type of the OVMF EFI disk. `4m` is newer and
* recommended, and required for Secure Boot. For backwards compatibility
* use `2m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults
* to `2m`).
*/
type?: pulumi.Input<string | undefined>;
}
export interface VmLegacyHostpci {
/**
* The PCI device name for Proxmox, in form
* of `hostpciX` where `X` is a sequential number from 0 to 15.
*/
device: pulumi.Input<string>;
/**
* The PCI device ID. This parameter is not compatible
* with `apiToken` and requires the root `use