proxmox

package
v1.1.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 14, 2024 License: MPL-2.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DownloadISOOnPVE added in v1.1.7

func DownloadISOOnPVE(state multistep.StateBag, ISOUrls []string, ISOChecksum string, ISOStoragePool string) (string, error)

DownloadISOOnPVE abstracts the checksum and download process os that the code can be shared between the common module and the iso module. This is necessary because both handle the storage path to the iso differently.

The function takes a list of URLs to download the iso and tries them one another. If a download was successful it skips the additonal downlaod mirrors and returns the path to the iso on the node.

Returns: When successful, the path to the iso on the node, else an empty string.

func NewProxmoxDriver

func NewProxmoxDriver(c commandTyper, vmRef *proxmox.VmRef, interval time.Duration) *proxmoxDriver

Types

type Artifact

type Artifact struct {

	// StateData should store data such as GeneratedData
	// to be shared with post-processors
	StateData map[string]interface{}
	// contains filtered or unexported fields
}

func (*Artifact) BuilderId

func (a *Artifact) BuilderId() string

func (*Artifact) Destroy

func (a *Artifact) Destroy() error

func (*Artifact) Files

func (*Artifact) Files() []string

func (*Artifact) Id

func (a *Artifact) Id() string

func (*Artifact) State

func (a *Artifact) State(name string) interface{}

func (*Artifact) String

func (a *Artifact) String() string

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

func NewSharedBuilder

func NewSharedBuilder(id string, config Config, preSteps []multistep.Step, postSteps []multistep.Step, vmCreator ProxmoxVMCreator) *Builder

func (*Builder) Run

type CloudInitDriveRemover added in v1.1.1

type CloudInitDriveRemover interface {
	GetVmConfig(*proxmox.VmRef) (map[string]interface{}, error)
	SetVmConfig(*proxmox.VmRef, map[string]interface{}) (interface{}, error)
}

type Config

