Documentation
¶
Index ¶
- Constants
- Variables
- func CheckRequiredStates(state multistep.StateBag, keys ...string) error
- type Builder
- type Config
- type ConnectSupervisorConfig
- type CreateSourceConfig
- type FlatConfig
- type FlatConnectSupervisorConfig
- type FlatCreateSourceConfig
- type FlatWatchSourceConfig
- type PackerLogger
- type StepConnectSupervisor
- type StepCreateSource
- type StepWatchSource
- type WatchSourceConfig
Constants ¶
const ( StateKeySupervisorNamespace = "supervisor_namespace" StateKeyKubeClient = "kube_client" )
const ( DefaultSourceNamePrefix = "packer-vsphere-supervisor" VMSelectorLabelKey = DefaultSourceNamePrefix + "-selector" StateKeySourceName = "source_name" StateKeyVMCreated = "vm_created" StateKeyVMServiceCreated = "vm_service_created" StateKeyVMMetadataSecretCreated = "vm_metadata_secret_created" )
const ( DefaultWatchTimeoutSec = 600 StateKeyVMIP = "vm_ip" StateKeyCommunicateIP = "ip" )
const (
DefaultSSHUsername = "packer"
)
Variables ¶
var ( Mu sync.Mutex IsWatchingVM bool )
var InitKubeClientFunc = func(s *StepConnectSupervisor) (client.WithWatch, error) { config, err := clientcmd.BuildConfigFromFlags("", s.Config.KubeconfigPath) if err != nil { return nil, err } scheme := runtime.NewScheme() _ = corev1.AddToScheme(scheme) _ = vmopv1alpha1.AddToScheme(scheme) return client.NewWithWatch(config, client.Options{Scheme: scheme}) }
Setting this function as a variable so that it can be mocked in test.
Functions ¶
Types ¶
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
func (*Builder) ConfigSpec ¶
func (b *Builder) ConfigSpec() hcldec.ObjectSpec
type Config ¶
type Config struct {
packercommon.PackerConfig `mapstructure:",squash"`
CommunicatorConfig communicator.Config `mapstructure:",squash"`
ConnectSupervisorConfig `mapstructure:",squash"`
CreateSourceConfig `mapstructure:",squash"`
WatchSourceConfig `mapstructure:",squash"`
// 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 ConnectSupervisorConfig ¶
type ConnectSupervisorConfig struct {
// The path to kubeconfig file for accessing to the vSphere Supervisor cluster. Defaults to the value of `KUBECONFIG` envvar or `$HOME/.kube/config` if the envvar is not set.
KubeconfigPath string `mapstructure:"kubeconfig_path"`
// The Supervisor namespace to deploy the source VM. Defaults to the current context's namespace in kubeconfig.
SupervisorNamespace string `mapstructure:"supervisor_namespace"`
}
func (*ConnectSupervisorConfig) FlatMapstructure ¶
func (*ConnectSupervisorConfig) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec }
FlatMapstructure returns a new FlatConnectSupervisorConfig. FlatConnectSupervisorConfig is an auto-generated flat version of ConnectSupervisorConfig. Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
func (*ConnectSupervisorConfig) Prepare ¶
func (c *ConnectSupervisorConfig) Prepare() []error
type CreateSourceConfig ¶
type CreateSourceConfig struct {
// Name of the source virtual machine (VM) image.
ImageName string `mapstructure:"image_name" required:"true"`
// Name of the VM class that describes virtual hardware settings.
ClassName string `mapstructure:"class_name" required:"true"`
// Name of the storage class that configures storage-related attributes.
StorageClass string `mapstructure:"storage_class" required:"true"`
// Name of the source VM. Defaults to `packer-vsphere-supervisor-built-source`.
SourceName string `mapstructure:"source_name"`
// Name of the network type to attach to the source VM's network interface. Defaults to empty.
NetworkType string `mapstructure:"network_type"`
// Name of the network to attach to the source VM's network interface. Defaults to empty.
NetworkName string `mapstructure:"network_name"`
// Preserve the created objects even after importing them to the vSphere endpoint. Defaults to `false`.
KeepInputArtifact bool `mapstructure:"keep_input_artifact"`
}
func (*CreateSourceConfig) FlatMapstructure ¶
func (*CreateSourceConfig) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec }
FlatMapstructure returns a new FlatCreateSourceConfig. FlatCreateSourceConfig is an auto-generated flat version of CreateSourceConfig. Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
func (*CreateSourceConfig) Prepare ¶
func (c *CreateSourceConfig) Prepare() []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"`
KubeconfigPath *string `mapstructure:"kubeconfig_path" cty:"kubeconfig_path" hcl:"kubeconfig_path"`
SupervisorNamespace *string `mapstructure:"supervisor_namespace" cty:"supervisor_namespace" hcl:"supervisor_namespace"`
ImageName *string `mapstructure:"image_name" required:"true" cty:"image_name" hcl:"image_name"`
ClassName *string `mapstructure:"class_name" required:"true" cty:"class_name" hcl:"class_name"`
StorageClass *string `mapstructure:"storage_class" required:"true" cty:"storage_class" hcl:"storage_class"`
SourceName *string `mapstructure:"source_name" cty:"source_name" hcl:"source_name"`
NetworkType *string `mapstructure:"network_type" cty:"network_type" hcl:"network_type"`
NetworkName *string `mapstructure:"network_name" cty:"network_name" hcl:"network_name"`
KeepInputArtifact *bool `mapstructure:"keep_input_artifact" cty:"keep_input_artifact" hcl:"keep_input_artifact"`
WatchSourceTimeoutSec *int `mapstructure:"watch_source_timeout_sec" cty:"watch_source_timeout_sec" hcl:"watch_source_timeout_sec"`
}
FlatConfig is an auto-generated flat version of Config. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
type FlatConnectSupervisorConfig ¶
type FlatConnectSupervisorConfig struct {
KubeconfigPath *string `mapstructure:"kubeconfig_path" cty:"kubeconfig_path" hcl:"kubeconfig_path"`
SupervisorNamespace *string `mapstructure:"supervisor_namespace" cty:"supervisor_namespace" hcl:"supervisor_namespace"`
}
FlatConnectSupervisorConfig is an auto-generated flat version of ConnectSupervisorConfig. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
func (*FlatConnectSupervisorConfig) HCL2Spec ¶
func (*FlatConnectSupervisorConfig) HCL2Spec() map[string]hcldec.Spec
HCL2Spec returns the hcl spec of a ConnectSupervisorConfig. This spec is used by HCL to read the fields of ConnectSupervisorConfig. The decoded values from this spec will then be applied to a FlatConnectSupervisorConfig.
type FlatCreateSourceConfig ¶
type FlatCreateSourceConfig struct {
ImageName *string `mapstructure:"image_name" required:"true" cty:"image_name" hcl:"image_name"`
ClassName *string `mapstructure:"class_name" required:"true" cty:"class_name" hcl:"class_name"`
StorageClass *string `mapstructure:"storage_class" required:"true" cty:"storage_class" hcl:"storage_class"`
SourceName *string `mapstructure:"source_name" cty:"source_name" hcl:"source_name"`
NetworkType *string `mapstructure:"network_type" cty:"network_type" hcl:"network_type"`
NetworkName *string `mapstructure:"network_name" cty:"network_name" hcl:"network_name"`
KeepInputArtifact *bool `mapstructure:"keep_input_artifact" cty:"keep_input_artifact" hcl:"keep_input_artifact"`
}
FlatCreateSourceConfig is an auto-generated flat version of CreateSourceConfig. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
func (*FlatCreateSourceConfig) HCL2Spec ¶
func (*FlatCreateSourceConfig) HCL2Spec() map[string]hcldec.Spec
HCL2Spec returns the hcl spec of a CreateSourceConfig. This spec is used by HCL to read the fields of CreateSourceConfig. The decoded values from this spec will then be applied to a FlatCreateSourceConfig.
type FlatWatchSourceConfig ¶
type FlatWatchSourceConfig struct {
WatchSourceTimeoutSec *int `mapstructure:"watch_source_timeout_sec" cty:"watch_source_timeout_sec" hcl:"watch_source_timeout_sec"`
}
FlatWatchSourceConfig is an auto-generated flat version of WatchSourceConfig. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
func (*FlatWatchSourceConfig) HCL2Spec ¶
func (*FlatWatchSourceConfig) HCL2Spec() map[string]hcldec.Spec
HCL2Spec returns the hcl spec of a WatchSourceConfig. This spec is used by HCL to read the fields of WatchSourceConfig. The decoded values from this spec will then be applied to a FlatWatchSourceConfig.
type PackerLogger ¶
func (*PackerLogger) Error ¶
func (pl *PackerLogger) Error(msg string, args ...interface{})
func (*PackerLogger) Info ¶
func (pl *PackerLogger) Info(msg string, args ...interface{})
type StepConnectSupervisor ¶
type StepConnectSupervisor struct {
Config *ConnectSupervisorConfig
}
func (*StepConnectSupervisor) Cleanup ¶
func (s *StepConnectSupervisor) Cleanup(multistep.StateBag)
func (*StepConnectSupervisor) Run ¶
func (s *StepConnectSupervisor) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction
type StepCreateSource ¶
type StepCreateSource struct {
Config *CreateSourceConfig
CommunicatorConfig *communicator.Config
Namespace string
KubeClient client.Client
}
func (*StepCreateSource) Cleanup ¶
func (s *StepCreateSource) Cleanup(state multistep.StateBag)
func (*StepCreateSource) Run ¶
func (s *StepCreateSource) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction
type StepWatchSource ¶
type StepWatchSource struct {
Config *WatchSourceConfig
SourceName, Namespace string
KubeWatchClient client.WithWatch
}
func (*StepWatchSource) Cleanup ¶
func (s *StepWatchSource) Cleanup(state multistep.StateBag)
func (*StepWatchSource) Run ¶
func (s *StepWatchSource) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction
type WatchSourceConfig ¶
type WatchSourceConfig struct {
// The timeout in seconds to wait for the source VM to be ready. Defaults to `600`.
WatchSourceTimeoutSec int `mapstructure:"watch_source_timeout_sec"`
}
func (*WatchSourceConfig) FlatMapstructure ¶
func (*WatchSourceConfig) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec }
FlatMapstructure returns a new FlatWatchSourceConfig. FlatWatchSourceConfig is an auto-generated flat version of WatchSourceConfig. Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
func (*WatchSourceConfig) Prepare ¶
func (c *WatchSourceConfig) Prepare() []error