mws

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2026 License: MPL-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DriverKey       = "driver"
	HookKey         = "hook"
	UIKey           = "ui"
	CommunicatorKey = "communicator"
	PrefixKey       = "prefix"
	ErrorKey        = "error"

	DiskNameKey            = "disk_name"
	ExternalAddressNameKey = "external_address_name"
	NetworkNameKey         = "network_name"
	SubnetNameKey          = "subnet_name"
	VirtualMachineNameKey  = "virtual_machine_name"
	FirewallRuleNameKey    = "firewall_rule_name"

	DiskRefKey       = "disk_ref"
	ImageKey         = "image"
	GeneratedDataKey = "generated_data"

	InstanceIPKey = "instance_ip"
	InstanceIDKey = "instance_id"
)
View Source
const (
	//nolint:revive // Very special constant for packer
	BuilderId = "packer.mws"
)
View Source
const (
	FirewallRuleName = "access-from-internet-ssh"
)

Variables

This section is empty.

Functions

func ActionHaltWithError added in v0.3.0

func ActionHaltWithError(state multistep.StateBag, err error) multistep.StepAction

func ActionHaltWithErrorf added in v0.3.0

func ActionHaltWithErrorf(state multistep.StateBag, format string, args ...any) multistep.StepAction

func CommHost

func CommHost(host string) func(state multistep.StateBag) (string, error)

func ConvertToIPv6 added in v0.4.0

func ConvertToIPv6(address *ipaddress.IPAddress, prefixStr string) (*ipaddress.IPAddress, error)

ConvertToIPv6 converts an ipaddress.IPAddress containing an IPv4 address to an IPv6 address according to RFC 6052. https://www.rfc-editor.org/info/rfc6052/

Types

type Artifact

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

func (*Artifact) BuilderId

func (*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) any

func (*Artifact) String

func (a *Artifact) String() string

type Builder

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

func (*Builder) ConfigSpec

func (b *Builder) ConfigSpec() hcldec.ObjectSpec

func (*Builder) Prepare

func (b *Builder) Prepare(raws ...any) ([]string, []string, error)

func (*Builder) Run

func (b *Builder) Run(ctx context.Context, ui packer.Ui, hook packer.Hook) (packer.Artifact, error)

type Config

type Config struct {
	common.PackerConfig               `mapstructure:",squash"`
	Communicator                      communicator.Config `mapstructure:",squash" json:"-"`
	commonconfig.AccessConfig         `mapstructure:",squash"`
	commonconfig.ImageConfig          `mapstructure:",squash"`
	commonconfig.VirtualMachineConfig `mapstructure:",squash"`
	// contains filtered or unexported fields
}

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(raws ...any) error

func (*Config) SetDefaults

func (c *Config) SetDefaults()

func (*Config) Validate