type Config struct {
	common.PackerConfig    `mapstructure:",squash"`
	commonsteps.HTTPConfig `mapstructure:",squash"`
	bootcommand.BootConfig `mapstructure:",squash"`
	BootKeyInterval        time.Duration       `mapstructure:"boot_key_interval"`
	Comm                   communicator.Config `mapstructure:",squash"`

	// URL to the Proxmox API, including the full path,
	// so `https://<server>:<port>/api2/json` for example.
	// Can also be set via the `PROXMOX_URL` environment variable.
	ProxmoxURLRaw string `mapstructure:"proxmox_url"`

	// Skip validating the certificate.
	SkipCertValidation bool `mapstructure:"insecure_skip_tls_verify"`
	// Username when authenticating to Proxmox, including
	// the realm. For example `user@pve` to use the local Proxmox realm. When using
	// token authentication, the username must include the token id after an exclamation
	// mark. For example, `user@pve!tokenid`.
	// Can also be set via the `PROXMOX_USERNAME` environment variable.
	Username string `mapstructure:"username"`
	// Password for the user.
	// For API tokens please use `token`.
	// Can also be set via the `PROXMOX_PASSWORD` environment variable.
	// Either `password` or `token` must be specifed. If both are set,
	// `token` takes precedence.
	Password string `mapstructure:"password"`
	// Token for authenticating API calls.
	// This allows the API client to work with API tokens instead of user passwords.
	// Can also be set via the `PROXMOX_TOKEN` environment variable.
	// Either `password` or `token` must be specifed. If both are set,
	// `token` takes precedence.
	Token string `mapstructure:"token"`
	// Which node in the Proxmox cluster to start the virtual
	// machine on during creation.
	Node string `mapstructure:"node"`
	// Name of resource pool to create virtual machine in.
	Pool string `mapstructure:"pool"`
	// `task_timeout` (duration string | ex: "10m") - The timeout for
	//  Promox API operations, e.g. clones. Defaults to 1 minute.
	TaskTimeout time.Duration `mapstructure:"task_timeout"`

	// Name of the virtual machine during creation. If not
	// given, a random uuid will be used.
	VMName string `mapstructure:"vm_name"`
	// `vm_id` (int) - The ID used to reference the virtual machine. This will
	// also be the ID of the final template. Proxmox VMIDs are unique cluster-wide
	// and are limited to the range 100-999999999.
	// If not given, the next free ID on the cluster will be used.
	VMID int `mapstructure:"vm_id"`

	// The tags to set. This is a semicolon separated list. For example,
	// `debian-12;template`.
	Tags string `mapstructure:"tags"`

	// Override default boot order. Format example `order=virtio0;ide2;net0`.
	// Prior to Proxmox 6.2-15 the format was `cdn` (c:CDROM -> d:Disk -> n:Network)
	Boot string `mapstructure:"boot"`
	// How much memory (in megabytes) to give the virtual
	// machine. If `ballooning_minimum` is also set, `memory` defines the maximum amount
	// of memory the VM will be able to use.
	// Defaults to `512`.
	Memory int `mapstructure:"memory"`
	// Setting this option enables KVM memory ballooning and
	// defines the minimum amount of memory (in megabytes) the VM will have.
	// Defaults to `0` (memory ballooning disabled).
	BalloonMinimum int `mapstructure:"ballooning_minimum"`
	// How many CPU cores to give the virtual machine. Defaults
	// to `1`.
	Cores int `mapstructure:"cores"`
	// The CPU type to emulate. See the Proxmox API
	// documentation for the complete list of accepted values. For best
	// performance, set this to `host`. Defaults to `kvm64`.
	CPUType string `mapstructure:"cpu_type"`
	// How many CPU sockets to give the virtual machine.
	// Defaults to `1`
	Sockets int `mapstructure:"sockets"`
	// If true, support for non-uniform memory access (NUMA)
	// is enabled. Defaults to `false`.
	Numa bool `mapstructure:"numa"`
	// The operating system. Can be `wxp`, `w2k`, `w2k3`, `w2k8`,
	// `wvista`, `win7`, `win8`, `win10`, `l24` (Linux 2.4), `l26` (Linux 2.6+),
	// `solaris` or `other`. Defaults to `other`.
	OS string `mapstructure:"os"`
	// Set the machine bios. This can be set to ovmf or seabios. The default value is seabios.
	BIOS string `mapstructure:"bios"`
	// Set the efidisk storage options. See [EFI Config](#efi-config).
	EFIConfig efiConfig `mapstructure:"efi_config"`
	// This option is deprecated, please use `efi_config` instead.
	EFIDisk string `mapstructure:"efidisk"`
	// Set the machine type. Supported values are 'pc' or 'q35'.
	Machine string `mapstructure:"machine"`
	// Configure Random Number Generator via VirtIO. See [VirtIO RNG device](#virtio-rng-device)
	Rng0 rng0Config `mapstructure:"rng0"`
	// The graphics adapter to use. See [VGA Config](#vga-config).
	VGA vgaConfig `mapstructure:"vga"`
	// The network adapter to use. See [Network Adapters](#network-adapters)
	NICs []NICConfig `mapstructure:"network_adapters"`
	// Disks attached to the virtual machine. See [Disks](#disks)
	Disks []diskConfig `mapstructure:"disks"`
	// Allows passing through a host PCI device into the VM. See [PCI Devices](#pci-devices)
	PCIDevices []pciDeviceConfig `mapstructure:"pci_devices"`
	// A list (max 4 elements) of serial ports attached to
	// the virtual machine. It may pass through a host serial device `/dev/ttyS0`
	// or create unix socket on the host `socket`. Each element can be `socket`
	// or responding to pattern `/dev/.+`. Example:
	//
	//   “`json
	//   [
	//     "socket",
	//     "/dev/ttyS1"
	//   ]
	//   “`
	Serials []string `mapstructure:"serials"`
	// Enables QEMU Agent option for this VM. When enabled,
	// then `qemu-guest-agent` must be installed on the guest. When disabled, then
	// `ssh_host` should be used. Defaults to `true`.
	Agent config.Trilean `mapstructure:"qemu_agent"`
	// The SCSI controller model to emulate. Can be `lsi`,
	// `lsi53c810`, `virtio-scsi-pci`, `virtio-scsi-single`, `megasas`, or `pvscsi`.
	// Defaults to `lsi`.
	SCSIController string `mapstructure:"scsi_controller"`
	// Specifies whether a VM will be started during system
	// bootup. Defaults to `false`.
	Onboot bool `mapstructure:"onboot"`
	// Disables KVM hardware virtualization. Defaults to `false`.
	DisableKVM bool `mapstructure:"disable_kvm"`

	// Name of the template. Defaults to the generated
	// name used during creation.
	TemplateName string `mapstructure:"template_name"`
	// Description of the template, visible in
	// the Proxmox interface.
	TemplateDescription string `mapstructure:"template_description"`

	// If true, add an empty Cloud-Init CDROM drive after the virtual
	// machine has been converted to a template. Defaults to `false`.
	CloudInit bool `mapstructure:"cloud_init"`
	// Name of the Proxmox storage pool
	// to store the Cloud-Init CDROM on. If not given, the storage pool of the boot device will be used.
	CloudInitStoragePool string `mapstructure:"cloud_init_storage_pool"`

	// Additional ISO files attached to the virtual machine.
	// See [Additional ISO Files](#additional-iso-files).
	AdditionalISOFiles []additionalISOsConfig `mapstructure:"additional_iso_files"`
	// Name of the network interface that Packer gets
	// the VMs IP from. Defaults to the first non loopback interface.
	VMInterface string `mapstructure:"vm_interface"`

	// Arbitrary arguments passed to KVM.
	// For example `-no-reboot -smbios type=0,vendor=FOO`.
	// 	Note: this option is for experts only.
	AdditionalArgs string `mapstructure:"qemu_additional_args"`

	Ctx interpolate.Context `mapstructure-to-hcl2:",skip"`
	// contains filtered or unexported fields
}

