UNPKG

@muhlba91/pulumi-proxmoxve

Version:

A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.

1,463 lines 65.5 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; export interface GetVm2Clone { /** * The ID of the VM to clone. */ id: number; /** * The number of retries to perform when cloning the VM (default: 3). */ retries?: number; } export interface GetVm2CloneArgs { /** * The ID of the VM to clone. */ id: pulumi.Input<number>; /** * The number of retries to perform when cloning the VM (default: 3). */ retries?: pulumi.Input<number>; } export interface GetVm2Cpu { /** * List of host cores used to execute guest processes, for example: '0,5,8-11' */ affinity?: string; /** * The CPU architecture. */ architecture?: string; /** * The number of CPU cores per socket. */ cores?: number; /** * Set of additional CPU flags. */ flags?: string[]; /** * The number of hotplugged vCPUs. */ hotplugged?: number; /** * Limit of CPU usage. */ limit?: number; /** * Enable NUMA. */ numa?: boolean; /** * The number of CPU sockets. */ sockets?: number; /** * Emulated CPU type. */ type?: string; /** * CPU weight for a VM */ units?: number; } export interface GetVm2CpuArgs { /** * List of host cores used to execute guest processes, for example: '0,5,8-11' */ affinity?: pulumi.Input<string>; /** * The CPU architecture. */ architecture?: pulumi.Input<string>; /** * The number of CPU cores per socket. */ cores?: pulumi.Input<number>; /** * Set of additional CPU flags. */ flags?: pulumi.Input<pulumi.Input<string>[]>; /** * The number of hotplugged vCPUs. */ hotplugged?: pulumi.Input<number>; /** * Limit of CPU usage. */ limit?: pulumi.Input<number>; /** * Enable NUMA. */ numa?: pulumi.Input<boolean>; /** * The number of CPU sockets. */ sockets?: pulumi.Input<number>; /** * Emulated CPU type. */ type?: pulumi.Input<string>; /** * CPU weight for a VM */ units?: pulumi.Input<number>; } export interface GetVm2Rng { /** * Maximum bytes of entropy allowed to get injected into the guest every period. */ maxBytes?: number; /** * Period in milliseconds to limit entropy injection to the guest. */ period?: number; /** * The entropy source for the RNG device. */ source?: string; } export interface GetVm2RngArgs { /** * Maximum bytes of entropy allowed to get injected into the guest every period. */ maxBytes?: pulumi.Input<number>; /** * Period in milliseconds to limit entropy injection to the guest. */ period?: pulumi.Input<number>; /** * The entropy source for the RNG device. */ source?: pulumi.Input<string>; } export interface GetVm2Timeouts { /** * 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 GetVm2TimeoutsArgs { /** * 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>; } export interface GetVm2Vga { /** * Enable a specific clipboard. */ clipboard?: string; /** * The VGA memory in megabytes (4-512 MB). Has no effect with serial display. */ memory?: number; /** * The VGA type. */ type?: string; } export interface GetVm2VgaArgs { /** * Enable a specific clipboard. */ clipboard?: pulumi.Input<string>; /** * The VGA memory in megabytes (4-512 MB). Has no effect with serial display. */ memory?: pulumi.Input<number>; /** * The VGA type. */ type?: pulumi.Input<string>; } export interface HostsEntry { /** * The IP address. */ address: pulumi.Input<string>; /** * The hostnames. */ hostnames: pulumi.Input<pulumi.Input<string>[]>; } 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>; /** * 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>; /** * The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable. */ agentSocket?: pulumi.Input<string>; /** * Overrides for SSH connection configuration for a Proxmox VE node. */ nodes?: pulumi.Input<pulumi.Input<inputs.ProviderSshNode>[]>; /** * The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block. */ password?: pulumi.Input<string>; /** * 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>; /** * The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable. */ socks5Password?: pulumi.Input<string>; /** * 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>; /** * The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable. */ socks5Username?: pulumi.Input<string>; /** * The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` block. */ username?: pulumi.Input<string>; } 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>; } export declare namespace Acme { } export declare namespace CT { interface ContainerClone { /** * The identifier for the target datastore. */ datastoreId?: pulumi.Input<string>; /** * The name of the source node (leave blank, if * equal to the `nodeName` argument). */ nodeName?: pulumi.Input<string>; /** * The identifier for the source container. */ vmId: pulumi.Input<number>; } interface ContainerConsole { /** * Whether to enable the console device (defaults * to `true`). */ enabled?: pulumi.Input<boolean>; /** * The number of available TTY (defaults to `2`). */ ttyCount?: pulumi.Input<number>; /** * The console mode (defaults to `tty`). */ type?: pulumi.Input<string>; } interface ContainerCpu { /** * The CPU architecture (defaults to `amd64`). */ architecture?: pulumi.Input<string>; /** * The number of CPU cores (defaults to `1`). */ cores?: pulumi.Input<number>; /** * The CPU units (defaults to `1024`). */ units?: pulumi.Input<number>; } interface ContainerDevicePassthrough { /** * Deny the container to write to the device (defaults to `false`). */ denyWrite?: pulumi.Input<boolean>; /** * Group ID to be assigned to the device node. */ gid?: pulumi.Input<number>; /** * Access mode to be set on the device node. Must be a * 4-digit octal number. */ mode?: pulumi.Input<string>; /** * 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>; } interface ContainerDisk { /** * The identifier for the datastore to create the * disk in (defaults to `local`). */ datastoreId?: pulumi.Input<string>; /** * 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>; } interface ContainerFeatures { /** * Whether the container supports FUSE mounts (defaults to `false`) */ fuse?: pulumi.Input<boolean>; /** * Whether the container supports `keyctl()` system call (defaults to `false`) */ keyctl?: pulumi.Input<boolean>; /** * List of allowed mount types (`cifs` or `nfs`) */ mounts?: pulumi.Input<pulumi.Input<string>[]>; /** * Whether the container is nested (defaults to `false`) */ nesting?: pulumi.Input<boolean>; } interface ContainerInitialization { /** * The DNS configuration. */ dns?: pulumi.Input<inputs.CT.ContainerInitializationDns>; /** * The hostname. */ hostname?: pulumi.Input<string>; /** * The IP configuration (one block per network * device). */ ipConfigs?: pulumi.Input<pulumi.Input<inputs.CT.ContainerInitializationIpConfig>[]>; /** * The user account configuration. */ userAccount?: pulumi.Input<inputs.CT.ContainerInitializationUserAccount>; } interface ContainerInitializationDns { /** * The DNS search domain. */ domain?: pulumi.Input<string>; /** * 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>; /** * The list of DNS servers. */ servers?: pulumi.Input<pulumi.Input<string>[]>; } interface ContainerInitializationIpConfig { /** * The IPv4 configuration. */ ipv4?: pulumi.Input<inputs.CT.ContainerInitializationIpConfigIpv4>; /** * The IPv4 configuration. */ ipv6?: pulumi.Input<inputs.CT.ContainerInitializationIpConfigIpv6>; } interface ContainerInitializationIpConfigIpv4 { /** * The IPv4 address (use `dhcp` for auto-discovery). */ address?: pulumi.Input<string>; /** * The IPv4 gateway (must be omitted * when `dhcp` is used as the address). */ gateway?: pulumi.Input<string>; } interface ContainerInitializationIpConfigIpv6 { /** * The IPv6 address (use `dhcp` for auto-discovery). */ address?: pulumi.Input<string>; /** * The IPv6 gateway (must be omitted * when `dhcp` is used as the address). */ gateway?: pulumi.Input<string>; } interface ContainerInitializationUserAccount { /** * The SSH keys for the root account. */ keys?: pulumi.Input<pulumi.Input<string>[]>; /** * The password for the root account. */ password?: pulumi.Input<string>; } interface ContainerMemory { /** * The dedicated memory in megabytes (defaults * to `512`). */ dedicated?: pulumi.Input<number>; /** * The swap size in megabytes (defaults to `0`). */ swap?: pulumi.Input<number>; } interface ContainerMountPoint { /** * Explicitly enable or disable ACL support. */ acl?: pulumi.Input<boolean>; /** * Whether to include the mount point in backups (only * used for volume mount points, defaults to `false`). */ backup?: pulumi.Input<boolean>; /** * List of extra mount options. */ mountOptions?: pulumi.Input<pulumi.Input<string>[]>; /** * Path to the mount point as seen from inside the * container. */ path: pulumi.Input<string>; /** * Enable user quotas inside the container (not supported * with ZFS subvolumes). */ quota?: pulumi.Input<boolean>; /** * Read-only mount point. */ readOnly?: pulumi.Input<boolean>; /** * Will include this volume to a storage replica job. */ replicate?: pulumi.Input<boolean>; /** * Mark this non-volume mount point as available on all * nodes. */ shared?: pulumi.Input<boolean>; /** * Volume size (only for volume mount points). * Can be specified with a unit suffix (e.g. `10G`). */ size?: pulumi.Input<string>; /** * Volume, device or directory to mount into the * container. */ volume: pulumi.Input<string>; } interface ContainerNetworkInterface { /** * The name of the network bridge (defaults * to `vmbr0`). */ bridge?: pulumi.Input<string>; /** * Whether to enable the network device (defaults * to `true`). */ enabled?: pulumi.Input<boolean>; /** * Whether this interface's firewall rules should be * used (defaults to `false`). */ firewall?: pulumi.Input<boolean>; /** * The MAC address. */ macAddress?: pulumi.Input<string>; /** * Maximum transfer unit of the interface. Cannot be * larger than the bridge's MTU. */ mtu?: pulumi.Input<number>; /** * The network interface name. */ name: pulumi.Input<string>; /** * The rate limit in megabytes per second. */ rateLimit?: pulumi.Input<number>; /** * The VLAN identifier. */ vlanId?: pulumi.Input<number>; } interface ContainerOperatingSystem { /** * 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.File` resource, or from the output of `pvesm list <storage>`. */ templateFileId: pulumi.Input<string>; /** * The type (defaults to `unmanaged`). */ type?: pulumi.Input<string>; } interface ContainerStartup { /** * A non-negative number defining the delay in * seconds before the next container is shut down. */ downDelay?: pulumi.Input<number>; /** * A non-negative number defining the general startup * order. */ order?: pulumi.Input<number>; /** * A non-negative number defining the delay in * seconds before the next container is started. */ upDelay?: pulumi.Input<number>; } } export declare namespace Cluster { interface OptionsNextId { /** * The minimum number for the next free VM ID. Must be higher or equal to 100 */ lower?: pulumi.Input<number>; /** * The maximum number for the next free VM ID. Must be less or equal to 999999999 */ upper?: pulumi.Input<number>; } interface OptionsNotify { /** * Cluster-wide notification settings for the HA fencing mode. Must be `always` | `never`. */ haFencingMode?: pulumi.Input<string>; /** * Cluster-wide notification settings for the HA fencing target. */ haFencingTarget?: pulumi.Input<string>; /** * Cluster-wide notification settings for package updates. Must be `auto` | `always` | `never`. */ packageUpdates?: pulumi.Input<string>; /** * Cluster-wide notification settings for the package updates target. */ packageUpdatesTarget?: pulumi.Input<string>; /** * Cluster-wide notification settings for replication. Must be `always` | `never`. */ replication?: pulumi.Input<string>; /** * Cluster-wide notification settings for the replication target. */ replicationTarget?: pulumi.Input<string>; } } export declare namespace Hardware { namespace mapping { interface DirMap { /** * The node this mapping applies to. */ node: pulumi.Input<string>; /** * The path of the map. For directory mappings the path is required and refers to the POSIX path of the directory as visible from the node. */ path: pulumi.Input<string>; } interface PciMap { /** * The comment of the mapped PCI device. */ comment?: pulumi.Input<string>; /** * The ID of the map. */ id: pulumi.Input<string>; /** * The IOMMU group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set */ iommuGroup?: pulumi.Input<number>; /** * The node name of the map. */ node: pulumi.Input<string>; /** * The path of the map. */ path: pulumi.Input<string>; /** * The subsystem ID group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set */ subsystemId?: pulumi.Input<string>; } interface UsbMap { /** * The comment of the mapped USB device. */ comment?: pulumi.Input<string>; /** * The ID of the map. */ id: pulumi.Input<string>; /** * The node name of the map. */ node: pulumi.Input<string>; /** * The path of the map. For hardware mappings of type USB the path is optional and indicates that the device is mapped through the device ID instead of ports. */ path?: pulumi.Input<string>; } } } export declare namespace Network { interface FirewallIPSetCidr { /** * Arbitrary string annotation. */ comment?: pulumi.Input<string>; /** * Network/IP specification in CIDR format. */ name: pulumi.Input<string>; /** * Entries marked as `nomatch` are skipped as if those * were not added to the set. */ nomatch?: pulumi.Input<boolean>; } interface FirewallLogRatelimit { /** * Initial burst of packages which will always get * logged before the rate is applied (defaults to `5`). */ burst?: pulumi.Input<number>; /** * Enable or disable the log rate limit. */ enabled?: pulumi.Input<boolean>; /** * Frequency with which the burst bucket gets refilled * (defaults to `1/second`). */ rate?: pulumi.Input<string>; } interface FirewallRulesRule { /** * Rule action (`ACCEPT`, `DROP`, `REJECT`). */ action?: pulumi.Input<string>; /** * Rule comment. */ comment?: pulumi.Input<string>; /** * Restrict packet destination address. This can * refer to a single IP address, an IP set ('+ipsetname') or an IP * alias definition. You can also specify an address range * like `20.34.101.207-201.3.9.99`, or a list of IP addresses and * networks (entries are separated by comma). Please do not mix IPv4 * and IPv6 addresses inside such lists. */ dest?: pulumi.Input<string>; /** * Restrict TCP/UDP destination port. You can use * service names or simple numbers (0-65535), as defined * in `/etc/services`. Port ranges can be specified with '\d+:\d+', for * example `80:85`, and you can use comma separated list to match * several ports or ranges. */ dport?: pulumi.Input<string>; /** * Enable this rule. Defaults to `true`. */ enabled?: pulumi.Input<boolean>; /** * Network interface name. You have to use network * configuration key names for VMs and containers ('net\d+'). Host * related rules can use arbitrary strings. */ iface?: pulumi.Input<string>; /** * Log level for this rule (`emerg`, `alert`, `crit`, * `err`, `warning`, `notice`, `info`, `debug`, `nolog`). */ log?: pulumi.Input<string>; /** * Macro name. Use predefined standard macro * from <https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions> */ macro?: pulumi.Input<string>; /** * Position of the rule in the list. */ pos?: pulumi.Input<number>; /** * Restrict packet protocol. You can use protocol * names as defined in '/etc/protocols'. */ proto?: pulumi.Input<string>; /** * Security group name. */ securityGroup?: pulumi.Input<string>; /** * Restrict packet source address. This can refer * to a single IP address, an IP set ('+ipsetname') or an IP alias * definition. You can also specify an address range * like `20.34.101.207-201.3.9.99`, or a list of IP addresses and * networks (entries are separated by comma). Please do not mix IPv4 * and IPv6 addresses inside such lists. */ source?: pulumi.Input<string>; /** * Restrict TCP/UDP source port. You can use * service names or simple numbers (0-65535), as defined * in `/etc/services`. Port ranges can be specified with '\d+:\d+', for * example `80:85`, and you can use comma separated list to match * several ports or ranges. * - a security group insertion block, which includes the following arguments: */ sport?: pulumi.Input<string>; /** * Rule type (`in`, `out`). */ type?: pulumi.Input<string>; } interface FirewallSecurityGroupRule { /** * Rule action (`ACCEPT`, `DROP`, `REJECT`). */ action?: pulumi.Input<string>; /** * Rule comment. */ comment?: pulumi.Input<string>; /** * Restrict packet destination address. This can refer to * a single IP address, an IP set ('+ipsetname') or an IP alias * definition. You can also specify an address range like * `20.34.101.207-201.3.9.99`, or a list of IP addresses and networks * (entries are separated by comma). Please do not mix IPv4 and IPv6 * addresses inside such lists. */ dest?: pulumi.Input<string>; /** * Restrict TCP/UDP destination port. You can use * service names or simple numbers (0-65535), as defined in '/etc/ * services'. Port ranges can be specified with '\d+:\d+', for example * `80:85`, and you can use comma separated list to match several ports or * ranges. */ dport?: pulumi.Input<string>; /** * Enable this rule. Defaults to `true`. */ enabled?: pulumi.Input<boolean>; /** * Network interface name. You have to use network * configuration key names for VMs and containers ('net\d+'). Host related * rules can use arbitrary strings. */ iface?: pulumi.Input<string>; /** * Log level for this rule (`emerg`, `alert`, `crit`, * `err`, `warning`, `notice`, `info`, `debug`, `nolog`). */ log?: pulumi.Input<string>; /** * Macro name. Use predefined standard macro * from <https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions> */ macro?: pulumi.Input<string>; /** * Position of the rule in the list. */ pos?: pulumi.Input<number>; /** * Restrict packet protocol. You can use protocol names * as defined in '/etc/protocols'. */ proto?: pulumi.Input<string>; /** * Security group name */ securityGroup?: pulumi.Input<string>; /** * Restrict packet source address. This can refer * to a single IP address, an IP set ('+ipsetname') or an IP alias * definition. You can also specify an address range like * `20.34.101.207-201.3.9.99`, or a list of IP addresses and networks ( * entries are separated by comma). Please do not mix IPv4 and IPv6 * addresses inside such lists. */ source?: pulumi.Input<string>; /** * Restrict TCP/UDP source port. You can use * service names or simple numbers (0-65535), as defined in '/etc/ * services'. Port ranges can be specified with '\d+:\d+', for example * `80:85`, and you can use comma separated list to match several ports or * ranges. */ sport?: pulumi.Input<string>; /** * Rule type (`in`, `out`). */ type?: pulumi.Input<string>; } } export declare namespace Permission { interface GroupAcl { /** * The path. */ path: pulumi.Input<string>; /** * Whether to propagate to child paths. */ propagate?: pulumi.Input<boolean>; /** * The role identifier. */ roleId: pulumi.Input<string>; } interface PoolMember { /** * The datastore identifier. */ datastoreId?: pulumi.Input<string>; /** * The member identifier. */ id?: pulumi.Input<string>; /** * The node name. */ nodeName?: pulumi.Input<string>; /** * The member type. */ type?: pulumi.Input<string>; /** * The virtual machine identifier. */ vmId?: pulumi.Input<number>; } interface UserAcl { /** * The path. */ path: pulumi.Input<string>; /** * Whether to propagate to child paths. */ propagate?: pulumi.Input<boolean>; /** * The role identifier. */ roleId: pulumi.Input<string>; } } export declare namespace Storage { interface FileSourceFile { /** * Whether the source file has changed since the last run */ changed?: pulumi.Input<boolean>; /** * The SHA256 checksum of the source file. */ checksum?: pulumi.Input<string>; /** * 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>; /** * Whether to skip the TLS verification step for * HTTPS sources (defaults to `false`). */ insecure?: pulumi.Input<boolean>; /** * 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>; /** * A path to a local file or a URL. */ path: pulumi.Input<string>; } interface FileSourceRaw { /** * 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>; } 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; } interface GetDatastoresDatastoreArgs { /** * Whether the store is active. */ active?: pulumi.Input<boolean>; /** * Allowed store content types. */ contentTypes: pulumi.Input<pulumi.Input<string>[]>; /** * Whether the store is enabled. */ enabled?: pulumi.Input<boolean>; /** * 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>; /** * Available store space in bytes. */ spaceAvailable?: pulumi.Input<number>; /** * Total store space in bytes. */ spaceTotal?: pulumi.Input<number>; /** * Used store space in bytes. */ spaceUsed?: pulumi.Input<number>; /** * Used fraction (used/total). */ spaceUsedFraction?: pulumi.Input<number>; /** * Store type. */ type: pulumi.Input<string>; } 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; } interface GetDatastoresFiltersArgs { /** * Only list stores with the given content types. */ contentTypes?: pulumi.Input<pulumi.Input<string>[]>; /** * Only list stores with the given ID. */ id?: pulumi.Input<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?: pulumi.Input<string>; } } export declare namespace VM { interface GetVirtualMachinesFilter { /** * 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[]; } interface GetVirtualMachinesFilterArgs { /** * 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>; /** * 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>[]>; } interface VirtualMachine2Cdrom { /** * The file ID of the CD-ROM, or `cdrom|none`. Defaults to `none` to leave the CD-ROM empty. Use `cdrom` to connect to the physical drive. */ fileId?: pulumi.Input<string>; } interface VirtualMachine2Clone { /** * The ID of the VM to clone. */ id: pulumi.Input<number>; /** * The number of retries to perform when cloning the VM (default: 3). */ retries?: pulumi.Input<number>; } interface VirtualMachine2Cpu { /** * 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>; /** * The CPU architecture `<aarch64 | x86_64>` (defaults to the host). Setting `affinity` is only allowed for `root@pam` authenticated user. */ architecture?: pulumi.Input<string>; /** * The number of CPU cores per socket (defaults to `1`). */ cores?: pulumi.Input<number>; /** * 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>[]>; /** * The number of hotplugged vCPUs (defaults to `0`). */ hotplugged?: pulumi.Input<number>; /** * Limit of CPU usage (defaults to `0` which means no limit). */ limit?: pulumi.Input<number>; /** * Enable NUMA (defaults to `false`). */ numa?: pulumi.Input<boolean>; /** * The number of CPU sockets (defaults to `1`). */ sockets?: pulumi.Input<number>; /** * Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to `kvm64`). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information. */ type?: pulumi.Input<string>; /** * 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. */ units?: pulumi.Input<number>; } interface VirtualMachine2Rng { /** * Maximum bytes of entropy allowed to get injected into the guest every period. Use 0 to disable limiting (potentially dangerous). */ maxBytes?: pulumi.Input<number>; /** * Period in milliseconds to limit entropy injection to the guest. Use 0 to disable limiting (potentially dangerous). */ period?: pulumi.Input<number>; /** * 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>; } interface VirtualMachine2Timeouts { /** * 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>; /** * 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>; /** * 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>; /** * 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>; } interface VirtualMachine2Vga { /** * 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>; /** * The VGA memory in megabytes (4-512 MB). Has no effect with serial display. */ memory?: pulumi.Input<number>; /** * The VGA type (defaults to `std`). */ type?: pulumi.Input<string>; } interface VirtualMachineAgent { /** * Whether to enable the QEMU agent (defaults * to `false`). */ enabled?: pulumi.Input<boolean>; /** * The maximum amount of time to wait for data from * the QEMU agent to become available ( defaults to `15m`). */ timeout?: pulumi.Input<string>; /** * Whether to enable the FSTRIM feature in the QEMU agent * (defaults to `false`). */ trim?: pulumi.Input<boolean>; /** * The QEMU agent interface type (defaults to `virtio`). */ type?: pulumi.Input<string>; } interface VirtualMachineAmdSev { /** * Sets policy bit to allow Simultaneous Multi Threading (SMT) * (Ignored unless for SEV-SNP) (defaults to `true`). */ allowSmt?: pulumi.Input<boolean>; /** * Add kernel hashes to guest firmware for measured linux kernel launch (defaults to `false`). */ kernelHashes?: pulumi.Input<boolean>; /** * Sets policy bit to disallow debugging of guest (defaults * to `false`). */ noDebug?: pulumi.Input<boolean>; /** * 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>; /** * 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>; } interface VirtualMachineAudioDevice { /** * 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>; /** * The driver (defaults to `spice`). */ driver?: pulumi.Input<string>; /** * Whether to enable the audio device (defaults * to `true`). */ enabled?: pulumi.Input<boolean>; } interface VirtualMachineCdrom { /** * 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>; /** * 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>; /** * 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>; } interface VirtualMachineClone { /** * The identifier for the target datastore. */ datastoreId?: pulumi.Input<string>; /** * Full or linked clone (defaults to `true`). */ full?: pulumi.Input<boolean>; /** * The name of the source node (leave blank, if * equal to the `nodeName` argument). */ nodeName?: pulumi.Input<string>; /** * Number of retries in Proxmox for clone vm. * Sometimes Proxmox errors with timeout when creating multiple clones at * once. */ retries?: pulumi.Input<number>; /** * The identifier for the source VM. */ vmId: pulumi.Input<number>; } interface VirtualMachineCpu { /** * 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>; /** * The CPU architecture (defaults to `x8664`). */ architecture?: pulumi.Input<string>; /** * The number of CPU cores (defaults to `1`). */ cores?: pulumi.Input<number>; /** * 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>[]>; /** * The number of hotplugged vCPUs (defaults * to `0`). */ hotplugged?: pulumi.Input<number>; /** * Limit of CPU usage, `0...128`. (defaults to `0` -- no limit). */ limit?: pulumi.Input<number>; /** * Enable/disable NUMA. (default to `false`) */ numa?: pulumi.Input<boolean>; /** * The number of CPU sockets (defaults to `1`). */ sockets?: pulumi.Input<number>; /** * The emulated CPU type, it's recommended to * use `x86-64-v2-AES` (defaults to `qemu64`). */ type?: pulumi.Input<string>; /** * The CPU units (defaults to `1024`). */ units?: pulumi.Input<number>; } interface VirtualMachineDisk { /** * The disk AIO mode (defaults to `ioUring`). */ aio?: pulumi.Input<string>; /** * Whether the drive should be included when making backups (defaults to `true`). */ backup?: pulumi.Input<boolean>; /** * The cache type (defaults to `none`). */ cache?: pulumi.Input<string>; /** * The identifier for the datastore to create * the disk in (defaults to `local-lvm`). */ datastoreId?: pulumi.Input<string>; /** * Whether to pass discard/trim requests to the * underlying storage. Supported values are `on`/`ignore` (defaults * to `ignore`). */ discard?: pulumi.Input<string>; /** * The file format. */ fileFormat?: pulumi.Input<string>; /** * 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.File` resource. *Deprecated*, use `importFrom` instead. */ fileId?: pulumi.Input<string>; /** * The file ID for a disk image to import into VM. The image must be of `import` content type. * The ID format is `<datastore_id>:import/<file_name>`, for example `local:import/centos8.qcow2`. Can be also taken from * `proxmoxve.Download.File` resource. */ importFrom?: pulumi.Input<string>; /** * 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>; /** * 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>; /** * Whether the drive should be considered for replication jobs (defaults to `true`). */ replicate?: pulumi.Input<boolean>; /** * The serial number of the disk, up to 20 bytes long. */ serial?: pulumi.Input<string>; /** * The disk size in gigabytes (defaults to `8`). */ size?: pulumi.Input<number>; /** * The speed limits. */ speed?: pulumi.Input<inputs.VM.VirtualMachineDiskSpeed>; /** * 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>; } interface VirtualMachineDiskSpeed { /** * The maximum read I/O in operations per second. */ iopsRead?: pulumi.Input<number>; /** * The maximum unthrottled read I/O pool in operations per second. */ iopsReadBurstable?: pulumi.Input<number>; /** * The maximum write I/O in operations per sec