Documentation
¶
Overview ¶
The ksyun contains a packersdk.Builder implementation that builds ecs images for ksyun.
Index ¶
Constants ¶
const BuilderId = "ksyun.kec"
The unique ID for this builder
const (
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Artifact ¶
type Artifact struct {
*ksyun.Artifact
// ksyun connection for performing API stuff.
Client *ClientKecWrapper
}
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
func (*Builder) ConfigSpec ¶
func (b *Builder) ConfigSpec() hcldec.ObjectSpec
type ClientKecConfig ¶ added in v0.0.7
type ClientKecConfig struct {
ksyun.ClientConfig `mapstructure:",squash"`
// contains filtered or unexported fields
}
func (*ClientKecConfig) KecClient ¶ added in v0.0.10
func (c *ClientKecConfig) KecClient(stateBag *multistep.BasicStateBag) *ClientKecWrapper
type ClientKecWrapper ¶ added in v0.0.7
func (*ClientKecWrapper) WaitKecImageStatus ¶ added in v0.0.7
func (*ClientKecWrapper) WaitKecInstanceStatus ¶ added in v0.0.7
type Config ¶
type Config struct {
common.PackerConfig `mapstructure:",squash"`
ClientKecConfig `mapstructure:",squash"`
KsyunImageConfig `mapstructure:",squash"`
KsyunKecRunConfig `mapstructure:",squash"`
// contains filtered or unexported fields
}
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"`
KsyunAccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"`
KsyunSecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"`
KsyunRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"`
KsyunImageName *string `mapstructure:"image_name" required:"true" cty:"image_name" hcl:"image_name"`
KsyunImageType *string `mapstructure:"image_type" required:"false" cty:"image_type" hcl:"image_type"`
KsyunImageIgnoreDataDisks *bool `mapstructure:"image_ignore_data_disks" required:"false" cty:"image_ignore_data_disks" hcl:"image_ignore_data_disks"`
SnapshotIds []FlatKsyunKecDiskDevice `mapstructure:"snapshot_ids" required:"false" cty:"snapshot_ids" hcl:"snapshot_ids"`
DataDiskIds []FlatKsyunKecDiskDevice `mapstructure:"data_disk_ids" required:"false" cty:"data_disk_ids" hcl:"data_disk_ids"`
KsyunImageCopyRegions []string `mapstructure:"image_copy_regions" required:"false" cty:"image_copy_regions" hcl:"image_copy_regions"`
KsyunImageCopyNames []string `mapstructure:"image_copy_names" required:"false" cty:"image_copy_names" hcl:"image_copy_names"`
KsyunImageWarmUp *bool `mapstructure:"image_warm_up" required:"false" cty:"image_warm_up" hcl:"image_warm_up"`
Tags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"`
Tag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"`
InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"`
SourceImageId *string `mapstructure:"source_image_id" required:"true" cty:"source_image_id" hcl:"source_image_id"`
SourceImageFilter *ksyun.FlatKmiFilterOptions `mapstructure:"source_image_filter" required:"false" cty:"source_image_filter" hcl:"source_image_filter"`
SystemDiskType *string `mapstructure:"system_disk_type" required:"false" cty:"system_disk_type" hcl:"system_disk_type"`
SystemDiskSize *int `mapstructure:"system_disk_size" required:"false" cty:"system_disk_size" hcl:"system_disk_size"`
KsyunEbsDataDisks []FlatKsyunEbsDataDisk `mapstructure:"data_disks" required:"false" cty:"data_disks" hcl:"data_disks"`
InstanceChargeType *string `mapstructure:"instance_charge_type" required:"true" cty:"instance_charge_type" hcl:"instance_charge_type"`
InstanceName *string `mapstructure:"instance_name" required:"false" cty:"instance_name" hcl:"instance_name"`
SriovNetSupport *bool `mapstructure:"sriov_net_support" required:"false" cty:"sriov_net_support" hcl:"sriov_net_support"`
LocalVolumeSnapshotId *string `mapstructure:"local_volume_snapshot_id" required:"false" cty:"local_volume_snapshot_id" hcl:"local_volume_snapshot_id"`
DataDiskGb *int `mapstructure:"data_disk_gb" required:"false" cty:"data_disk_gb" hcl:"data_disk_gb"`
UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"`
VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"`
VpcName *string `mapstructure:"vpc_name" required:"false" cty:"vpc_name" hcl:"vpc_name"`
VpcCidrBlock *string `mapstructure:"vpc_cidr_block" required:"false" cty:"vpc_cidr_block" hcl:"vpc_cidr_block"`
SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"`
SubnetName *string `mapstructure:"subnet_name" required:"false" cty:"subnet_name" hcl:"subnet_name"`
DNS1 *string `mapstructure:"dns1" required:"false" cty:"dns1" hcl:"dns1"`
DNS2 *string `mapstructure:"dns2" required:"false" cty:"dns2" hcl:"dns2"`
SubnetCidrBlock *string `mapstructure:"subnet_cidr_block" required:"false" cty:"subnet_cidr_block" hcl:"subnet_cidr_block"`
AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"`
SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"`
SecurityGroupName *string `mapstructure:"security_group_name" required:"false" cty:"security_group_name" hcl:"security_group_name"`
PrivateIpAddress *string `mapstructure:"private_ip_address" required:"false" cty:"private_ip_address" hcl:"private_ip_address"`
AssociatePublicIpAddress *bool `` /* 127-byte string literal not displayed */
PublicIpChargeType *string `mapstructure:"public_ip_charge_type" required:"false" cty:"public_ip_charge_type" hcl:"public_ip_charge_type"`
PublicIpBandWidth *int `mapstructure:"public_ip_band_width" required:"false" cty:"public_ip_band_width" hcl:"public_ip_band_width"`
ProjectId *string `mapstructure:"project_id" required:"false" cty:"project_id" hcl:"project_id"`
RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"`
RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"`
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"`
}
FlatConfig is an auto-generated flat version of Config. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
type FlatKsyunEbsDataDisk ¶
type FlatKsyunEbsDataDisk struct {
EbsDataDiskType *string `mapstructure:"data_disk_type" required:"true" cty:"data_disk_type" hcl:"data_disk_type"`
EbsDataDiskSize *int `mapstructure:"data_disk_size" required:"true" cty:"data_disk_size" hcl:"data_disk_size"`
EbsDataDiskSnapshotId *string `mapstructure:"data_disk_snapshot_id" required:"false" cty:"data_disk_snapshot_id" hcl:"data_disk_snapshot_id"`
}
FlatKsyunEbsDataDisk is an auto-generated flat version of KsyunEbsDataDisk. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
func (*FlatKsyunEbsDataDisk) HCL2Spec ¶
func (*FlatKsyunEbsDataDisk) HCL2Spec() map[string]hcldec.Spec
HCL2Spec returns the hcl spec of a KsyunEbsDataDisk. This spec is used by HCL to read the fields of KsyunEbsDataDisk. The decoded values from this spec will then be applied to a FlatKsyunEbsDataDisk.
type FlatKsyunKecDiskDevice ¶ added in v0.0.7
type FlatKsyunKecDiskDevice struct {
SnapshotId *string `mapstructure:"snapshot_id" required:"false" cty:"snapshot_id" hcl:"snapshot_id"`
DataDiskId *string `mapstructure:"data_disk_id" required:"false" cty:"data_disk_id" hcl:"data_disk_id"`
}
FlatKsyunKecDiskDevice is an auto-generated flat version of KsyunKecDiskDevice. Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
func (*FlatKsyunKecDiskDevice) HCL2Spec ¶ added in v0.0.7
func (*FlatKsyunKecDiskDevice) HCL2Spec() map[string]hcldec.Spec
HCL2Spec returns the hcl spec of a KsyunKecDiskDevice. This spec is used by HCL to read the fields of KsyunKecDiskDevice. The decoded values from this spec will then be applied to a FlatKsyunKecDiskDevice.
type KsyunEbsDataDisk ¶
type KsyunEbsDataDisk struct {
// SSD3.0|| EHDD
EbsDataDiskType string `mapstructure:"data_disk_type" required:"true"`
// [10,16000]
EbsDataDiskSize int `mapstructure:"data_disk_size" required:"true"`
// pattern ^[a-zA-Z0-9-]{36}$
EbsDataDiskSnapshotId string `mapstructure:"data_disk_snapshot_id" required:"false"`
}
func (*KsyunEbsDataDisk) FlatMapstructure ¶
func (*KsyunEbsDataDisk) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec }
FlatMapstructure returns a new FlatKsyunEbsDataDisk. FlatKsyunEbsDataDisk is an auto-generated flat version of KsyunEbsDataDisk. Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
type KsyunImageConfig ¶
type KsyunImageConfig struct {
// The name of the user-defined image, [2, 64] English or Chinese
// characters. It must begin with an uppercase/lowercase letter or a
// Chinese character, and may contain numbers, `_` or `-`. It cannot begin
// with `http://` or `https://`.
KsyunImageName string `mapstructure:"image_name" required:"true"`
// The type of image
// LocalImage (ebs) or CommonImage (ks3)
KsyunImageType string `mapstructure:"image_type" required:"false"`
// If this value is true, the image created will not include any snapshot
// of data disks. The default value is false.
KsyunImageIgnoreDataDisks bool `mapstructure:"image_ignore_data_disks" required:"false"`
KsyunKecDiskDevices `mapstructure:",squash"`
// Copy to the regions.
KsyunImageCopyRegions []string `mapstructure:"image_copy_regions" required:"false"`
// The image name in copied regions
KsyunImageCopyNames []string `mapstructure:"image_copy_names" required:"false"`
KsyunImageShareAccounts []string `mapstructure:"image_share_accounts" required:"false"`
// Set the image as warm-up for fast boot
KsyunImageWarmUp bool `mapstructure:"image_warm_up" required:"false"`
// Key/value pair tags applied to the destination image.
Tags map[string]string `mapstructure:"tags" required:"false"`
// Same as [`tags`](#tags) but defined as a singular repeatable
// block containing a `key` and a `value` field. In HCL2 mode the
// [`dynamic_block`](/packer/docs/templates/hcl_templates/expressions#dynamic-blocks)
// will allow you to create those programatically.
Tag config.KeyValues `mapstructure:"tag" required:"false"`
}
func (*KsyunImageConfig) Prepare ¶
func (c *KsyunImageConfig) Prepare(ctx *interpolate.Context) []error
type KsyunKecDiskDevice ¶ added in v0.0.7
type KsyunKecDiskDevice struct {
// The instance needs to create a snapshot ID of the image, which must contain a system disk snapshot ID
// Can be default: Yes, this parameter cannot be default when creating image based on snapshot
SnapshotId string `mapstructure:"snapshot_id" required:"false"`
// The ID of the data disk that the instance needs to mirror
// Default: Yes
DataDiskId string `mapstructure:"data_disk_id" required:"false"`
}
func (*KsyunKecDiskDevice) FlatMapstructure ¶ added in v0.0.7
func (*KsyunKecDiskDevice) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec }
FlatMapstructure returns a new FlatKsyunKecDiskDevice. FlatKsyunKecDiskDevice is an auto-generated flat version of KsyunKecDiskDevice. Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
type KsyunKecDiskDevices ¶ added in v0.0.7
type KsyunKecDiskDevices struct {
SnapshotIds []KsyunKecDiskDevice `mapstructure:"snapshot_ids" required:"false"`
DataDiskIds []KsyunKecDiskDevice `mapstructure:"data_disk_ids" required:"false"`
}
type KsyunKecRunConfig ¶ added in v0.0.7
type KsyunKecRunConfig struct {
// Instance package type, if the instance package type is not specified when calling, the default value is I1.1A.
InstanceType string `mapstructure:"instance_type" required:"true"`
SourceImageId string `mapstructure:"source_image_id" required:"true"`
// Filters used to populate the `source_image_id` field.
//
// Example Hcl usage:
// “`hcl
// source_image_filter {
// platform = "centos-7.5"
// name_regex = "centos-7.5.*"
// image_source = "system" # import, copy, share, extend, system.
// most_recent = true
// }
// “`
// `most_recent` will cause this to succeed by selecting the newest image.
//
SourceImageFilter ksyun.KmiFilterOptions `mapstructure:"source_image_filter" required:"false"`
// Local_SSD || SSD3.0 || EHDD
SystemDiskType string `mapstructure:"system_disk_type" required:"false"`
SystemDiskSize int `mapstructure:"system_disk_size" required:"false"`
// `data_disks` is able to create Ksyun Kec instance with data disks.
// Example Hcl usage:
// “`hcl
// data_disks {
// data_disk_type = "SSD3.0"
// data_disk_size = 50
// data_disk_snapshot_id = "data disk snapshot id" # creat disk with a data disk snapshot existed.
// }
// “`
//
KsyunEbsDataDisks []KsyunEbsDataDisk `mapstructure:"data_disks" required:"false"`
// PostPaidByDay or PostPaidByHour
// default is PostPaidByDay
InstanceChargeType string `mapstructure:"instance_charge_type" required:"true"`
// Display name of the instance, which is a string of 2 to 128 Chinese or
// English characters. It must begin with an uppercase/lowercase letter or
// a Chinese charac displayed on the Alibaba Cloud console. If this
// // parameter is not specified, the default value is InstanceId of the
// // instance. It cannot begin with `http://` or `https://`.ter and can contain numerals, `.`, `_`, or `-`. The
// instance name is packer_kec_instance
InstanceName string `mapstructure:"instance_name" required:"false"`
// This parameter needs to satisfy the following two conditions:
// IO optimized I1, calculation optimized C1, and IO optimized I2 are more than 8C packages
// We use the standard image improved by Jinshan cloud or the user-defined image made by
// the instance of starting the Jinshan cloud standard image
// default : false
SriovNetSupport bool `mapstructure:"sriov_net_support" required:"false"`
// Indicating whether needs local volume snapshot with creating kec instance
LocalVolumeSnapshotId string `mapstructure:"local_volume_snapshot_id" required:"false"`
// The data volume capacity is in GB. The capacity limit changes according to the definition of the instance package
// type. If it is not specified when calling, it is the minimum value of the corresponding instance package type.
// When the instancetype is a general-purpose host N1, N2, N3 or a local nvme I4, this parameter
// does not take effect.
DataDiskGb int `mapstructure:"data_disk_gb" required:"false"`
// The user-defined data provided for instance startup needs to be encoded in Base64 mode,
// and the maximum data size supported is 16kb
UserData string `mapstructure:"user_data" required:"false"`
ksyun.CommonConfig `mapstructure:",squash"`
}
func (*KsyunKecRunConfig) Prepare ¶ added in v0.0.7
func (c *KsyunKecRunConfig) Prepare(ctx *interpolate.Context) []error