Documentation
¶
Index ¶
Constants ¶
const BuilderID = "hashicorp.scaleway"
BuilderID is the unique id for the builder
const StateKeyCreatedVolumes = "created_volumes"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Artifact ¶
type Artifact struct { // The name of the image ImageName string // The ID of the image ImageID string // Snapshots used by the generated image Snapshots []ArtifactSnapshot // The name of the zone ZoneName string // The Client for making API calls Client *scw.Client // StateData should store data such as GeneratedData // to be shared with post-processors StateData map[string]interface{} }
type ArtifactSnapshot ¶ added in v1.1.1
type ArtifactSnapshot struct { // The ID of the snapshot ID string // The name of the snapshot Name string }
func (ArtifactSnapshot) String ¶ added in v1.1.1
func (snap ArtifactSnapshot) String() string
type Builder ¶
type Builder struct { Config Config // contains filtered or unexported fields }
func (*Builder) ConfigSpec ¶
func (b *Builder) ConfigSpec() hcldec.ObjectSpec
type Config ¶
type Config struct { common.PackerConfig `mapstructure:",squash"` Comm communicator.Config `mapstructure:",squash"` // The AccessKey corresponding to the secret key. // Will be fetched first from the [scaleway configuration file](https://github.com/scaleway/scaleway-sdk-go/blob/master/scw/README.md). // It can also be specified via the environment variable SCW_ACCESS_KEY. AccessKey string `mapstructure:"access_key" required:"true"` // The SecretKey to authenticate against the Scaleway API. // Will be fetched first from the [scaleway configuration file](https://github.com/scaleway/scaleway-sdk-go/blob/master/scw/README.md). // It can also be specified via the environment variable SCW_SECRET_KEY. SecretKey string `mapstructure:"secret_key" required:"true"` // The Project ID in which the instances, volumes and snapshots will be created. // Will be fetched first from the [scaleway configuration file](https://github.com/scaleway/scaleway-sdk-go/blob/master/scw/README.md). // It can also be specified via the environment variable SCW_DEFAULT_PROJECT_ID. ProjectID string `mapstructure:"project_id" required:"true"` // The Zone in which the instances, volumes and snapshots will be created. // Will be fetched first from the [scaleway configuration file](https://github.com/scaleway/scaleway-sdk-go/blob/master/scw/README.md). // It can also be specified via the environment variable SCW_DEFAULT_ZONE Zone string `mapstructure:"zone" required:"true"` // The Scaleway API URL to use // Will be fetched first from the [scaleway configuration file](https://github.com/scaleway/scaleway-sdk-go/blob/master/scw/README.md). // It can also be specified via the environment variable SCW_API_URL APIURL string `mapstructure:"api_url"` // The UUID of the base image to use. This is the image // that will be used to launch a new server and provision it. See // the images list // get the complete list of the accepted image UUID. // The marketplace image label (eg `ubuntu_focal`) also works. Image string `mapstructure:"image" required:"true"` // The Image size in GB. Will only work for images based on block volumes. ImageSizeInGB int32 `mapstructure:"image_size_in_gb" required:"false"` // The name of the server commercial type: // DEV1-S, DEV1-M, DEV1-L, DEV1-XL, // PLAY2-PICO, PLAY2-NANO, PLAY2-MICRO, // PRO2-XXS, PRO2-XS, PRO2-S, PRO2-M, PRO2-L, // GP1-XS, GP1-S, GP1-M, GP1-L, GP1-XL, // ENT1-XXS, ENT1-XS, ENT1-S, ENT1-M, ENT1-L, ENT1-XL, ENT1-2XL, // GPU-3070-S, RENDER-S, STARDUST1-S, CommercialType string `mapstructure:"commercial_type" required:"true"` // The name of the resulting snapshot that will // appear in your account. Default packer-TIMESTAMP SnapshotName string `mapstructure:"snapshot_name" required:"false"` // The name of the resulting image that will appear in // your account. Default packer-TIMESTAMP ImageName string `mapstructure:"image_name" required:"false"` // The name assigned to the server. Default // packer-UUID ServerName string `mapstructure:"server_name" required:"false"` // The id of an existing bootscript to use when // booting the server. Bootscript string `mapstructure:"bootscript" required:"false"` // The type of boot, can be either local or // bootscript, Default bootscript BootType string `mapstructure:"boottype" required:"false"` // RemoveVolume remove the temporary volumes created before running the server RemoveVolume bool `mapstructure:"remove_volume"` // RootVolumeType lets you configure the root volume // See the [RootVolume](#root-volume-configuration) documentation for fields. RootVolume ConfigRootVolume `mapstructure:"root_volume" required:"false"` // BlockVolumes define block volumes attached to the server alongside the default volume // See the [BlockVolumes](#block-volumes-configuration) documentation for fields. BlockVolumes []ConfigBlockVolume `mapstructure:"block_volume"` // This value allows the user to remove information // that is particular to the instance used to build the image CleanupMachineRelatedData string `mapstructure:"cleanup_machine_related_data" required:"false"` // The time to wait for snapshot creation. Defaults to "1h" SnapshotCreationTimeout time.Duration `mapstructure:"snapshot_creation_timeout" required:"false"` // The time to wait for image creation. Defaults to "1h" ImageCreationTimeout time.Duration `mapstructure:"image_creation_timeout" required:"false"` // The time to wait for server creation. Defaults to "10m" ServerCreationTimeout time.Duration `mapstructure:"server_creation_timeout" required:"false"` // The time to wait for server shutdown. Defaults to "10m" ServerShutdownTimeout time.Duration `mapstructure:"server_shutdown_timeout" required:"false"` // User data to apply when launching the instance UserData map[string]string `mapstructure:"user_data" required:"false"` // A custom timeout for user data to assure its completion. Defaults to "0s" UserDataTimeout time.Duration `mapstructure:"user_data_timeout" required:"false"` // A list of tags to apply on the created image, volumes, and snapshots Tags []string `mapstructure:"tags" required:"false"` UserAgent string `mapstructure-to-hcl2:",skip"` // The token to use to authenticate with your account. // It can also be specified via environment variable SCALEWAY_API_TOKEN. You // can see and generate tokens in the "Credentials" // section of the control panel. // Deprecated: use SecretKey instead Token string `mapstructure:"api_token" required:"false"` // The organization id to use to identify your // organization. It can also be specified via environment variable // SCALEWAY_ORGANIZATION. Your organization id is available in the // "Account" section of the // control panel. // Previously named: api_access_key with environment variable: SCALEWAY_API_ACCESS_KEY // Deprecated: use ProjectID instead Organization string `mapstructure:"organization_id" required:"false"` // The name of the region to launch the server in (par1 // or ams1). Consequently, this is the region where the snapshot will be // available. // Deprecated: use Zone instead Region string `mapstructure:"region" required:"false"` // contains filtered or unexported fields }
func (*Config) FlatMapstructure ¶
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.
type ConfigBlockVolume ¶ added in v1.3.0
type ConfigBlockVolume struct { // The name of the created volume Name string `mapstructure:"name"` // ID of the snapshot to create the volume from SnapshotID string `mapstructure:"snapshot_id"` // Size of the newly created volume SizeInGB uint64 `mapstructure:"size_in_gb"` // IOPS is the number of requested iops for the server's volume. This will not impact created snapshot. IOPS *uint32 `mapstructure:"iops"` }
func (*ConfigBlockVolume) FlatMapstructure ¶ added in v1.3.0
func (*ConfigBlockVolume) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec }
FlatMapstructure returns a new FlatConfigBlockVolume. FlatConfigBlockVolume is an auto-generated flat version of ConfigBlockVolume. Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
func (*ConfigBlockVolume) VolumeTemplate ¶ added in v1.3.0
func (blockVolume *ConfigBlockVolume) VolumeTemplate() *instance.VolumeServerTemplate
type ConfigRootVolume ¶ added in v1.3.0
type ConfigRootVolume struct { // The type of the root volume Type string `mapstructure:"type"` // IOPS of the root volume if using SBS, will only affect runtime. Image's volumes cannot have a configured IOPS. IOPS *uint32 `mapstructure:"iops"` // Size of the root volume SizeInGB uint64 `mapstructure:"size_in_gb"` }
ConfigRootVolume is the configuration for your server's root volume
func (*ConfigRootVolume) FlatMapstructure ¶ added in v1.3.0
func (*ConfigRootVolume) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec }
FlatMapstructure returns a new FlatConfigRootVolume. FlatConfigRootVolume is an auto-generated flat version of ConfigRootVolume. Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
func (*ConfigRootVolume) IsConfigured ¶ added in v1.3.0
func (c *ConfigRootVolume) IsConfigured() bool
IsConfigured returns true if root volume has been manually configured. If true, the volume template should be used when creating the server.
func (*ConfigRootVolume) PostServerCreationSetup ¶ added in v1.3.0
func (c *ConfigRootVolume) PostServerCreationSetup(blockAPI *block.API, server *instance.Server) error
func (*ConfigRootVolume) VolumeServerTemplate ¶ added in v1.3.0
func (c *ConfigRootVolume) VolumeServerTemplate() *instance.VolumeServerTemplate
VolumeServerTemplate returns the template to create the volume in a CreateServerRequest
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"` AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` ProjectID *string `mapstructure:"project_id" required:"true" cty:"project_id" hcl:"project_id"` Zone *string `mapstructure:"zone" required:"true" cty:"zone" hcl:"zone"` APIURL *string `mapstructure:"api_url" cty:"api_url" hcl:"api_url"` Image *string `mapstructure:"image" required:"true" cty:"image" hcl:"image"` ImageSizeInGB *int32 `mapstructure:"image_size_in_gb" required:"false" cty:"image_size_in_gb" hcl:"image_size_in_gb"` CommercialType *string `mapstructure:"commercial_type" required:"true" cty:"commercial_type" hcl:"commercial_type"` SnapshotName *string `mapstructure:"snapshot_name" required:"false" cty:"snapshot_name" hcl:"snapshot_name"` ImageName *string `mapstructure:"image_name" required:"false" cty:"image_name" hcl:"image_name"` ServerName *string `mapstructure:"server_name" required:"false" cty:"server_name" hcl:"server_name"` Bootscript *string `mapstructure:"bootscript" required:"false" cty:"bootscript" hcl:"bootscript"` BootType *string `mapstructure:"boottype" required:"false" cty:"boottype" hcl:"boottype"` RemoveVolume *bool `mapstructure:"remove_volume" cty:"remove_volume" hcl:"remove_volume"` RootVolume *FlatConfigRootVolume `mapstructure:"root_volume" required:"false" cty:"root_volume" hcl:"root_volume"` BlockVolumes []FlatConfigBlockVolume `mapstructure:"block_volume" cty:"block_volume" hcl:"block_volume"` CleanupMachineRelatedData *string `` /* 130-byte string literal not displayed */ SnapshotCreationTimeout *string `mapstructure:"snapshot_creation_timeout" required:"false" cty:"snapshot_creation_timeout" hcl:"snapshot_creation_timeout"` ImageCreationTimeout *string `mapstructure:"image_creation_timeout" required:"false" cty:"image_creation_timeout" hcl:"image_creation_timeout"` ServerCreationTimeout *string `mapstructure:"server_creation_timeout" required:"false" cty:"server_creation_timeout" hcl:"server_creation_timeout"` ServerShutdownTimeout *string `mapstructure:"server_shutdown_timeout" required:"false" cty:"server_shutdown_timeout" hcl:"server_shutdown_timeout"` UserData map[string]string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` UserDataTimeout *string `mapstructure:"user_data_timeout" required:"false" cty:"user_data_timeout" hcl:"user_data_timeout"` Tags []string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` Token *string `mapstructure:"api_token" required:"false" cty:"api_token" hcl:"api_token"` Organization *string `mapstructure:"organization_id" required:"false" cty:"organization_id" hcl:"organization_id"` Region *string `mapstructure:"region" required:"false" cty:"region" hcl:"region"` }
FlatConfig is an auto-generated flat version of Config. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
type FlatConfigBlockVolume ¶ added in v1.3.0
type FlatConfigBlockVolume struct { Name *string `mapstructure:"name" cty:"name" hcl:"name"` SnapshotID *string `mapstructure:"snapshot_id" cty:"snapshot_id" hcl:"snapshot_id"` SizeInGB *uint64 `mapstructure:"size_in_gb" cty:"size_in_gb" hcl:"size_in_gb"` IOPS *uint32 `mapstructure:"iops" cty:"iops" hcl:"iops"` }
FlatConfigBlockVolume is an auto-generated flat version of ConfigBlockVolume. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
func (*FlatConfigBlockVolume) HCL2Spec ¶ added in v1.3.0
func (*FlatConfigBlockVolume) HCL2Spec() map[string]hcldec.Spec
HCL2Spec returns the hcl spec of a ConfigBlockVolume. This spec is used by HCL to read the fields of ConfigBlockVolume. The decoded values from this spec will then be applied to a FlatConfigBlockVolume.
type FlatConfigRootVolume ¶ added in v1.3.0
type FlatConfigRootVolume struct { Type *string `mapstructure:"type" cty:"type" hcl:"type"` IOPS *uint32 `mapstructure:"iops" cty:"iops" hcl:"iops"` SizeInGB *uint64 `mapstructure:"size_in_gb" cty:"size_in_gb" hcl:"size_in_gb"` }
FlatConfigRootVolume is an auto-generated flat version of ConfigRootVolume. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
func (*FlatConfigRootVolume) HCL2Spec ¶ added in v1.3.0
func (*FlatConfigRootVolume) HCL2Spec() map[string]hcldec.Spec
HCL2Spec returns the hcl spec of a ConfigRootVolume. This spec is used by HCL to read the fields of ConfigRootVolume. The decoded values from this spec will then be applied to a FlatConfigRootVolume.
type StepPreValidate ¶ added in v1.2.1
StepPreValidate provides an opportunity to pre-validate any configuration for the build before actually doing any time-consuming work
func (*StepPreValidate) Cleanup ¶ added in v1.2.1
func (s *StepPreValidate) Cleanup(_ multistep.StateBag)
func (*StepPreValidate) Run ¶ added in v1.2.1
func (s *StepPreValidate) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction
Source Files
¶
- api.go
- artifact.go
- builder.go
- config.go
- config.hcl2spec.go
- config_block.go
- config_root_volume.go
- config_root_volume.hcl2spec.go
- step_backup.go
- step_cleanup_machine_data.go
- step_create_server.go
- step_create_ssh_key.go
- step_create_volume.go
- step_pre_validate.go
- step_server_info.go
- step_shutdown.go
- step_sweep.go
- step_wait_user_data.go