There are many configuration options available for the builder. They are segmented below into two categories: required and optional parameters. Within each category, the available configuration keys are alphabetized.

You may also want to take look at the general configuration references for [VirtIO RNG device](#virtio-rng-device) and [PCI Devices](#pci-devices) configuration references, which can be found further down the page.

In addition to the options listed here, a communicator(/packer/docs/templates/legacy_json_templates/communicator) can be configured for this builder.

If no communicator is defined, an SSH key is generated for use, and is used in the image's Cloud-Init settings for provisioning.

func (*Config) FlatMapstructure

func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec }

FlatMapstructure returns a new FlatConfig. FlatConfig is an auto-generated flat version of Config. Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.

func (*Config) Prepare

func (c *Config) Prepare(upper interface{}, raws ...interface{}) ([]string, []string, error)

type FlatConfig

type FlatConfig struct {
	PackerBuildName           *string                    `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"`
	PackerBuilderType         *string                    `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"`
	PackerCoreVersion         *string                    `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"`
	PackerDebug               *bool                      `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"`
	PackerForce               *bool                      `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"`
	PackerOnError             *string                    `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"`
	PackerUserVars            map[string]string          `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"`
	PackerSensitiveVars       []string                   `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"`
	HTTPDir                   *string                    `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"`
	HTTPContent               map[string]string          `mapstructure:"http_content" cty:"http_content" hcl:"http_content"`
	HTTPPortMin               *int                       `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"`
	HTTPPortMax               *int                       `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"`
	HTTPAddress               *string                    `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"`
	HTTPInterface             *string                    `mapstructure:"http_interface" undocumented:"true" cty:"http_interface" hcl:"http_interface"`
	BootGroupInterval         *string                    `mapstructure:"boot_keygroup_interval" cty:"boot_keygroup_interval" hcl:"boot_keygroup_interval"`
	BootWait                  *string                    `mapstructure:"boot_wait" cty:"boot_wait" hcl:"boot_wait"`
	BootCommand               []string                   `mapstructure:"boot_command" cty:"boot_command" hcl:"boot_command"`
	BootKeyInterval           *string                    `mapstructure:"boot_key_interval" cty:"boot_key_interval" hcl:"boot_key_interval"`
	Type                      *string                    `mapstructure:"communicator" cty:"communicator" hcl:"communicator"`
	PauseBeforeConnect        *string                    `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"`
	SSHHost                   *string                    `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"`
	SSHPort                   *int                       `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"`
	SSHUsername               *string                    `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"`
	SSHPassword               *string                    `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"`
	SSHKeyPairName            *string                    `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"`
	SSHTemporaryKeyPairName   *string                    `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"`
	SSHTemporaryKeyPairType   *string                    `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"`
	SSHTemporaryKeyPairBits   *int                       `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"`
	SSHCiphers                []string                   `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"`
	SSHClearAuthorizedKeys    *bool                      `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"`
	SSHKEXAlgos               []string                   `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"`
	SSHPrivateKeyFile         *string                    `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"`
	SSHCertificateFile        *string                    `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"`
	SSHPty                    *bool                      `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"`
	SSHTimeout                *string                    `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"`
	SSHWaitTimeout            *string                    `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"`
	SSHAgentAuth              *bool                      `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"`
	SSHDisableAgentForwarding *bool                      `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"`
	SSHHandshakeAttempts      *int                       `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"`
	SSHBastionHost            *string                    `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"`
	SSHBastionPort            *int                       `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"`
	SSHBastionAgentAuth       *bool                      `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"`
	SSHBastionUsername        *string                    `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"`
	SSHBastionPassword        *string                    `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"`
	SSHBastionInteractive     *bool                      `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"`
	SSHBastionPrivateKeyFile  *string                    `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"`
	SSHBastionCertificateFile *string                    `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"`
	SSHFileTransferMethod     *string                    `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"`
	SSHProxyHost              *string                    `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"`
	SSHProxyPort              *int                       `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"`
	SSHProxyUsername          *string                    `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"`
	SSHProxyPassword          *string                    `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"`
	SSHKeepAliveInterval      *string                    `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"`
	SSHReadWriteTimeout       *string                    `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"`
	SSHRemoteTunnels          []string                   `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"`
	SSHLocalTunnels           []string                   `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"`
	SSHPublicKey              []byte                     `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"`
	SSHPrivateKey             []byte                     `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"`
	WinRMUser                 *string                    `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"`
	WinRMPassword             *string                    `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"`
	WinRMHost                 *string                    `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"`
	WinRMNoProxy              *bool                      `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"`
	WinRMPort                 *int                       `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"`
	WinRMTimeout              *string                    `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"`
	WinRMUseSSL               *bool                      `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"`
	WinRMInsecure             *bool                      `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"`
	WinRMUseNTLM              *bool                      `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"`
	ProxmoxURLRaw             *string                    `mapstructure:"proxmox_url" cty:"proxmox_url" hcl:"proxmox_url"`
	SkipCertValidation        *bool                      `mapstructure:"insecure_skip_tls_verify" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"`
	Username                  *string                    `mapstructure:"username" cty:"username" hcl:"username"`
	Password                  *string                    `mapstructure:"password" cty:"password" hcl:"password"`
	Token                     *string                    `mapstructure:"token" cty:"token" hcl:"token"`
	Node                      *string                    `mapstructure:"node" cty:"node" hcl:"node"`
	Pool                      *string                    `mapstructure:"pool" cty:"pool" hcl:"pool"`
	TaskTimeout               *string                    `mapstructure:"task_timeout" cty:"task_timeout" hcl:"task_timeout"`
	VMName                    *string                    `mapstructure:"vm_name" cty:"vm_name" hcl:"vm_name"`
	VMID                      *int                       `mapstructure:"vm_id" cty:"vm_id" hcl:"vm_id"`
	Tags                      *string                    `mapstructure:"tags" cty:"tags" hcl:"tags"`
	Boot                      *string                    `mapstructure:"boot" cty:"boot" hcl:"boot"`
	Memory                    *int                       `mapstructure:"memory" cty:"memory" hcl:"memory"`
	BalloonMinimum            *int                       `mapstructure:"ballooning_minimum" cty:"ballooning_minimum" hcl:"ballooning_minimum"`
	Cores                     *int                       `mapstructure:"cores" cty:"cores" hcl:"cores"`
	CPUType                   *string                    `mapstructure:"cpu_type" cty:"cpu_type" hcl:"cpu_type"`
	Sockets                   *int                       `mapstructure:"sockets" cty:"sockets" hcl:"sockets"`
	Numa                      *bool                      `mapstructure:"numa" cty:"numa" hcl:"numa"`
	OS                        *string                    `mapstructure:"os" cty:"os" hcl:"os"`
	BIOS                      *string                    `mapstructure:"bios" cty:"bios" hcl:"bios"`
	EFIConfig                 *FlatefiConfig             `mapstructure:"efi_config" cty:"efi_config" hcl:"efi_config"`
	EFIDisk                   *string                    `mapstructure:"efidisk" cty:"efidisk" hcl:"efidisk"`
	Machine                   *string                    `mapstructure:"machine" cty:"machine" hcl:"machine"`
	Rng0                      *Flatrng0Config            `mapstructure:"rng0" cty:"rng0" hcl:"rng0"`
	VGA                       *FlatvgaConfig             `mapstructure:"vga" cty:"vga" hcl:"vga"`
	NICs                      []FlatNICConfig            `mapstructure:"network_adapters" cty:"network_adapters" hcl:"network_adapters"`
	Disks                     []FlatdiskConfig           `mapstructure:"disks" cty:"disks" hcl:"disks"`
	PCIDevices                []FlatpciDeviceConfig      `mapstructure:"pci_devices" cty:"pci_devices" hcl:"pci_devices"`
	Serials                   []string                   `mapstructure:"serials" cty:"serials" hcl:"serials"`
	Agent                     *bool                      `mapstructure:"qemu_agent" cty:"qemu_agent" hcl:"qemu_agent"`
	SCSIController            *string                    `mapstructure:"scsi_controller" cty:"scsi_controller" hcl:"scsi_controller"`
	Onboot                    *bool                      `mapstructure:"onboot" cty:"onboot" hcl:"onboot"`
	DisableKVM                *bool                      `mapstructure:"disable_kvm" cty:"disable_kvm" hcl:"disable_kvm"`
	TemplateName              *string                    `mapstructure:"template_name" cty:"template_name" hcl:"template_name"`
	TemplateDescription       *string                    `mapstructure:"template_description" cty:"template_description" hcl:"template_description"`
	CloudInit                 *bool                      `mapstructure:"cloud_init" cty:"cloud_init" hcl:"cloud_init"`
	CloudInitStoragePool      *string                    `mapstructure:"cloud_init_storage_pool" cty:"cloud_init_storage_pool" hcl:"cloud_init_storage_pool"`
	AdditionalISOFiles        []FlatadditionalISOsConfig `mapstructure:"additional_iso_files" cty:"additional_iso_files" hcl:"additional_iso_files"`
	VMInterface               *string                    `mapstructure:"vm_interface" cty:"vm_interface" hcl:"vm_interface"`
	AdditionalArgs            *string                    `mapstructure:"qemu_additional_args" cty:"qemu_additional_args" hcl:"qemu_additional_args"`
}

