ecs

package
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Jan 25, 2022 License: MPL-2.0 Imports: 27 Imported by: 0

Documentation

Overview

The alicloud contains a packersdk.Builder implementation that builds ecs images for alicloud.

Index

Constants

View Source
const (
	ALICLOUD_DEFAULT_SHORT_TIMEOUT = 180
	ALICLOUD_DEFAULT_TIMEOUT       = 1800
	ALICLOUD_DEFAULT_LONG_TIMEOUT  = 3600
)
View Source
const (
	InstanceStatusRunning  = "Running"
	InstanceStatusStarting = "Starting"
	InstanceStatusStopped  = "Stopped"
	InstanceStatusStopping = "Stopping"
)
View Source
const (
	ImageStatusWaiting      = "Waiting"
	ImageStatusCreating     = "Creating"
	ImageStatusCreateFailed = "CreateFailed"
	ImageStatusAvailable    = "Available"
)
View Source
const (
	SnapshotStatusAll          = "all"
	SnapshotStatusProgressing  = "progressing"
	SnapshotStatusAccomplished = "accomplished"
	SnapshotStatusFailed       = "failed"
)
View Source
const (
	DiskStatusInUse     = "In_use"
	DiskStatusAvailable = "Available"
	DiskStatusAttaching = "Attaching"
	DiskStatusDetaching = "Detaching"
	DiskStatusCreating  = "Creating"
	DiskStatusReIniting = "ReIniting"
)
View Source
const (
	VpcStatusPending   = "Pending"
	VpcStatusAvailable = "Available"
)
View Source
const (
	VSwitchStatusPending   = "Pending"
	VSwitchStatusAvailable = "Available"
)
View Source
const (
	EipStatusAssociating   = "Associating"
	EipStatusUnassociating = "Unassociating"
	EipStatusInUse         = "InUse"
	EipStatusAvailable     = "Available"
)
View Source
const (
	ImageOwnerSystem      = "system"
	ImageOwnerSelf        = "self"
	ImageOwnerOthers      = "others"
	ImageOwnerMarketplace = "marketplace"
)
View Source
const (
	IOOptimizedNone      = "none"
	IOOptimizedOptimized = "optimized"
)
View Source
const (
	InstanceNetworkClassic = "classic"
	InstanceNetworkVpc     = "vpc"
)
View Source
const (
	DiskTypeSystem = "system"
	DiskTypeData   = "data"
)
View Source
const (
	TagResourceImage    = "image"
	TagResourceInstance = "instance"
	TagResourceSnapshot = "snapshot"
	TagResourceDisk     = "disk"
)
View Source
const (
	IpProtocolAll  = "all"
	IpProtocolTCP  = "tcp"
	IpProtocolUDP  = "udp"
	IpProtocolICMP = "icmp"
	IpProtocolGRE  = "gre"
)
View Source
const (
	NicTypeInternet = "internet"
	NicTypeIntranet = "intranet"
)
View Source
const (
	DefaultPortRange = "-1/-1"
	DefaultCidrIp    = "0.0.0.0/0"
	DefaultCidrBlock = "172.16.0.0/24"
)
View Source
const (
	EvalRetryErrorType    = EvalErrorType(true)
	EvalNotRetryErrorType = EvalErrorType(false)
)
View Source
const BuilderId = "baidu.bdcloud"

The unique ID for this builder

View Source
const DefaultRequestReadTimeout = 10 * time.Second
View Source
const Packer = "HashiCorp-Packer"

Variables

View Source
var (
	WaitForExpectSuccess = WaitForExpectEvalResult{
							// contains filtered or unexported fields
	}

	WaitForExpectToRetry = WaitForExpectEvalResult{
							// contains filtered or unexported fields
	}

	WaitForExpectFailToStop = WaitForExpectEvalResult{
							// contains filtered or unexported fields
	}
)

Functions

func ContainsInArray

func ContainsInArray(arr []string, value string) bool

func SSHHost

func SSHHost(e alicloudSSHHelper) func(multistep.StateBag) (string, error)

SSHHost returns a function that can be given to the SSH communicator

Types

type AlicloudAccessConfig

type AlicloudAccessConfig struct {
	RsAccessKey string `mapstructure:"rs_access_key" required:"true"`
	RsSecretKey string `mapstructure:"rs_secret_key" required:"true"`
	RsEndpoint  string `mapstructure:"rs_endpoint" required:"false"`

	BceAccessKey string `mapstructure:"bce_access_key" required:"true"`
	BceSecretKey string `mapstructure:"bce_secret_key" required:"true"`
	Region       string `mapstructure:"region" required:"false"`
	Endpoint     string `mapstructure:"endpoint" required:"false"`
	// contains filtered or unexported fields
}

