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
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Artifact ¶
type Artifact struct { // A map of regions to ksyun image id. KsyunImageId string // BuilderId is the unique ID for the builder that created this ksyun image BuilderIdValue string // 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 }
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"` 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"` 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"` 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"` 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"` 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"` KsyunKecDiskDevices `mapstructure:",squash"` }
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"` // Local_SSD || SSD3.0 || EHDD SystemDiskType string `mapstructure:"system_disk_type" required:"false"` SystemDiskSize int `mapstructure:"system_disk_size" required:"false"` // EbsDataDisk 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"` 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