FlatConfig is an auto-generated flat version of Config. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.

func (*FlatConfig) HCL2Spec

func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec

HCL2Spec returns the hcl spec of a Config. This spec is used by HCL to read the fields of Config. The decoded values from this spec will then be applied to a FlatConfig.

type FlatNICConfig added in v1.1.2

type FlatNICConfig struct {
	Model        *string `mapstructure:"model" cty:"model" hcl:"model"`
	PacketQueues *int    `mapstructure:"packet_queues" cty:"packet_queues" hcl:"packet_queues"`
	MACAddress   *string `mapstructure:"mac_address" cty:"mac_address" hcl:"mac_address"`
	MTU          *int    `mapstructure:"mtu" cty:"mtu" hcl:"mtu"`
	Bridge       *string `mapstructure:"bridge" cty:"bridge" hcl:"bridge"`
	VLANTag      *string `mapstructure:"vlan_tag" cty:"vlan_tag" hcl:"vlan_tag"`
	Firewall     *bool   `mapstructure:"firewall" cty:"firewall" hcl:"firewall"`
}

FlatNICConfig is an auto-generated flat version of NICConfig. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.

func (*FlatNICConfig) HCL2Spec added in v1.1.2

func (*FlatNICConfig) HCL2Spec() map[string]hcldec.Spec