Config of alicloud

func (*AlicloudAccessConfig) Client

func (c *AlicloudAccessConfig) Client() (*ClientWrapper, error)

Client for AlicloudClient

func (*AlicloudAccessConfig) Config

func (c *AlicloudAccessConfig) Config() error

func (*AlicloudAccessConfig) Prepare

func (c *AlicloudAccessConfig) Prepare(ctx *interpolate.Context) []error

func (*AlicloudAccessConfig) RsClient

func (c *AlicloudAccessConfig) RsClient() (*RsClientWrapper, error)

Client for AlicloudClient

type AlicloudImageConfig

type AlicloudImageConfig struct {
	SrcImageId      string `mapstructure:"src_image_id" required:"false"`
	SrcImageType    string `mapstructure:"src_image_type" required:"false"`
	SrcImageName    string `mapstructure:"src_image_name" required:"false"`
	DstImageName    string `mapstructure:"dst_image_name" required:"true"`
	DstImageVersion string `mapstructure:"dst_image_version" required:"true"`
}

func (*AlicloudImageConfig) Prepare

func (c *AlicloudImageConfig) Prepare(ctx *interpolate.Context) []error

func (*AlicloudImageConfig) ValidImageType

func (c *AlicloudImageConfig) ValidImageType() error

type Artifact

type Artifact struct {
	// A map of regions to alicloud image IDs.
	Region  string
	ImageId string

	// BuilderId is the unique ID for the builder that created this alicloud image
	BuilderIdValue string

	// Alcloud connection for performing API stuff.
	Client *ClientWrapper
}

func (*Artifact) BuilderId

func (a *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) interface{}

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 ...interface{}) ([]string, []string, error)

func (*Builder) Run

type ClientWrapper

type ClientWrapper struct {
	*bcc.Client
}

func (*ClientWrapper) CheckImageExist

func (c *ClientWrapper) CheckImageExist(image_id string) bool

func (*ClientWrapper) CheckImageOk

func (c *ClientWrapper) CheckImageOk(image_id string) (*api.GetImageDetailResult, error)

func (*ClientWrapper) EvalCouldRetryCheckImageOk

func (c *ClientWrapper) EvalCouldRetryCheckImageOk(evalErrors []string, evalErrorType EvalErrorType) func(response interface{}, err error) WaitForExpectEvalResult

func (*ClientWrapper) EvalCouldRetryImageCreateResponse

func (c *ClientWrapper) EvalCouldRetryImageCreateResponse(evalErrors []string, evalErrorType EvalErrorType) func(response interface{}, err error) WaitForExpectEvalResult

func (*ClientWrapper) ListImages

func (c *ClientWrapper) ListImages(imageType string, imageName string) ([]string, error)

func (*ClientWrapper) WaitForExpected

func (c *ClientWrapper) WaitForExpected(args *WaitForExpectArgs) (interface{}, error)

type Config