func (c *Config) Validate() 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"`
	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"`
	Project                         *string           `mapstructure:"project" required:"true" cty:"project" hcl:"project"`
	Zone                            *string           `mapstructure:"zone" required:"false" cty:"zone" hcl:"zone"`
	BaseEndpoint                    *string           `mapstructure:"base_endpoint" required:"false" cty:"base_endpoint" hcl:"base_endpoint"`
	ServiceAccountAuthorizedKeyPath *string           `` /* 151-byte string literal not displayed */
	Token                           *string           `mapstructure:"token" required:"false" cty:"token" hcl:"token"`
	ImageName                       *string           `mapstructure:"image_name" required:"false" cty:"image_name" hcl:"image_name"`
	ImageDisplayName                *string           `mapstructure:"image_display_name" required:"false" cty:"image_display_name" hcl:"image_display_name"`
	ImageDescription                *string           `mapstructure:"image_description" required:"false" cty:"image_description" hcl:"image_description"`
	DiskName                        *string           `mapstructure:"disk_name" required:"false" cty:"disk_name" hcl:"disk_name"`
	DiskType                        *string           `mapstructure:"disk_type" required:"false" cty:"disk_type" hcl:"disk_type"`
	DiskSize                        *string           `mapstructure:"disk_size" required:"false" cty:"disk_size" hcl:"disk_size"`
	DiskIOPS                        *int64            `mapstructure:"disk_iops" required:"false" cty:"disk_iops" hcl:"disk_iops"`
	SourceProject                   *string           `mapstructure:"source_project" required:"false" cty:"source_project" hcl:"source_project"`
	SourceImage                     *string           `mapstructure:"source_image" required:"false" cty:"source_image" hcl:"source_image"`
	SourceSnapshot                  *string           `mapstructure:"source_snapshot" required:"false" cty:"source_snapshot" hcl:"source_snapshot"`
	NetworkName                     *string           `mapstructure:"network_name" required:"false" cty:"network_name" hcl:"network_name"`
	SubnetName                      *string           `mapstructure:"subnet_name" required:"false" cty:"subnet_name" hcl:"subnet_name"`
	SubnetCidr                      *string           `mapstructure:"subnet_cidr" required:"false" cty:"subnet_cidr" hcl:"subnet_cidr"`
	UseExternalAddress              *bool             `mapstructure:"use_external_address" required:"false" cty:"use_external_address" hcl:"use_external_address"`
	ExternalAddressName             *string           `mapstructure:"external_address_name" required:"false" cty:"external_address_name" hcl:"external_address_name"`
	Nat64Enable                     *bool             `mapstructure:"nat64_enable" required:"false" cty:"nat64_enable" hcl:"nat64_enable"`
	Nat64IPV6Prefix                 *string           `mapstructure:"nat64_ipv6_prefix" required:"false" cty:"nat64_ipv6_prefix" hcl:"nat64_ipv6_prefix"`
	VirtualMachineName              *string           `mapstructure:"virtual_machine_name" required:"false" cty:"virtual_machine_name" hcl:"virtual_machine_name"`
	VMType                          *string           `mapstructure:"vm_type" required:"false" cty:"vm_type" hcl:"vm_type"`
	CloudConfig                     *string           `mapstructure:"cloud_config" required:"false" cty:"cloud_config" hcl:"cloud_config"`
	CleanupTimeout                  *string           `mapstructure:"cleanup_timeout" required:"false" cty:"cleanup_timeout" hcl:"cleanup_timeout"`
}

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 StepCreateImage

type StepCreateImage struct {
	Project          string
	ImageName        string
	ImageDisplayName string
	ImageDescription string

	GeneratedData *packerbuilderdata.GeneratedData
}

func (*StepCreateImage) Cleanup

func (*StepCreateImage) Run

type StepCreateVirtualMachine

type StepCreateVirtualMachine struct {
	Communicator *communicator.Config
	commonconfig.AccessConfig
	commonconfig.VirtualMachineConfig

	GeneratedData *packerbuilderdata.GeneratedData
}

func (*StepCreateVirtualMachine) Cleanup

func (s *StepCreateVirtualMachine) Cleanup(state multistep.StateBag)

func (*StepCreateVirtualMachine) Run

type StepCreateVirtualMachineDriver added in v0.3.0

type StepCreateVirtualMachineDriver interface {
	CreateDisk(context.Context, drivermws.CreateDiskParams) error
	CreateExternalAddress(context.Context, drivermws.CreateExternalAddressParams) (*ipaddress.IPAddress, error)
	CreateNetwork(context.Context, drivermws.CreateNetworkParams) error
	CreateSubnet(context.Context, drivermws.CreateSubnetParams) error
	CreateVirtualMachine(context.Context, drivermws.CreateVirtualMachineParams) (*ipaddress.IPAddress, error)
	CreateFirewallRule(context.Context, drivermws.CreateFirewallRuleParams) error

	DeleteDisk(context.Context, string) error
	DeleteExternalAddress(context.Context, string) error
	DeleteNetwork(context.Context, string) error
	DeleteSubnet(context.Context, string, string) error
	DeleteVirtualMachine(context.Context, string) error
	DeleteFirewallRule(context.Context, string, string) error
}

Directories

Path Synopsis
Package mock_mws is a generated GoMock package.
Package mock_mws is a generated GoMock package.

Jump to

Keyboard shortcuts

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