HCL2Spec returns the hcl spec of a NICConfig. This spec is used by HCL to read the fields of NICConfig. The decoded values from this spec will then be applied to a FlatNICConfig.

type FlatadditionalISOsConfig

type FlatadditionalISOsConfig struct {
	ISOChecksum     *string           `mapstructure:"iso_checksum" required:"true" cty:"iso_checksum" hcl:"iso_checksum"`
	RawSingleISOUrl *string           `mapstructure:"iso_url" required:"true" cty:"iso_url" hcl:"iso_url"`
	ISOUrls         []string          `mapstructure:"iso_urls" cty:"iso_urls" hcl:"iso_urls"`
	TargetPath      *string           `mapstructure:"iso_target_path" cty:"iso_target_path" hcl:"iso_target_path"`
	TargetExtension *string           `mapstructure:"iso_target_extension" cty:"iso_target_extension" hcl:"iso_target_extension"`
	Device          *string           `mapstructure:"device" cty:"device" hcl:"device"`
	ISOFile         *string           `mapstructure:"iso_file" cty:"iso_file" hcl:"iso_file"`
	ISOStoragePool  *string           `mapstructure:"iso_storage_pool" cty:"iso_storage_pool" hcl:"iso_storage_pool"`
	ISODownloadPVE  *bool             `mapstructure:"iso_download_pve" cty:"iso_download_pve" hcl:"iso_download_pve"`
	Unmount         *bool             `mapstructure:"unmount" cty:"unmount" hcl:"unmount"`
	CDFiles         []string          `mapstructure:"cd_files" cty:"cd_files" hcl:"cd_files"`
	CDContent       map[string]string `mapstructure:"cd_content" cty:"cd_content" hcl:"cd_content"`
	CDLabel         *string           `mapstructure:"cd_label" cty:"cd_label" hcl:"cd_label"`
}