type Config struct {
	common.PackerConfig  `mapstructure:",squash"`
	AlicloudAccessConfig `mapstructure:",squash"`
	AlicloudImageConfig  `mapstructure:",squash"`
	RunConfig            `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.

type DiskSpec

type DiskSpec struct {
	StorageType string
	CdsSizeInGb int
	SnapshotId  string
}

type EvalErrorType

type EvalErrorType bool

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"`
	RsAccessKey               *string           `mapstructure:"rs_access_key" required:"true" cty:"rs_access_key" hcl:"rs_access_key"`
	RsSecretKey               *string           `mapstructure:"rs_secret_key" required:"true" cty:"rs_secret_key" hcl:"rs_secret_key"`
	RsEndpoint                *string           `mapstructure:"rs_endpoint" required:"false" cty:"rs_endpoint" hcl:"rs_endpoint"`
	BceAccessKey              *string           `mapstructure:"bce_access_key" required:"true" cty:"bce_access_key" hcl:"bce_access_key"`
	BceSecretKey              *string           `mapstructure:"bce_secret_key" required:"true" cty:"bce_secret_key" hcl:"bce_secret_key"`
	Region                    *string           `mapstructure:"region" required:"false" cty:"region" hcl:"region"`
	Endpoint                  *string           `mapstructure:"endpoint" required:"false" cty:"endpoint" hcl:"endpoint"`
	SrcImageId                *string           `mapstructure:"src_image_id" required:"false" cty:"src_image_id" hcl:"src_image_id"`
	SrcImageType              *string           `mapstructure:"src_image_type" required:"false" cty:"src_image_type" hcl:"src_image_type"`
	SrcImageName              *string           `mapstructure:"src_image_name" required:"false" cty:"src_image_name" hcl:"src_image_name"`
	DstImageName              *string           `mapstructure:"dst_image_name" required:"true" cty:"dst_image_name" hcl:"dst_image_name"`
	DstImageVersion           *string           `mapstructure:"dst_image_version" required:"true" cty:"dst_image_version" hcl:"dst_image_version"`
	AvailableZone             *string           `mapstructure:"available_zone" required:"true" cty:"available_zone" hcl:"available_zone"`
	InstanceSpec              *string           `mapstructure:"instance_spec" required:"true" cty:"instance_spec" hcl:"instance_spec"`
	RootDiskType              *string           `mapstructure:"root_disk_type" required:"true" cty:"root_disk_type" hcl:"root_disk_type"`
	RootDiskSize              *int              `mapstructure:"root_disk_size" required:"true" cty:"root_disk_size" hcl:"root_disk_size"`
	MountBns                  *string           `mapstructure:"mount_bns" required:"true" cty:"mount_bns" hcl:"mount_bns"`
	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.

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 InstanceInfo

type InstanceInfo struct {
	Ip       string
	Hostname string
	InsId    string
}

type InstanceNetWork

type InstanceNetWork string

type InstancePurchaseSpec

type InstancePurchaseSpec struct {
	Request        InstanceSpec
	AvailZone      string
	ProductName    string
	CreateUsername string
	Remark         string
	NoahPath       string
	BatchSize      int
}

type InstanceSpec

type InstanceSpec struct {
	AutoSeqSuffix       bool
	Billing             map[string]string
	Hostname            string
	Spec                string
	PurchaseCount       int
	CreateCdsList       []DiskSpec
	RootDiskSizeInGb    int
	RootDiskStorageType string
	ImageId             string
	RelationTag         bool
	Tags                []map[string]string
}

type PurchaseProgress

type PurchaseProgress struct {
	MachineList []InstanceInfo
}

type PurchaseRet

type PurchaseRet struct {
	PurchaseOrderUuid string
}

type RsClientWrapper

type RsClientWrapper struct {
	*client.AuthApiClient
}

func (*RsClientWrapper) CreateInstance

func (c *RsClientWrapper) CreateInstance(request *iam.BceRequest) (*iam.BceResponse, error)

func (*RsClientWrapper) EvalCouldRetryResponse

func (c *RsClientWrapper) EvalCouldRetryResponse(evalErrors []string, evalErrorType EvalErrorType) func(response interface{}, err error) WaitForExpectEvalResult

func (*RsClientWrapper) GetOkInstances

func (c *RsClientWrapper) GetOkInstances(purchaseOrderId string, expectedCount int) ([]InstanceInfo, error)

func (*RsClientWrapper) GetPurchaseId

func (c *RsClientWrapper) GetPurchaseId(resp *iam.BceResponse) (string, error)

func (*RsClientWrapper) WaitForExpected

func (c *RsClientWrapper) WaitForExpected(args *WaitForExpectArgs) (interface{}, error)

type RunConfig

type RunConfig struct {
	AvailableZone string `mapstructure:"available_zone" required:"true"`
	InstanceSpec  string `mapstructure:"instance_spec" required:"true"`
	RootDiskType  string `mapstructure:"root_disk_type" required:"true"`
	RootDiskSize  int    `mapstructure:"root_disk_size" required:"true"`
	MountBns      string `mapstructure:"mount_bns" required:"true"`

	// Communicator settings
	Comm communicator.Config `mapstructure:",squash"`
}

func (*RunConfig) Prepare

func (c *RunConfig) Prepare(ctx *interpolate.Context) []error

type WaitForExpectArgs

type WaitForExpectArgs struct {
	RequestFunc   func() (interface{}, error)
	EvalFunc      func(response interface{}, err error) WaitForExpectEvalResult
	RetryInterval time.Duration
	RetryTimes    int
	RetryTimeout  time.Duration
}

type WaitForExpectEvalResult

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

Jump to

Keyboard shortcuts

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