FlatadditionalISOsConfig is an auto-generated flat version of additionalISOsConfig. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.

func (*FlatadditionalISOsConfig) HCL2Spec

func (*FlatadditionalISOsConfig) HCL2Spec() map[string]hcldec.Spec

HCL2Spec returns the hcl spec of a additionalISOsConfig. This spec is used by HCL to read the fields of additionalISOsConfig. The decoded values from this spec will then be applied to a FlatadditionalISOsConfig.

type FlatdiskConfig

type FlatdiskConfig struct {
	Type            *string `mapstructure:"type" cty:"type" hcl:"type"`
	StoragePool     *string `mapstructure:"storage_pool" cty:"storage_pool" hcl:"storage_pool"`
	StoragePoolType *string `mapstructure:"storage_pool_type" cty:"storage_pool_type" hcl:"storage_pool_type"`
	Size            *string `mapstructure:"disk_size" cty:"disk_size" hcl:"disk_size"`
	CacheMode       *string `mapstructure:"cache_mode" cty:"cache_mode" hcl:"cache_mode"`
	DiskFormat      *string `mapstructure:"format" cty:"format" hcl:"format"`
	IOThread        *bool   `mapstructure:"io_thread" cty:"io_thread" hcl:"io_thread"`
	Discard         *bool   `mapstructure:"discard" cty:"discard" hcl:"discard"`
	SSD             *bool   `mapstructure:"ssd" cty:"ssd" hcl:"ssd"`
}

FlatdiskConfig is an auto-generated flat version of diskConfig. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.

func (*FlatdiskConfig) HCL2Spec

func (*FlatdiskConfig) HCL2Spec() map[string]hcldec.Spec

HCL2Spec returns the hcl spec of a diskConfig. This spec is used by HCL to read the fields of diskConfig. The decoded values from this spec will then be applied to a FlatdiskConfig.

type FlatefiConfig added in v1.1.1

type FlatefiConfig struct {
	EFIStoragePool  *string `mapstructure:"efi_storage_pool" cty:"efi_storage_pool" hcl:"efi_storage_pool"`
	PreEnrolledKeys *bool   `mapstructure:"pre_enrolled_keys" cty:"pre_enrolled_keys" hcl:"pre_enrolled_keys"`
	EFIType         *string `mapstructure:"efi_type" cty:"efi_type" hcl:"efi_type"`
}

FlatefiConfig is an auto-generated flat version of efiConfig. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.

func (*FlatefiConfig) HCL2Spec added in v1.1.1

func (*FlatefiConfig) HCL2Spec() map[string]hcldec.Spec

HCL2Spec returns the hcl spec of a efiConfig. This spec is used by HCL to read the fields of efiConfig. The decoded values from this spec will then be applied to a FlatefiConfig.

type FlatpciDeviceConfig added in v1.1.4

type FlatpciDeviceConfig struct {
	Host        *string `mapstructure:"host" cty:"host" hcl:"host"`
	DeviceID    *string `mapstructure:"device_id" cty:"device_id" hcl:"device_id"`
	LegacyIGD   *bool   `mapstructure:"legacy_igd" cty:"legacy_igd" hcl:"legacy_igd"`
	Mapping     *string `mapstructure:"mapping" cty:"mapping" hcl:"mapping"`
	PCIe        *bool   `mapstructure:"pcie" cty:"pcie" hcl:"pcie"`
	MDEV        *string `mapstructure:"mdev" cty:"mdev" hcl:"mdev"`
	HideROMBAR  *bool   `mapstructure:"hide_rombar" cty:"hide_rombar" hcl:"hide_rombar"`
	ROMFile     *string `mapstructure:"romfile" cty:"romfile" hcl:"romfile"`
	SubDeviceID *string `mapstructure:"sub_device_id" cty:"sub_device_id" hcl:"sub_device_id"`
	SubVendorID *string `mapstructure:"sub_vendor_id" cty:"sub_vendor_id" hcl:"sub_vendor_id"`
	VendorID    *string `mapstructure:"vendor_id" cty:"vendor_id" hcl:"vendor_id"`
	XVGA        *bool   `mapstructure:"x_vga" cty:"x_vga" hcl:"x_vga"`
}

FlatpciDeviceConfig is an auto-generated flat version of pciDeviceConfig. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.

func (*FlatpciDeviceConfig) HCL2Spec added in v1.1.4

func (*FlatpciDeviceConfig) HCL2Spec() map[string]hcldec.Spec

HCL2Spec returns the hcl spec of a pciDeviceConfig. This spec is used by HCL to read the fields of pciDeviceConfig. The decoded values from this spec will then be applied to a FlatpciDeviceConfig.

type Flatrng0Config added in v1.1.4

type Flatrng0Config struct {
	Source   *string `mapstructure:"source" required:"true" cty:"source" hcl:"source"`
	MaxBytes *int    `mapstructure:"max_bytes" required:"true" cty:"max_bytes" hcl:"max_bytes"`
	Period   *int    `mapstructure:"period" required:"false" cty:"period" hcl:"period"`
}

Flatrng0Config is an auto-generated flat version of rng0Config. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.

func (*Flatrng0Config) HCL2Spec added in v1.1.4

func (*Flatrng0Config) HCL2Spec() map[string]hcldec.Spec

HCL2Spec returns the hcl spec of a rng0Config. This spec is used by HCL to read the fields of rng0Config. The decoded values from this spec will then be applied to a Flatrng0Config.

type FlatvgaConfig

type FlatvgaConfig struct {
	Type   *string `mapstructure:"type" cty:"type" hcl:"type"`
	Memory *int    `mapstructure:"memory" cty:"memory" hcl:"memory"`
}

FlatvgaConfig is an auto-generated flat version of vgaConfig. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.

func (*FlatvgaConfig) HCL2Spec

func (*FlatvgaConfig) HCL2Spec() map[string]hcldec.Spec

HCL2Spec returns the hcl spec of a vgaConfig. This spec is used by HCL to read the fields of vgaConfig. The decoded values from this spec will then be applied to a FlatvgaConfig.

type NICConfig added in v1.1.2

type NICConfig struct {
	// Model of the virtual network adapter. Can be
	// `rtl8139`, `ne2k_pci`, `e1000`, `pcnet`, `virtio`, `ne2k_isa`,
	// `i82551`, `i82557b`, `i82559er`, `vmxnet3`, `e1000-82540em`,
	// `e1000-82544gc` or `e1000-82545em`. Defaults to `e1000`.
	Model string `mapstructure:"model"`
	// Number of packet queues to be used on the device.
	// Values greater than 1 indicate that the multiqueue feature is activated.
	// For best performance, set this to the number of cores available to the
	// virtual machine. CPU load on the host and guest systems will increase as
	// the traffic increases, so activate this option only when the VM has to
	// handle a great number of incoming connections, such as when the VM is
	// operating as a router, reverse proxy or a busy HTTP server. Requires
	// `virtio` network adapter. Defaults to `0`.
	PacketQueues int `mapstructure:"packet_queues"`
	// Give the adapter a specific MAC address. If
	// not set, defaults to a random MAC. If value is "repeatable", value of MAC
	// address is deterministic based on VM ID and NIC ID.
	MACAddress string `mapstructure:"mac_address"`
	// Set the maximum transmission unit for the adapter. Valid
	// range: 0 - 65520. If set to `1`, the MTU is inherited from the bridge
	// the adapter is attached to. Defaults to `0` (use Proxmox default).
	MTU int `mapstructure:"mtu"`
	// Required. Which Proxmox bridge to attach the
	// adapter to.
	Bridge string `mapstructure:"bridge"`
	// If the adapter should tag packets. Defaults to
	// no tagging.
	VLANTag string `mapstructure:"vlan_tag"`
	// If the interface should be protected by the firewall.
	// Defaults to `false`.
	Firewall bool `mapstructure:"firewall"`
}

Network adapters attached to the virtual machine.

Example:

```json [

{
  "model": "virtio",
  "bridge": "vmbr0",
  "vlan_tag": "10",
  "firewall": true
}

] ```

func (*NICConfig) FlatMapstructure added in v1.1.2

func (*NICConfig) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec }

FlatMapstructure returns a new FlatNICConfig. FlatNICConfig is an auto-generated flat version of NICConfig. Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.

type ProxmoxVMCreator

type ProxmoxVMCreator interface {
	Create(*proxmox.VmRef, proxmox.ConfigQemu, multistep.StateBag) error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL