ec2config

package
v1.2.4 Latest Latest
Warning

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

Go to latest
Published: May 22, 2020 License: Apache-2.0 Imports: 20 Imported by: 4

README

*-----------------------------------------------------------*-------------------*-----------------------------------------------------*--------------------------*
|                  ENVIRONMENTAL VARIABLE                   |     READ ONLY     |                        TYPE                         |         GO TYPE          |
*-----------------------------------------------------------*-------------------*-----------------------------------------------------*--------------------------*
| AWS_K8S_TESTER_EC2_NAME                                   | read-only "false" | *ec2config.Config.Name                              | string                   |
| AWS_K8S_TESTER_EC2_PARTITION                              | read-only "false" | *ec2config.Config.Partition                         | string                   |
| AWS_K8S_TESTER_EC2_REGION                                 | read-only "false" | *ec2config.Config.Region                            | string                   |
| AWS_K8S_TESTER_EC2_CONFIG_PATH                            | read-only "false" | *ec2config.Config.ConfigPath                        | string                   |
| AWS_K8S_TESTER_EC2_AWS_ACCOUNT_ID                         | read-only "true"  | *ec2config.Config.AWSAccountID                      | string                   |
| AWS_K8S_TESTER_EC2_AWS_USER_ID                            | read-only "true"  | *ec2config.Config.AWSUserID                         | string                   |
| AWS_K8S_TESTER_EC2_AWS_IAM_ROLE_ARN                       | read-only "true"  | *ec2config.Config.AWSIAMRoleARN                     | string                   |
| AWS_K8S_TESTER_EC2_AWS_CREDENTIAL_PATH                    | read-only "true"  | *ec2config.Config.AWSCredentialPath                 | string                   |
| AWS_K8S_TESTER_EC2_CREATE_TOOK                            | read-only "true"  | *ec2config.Config.CreateTook                        | time.Duration            |
| AWS_K8S_TESTER_EC2_CREATE_TOOK_STRING                     | read-only "true"  | *ec2config.Config.CreateTookString                  | string                   |
| AWS_K8S_TESTER_EC2_DELETE_TOOK                            | read-only "true"  | *ec2config.Config.DeleteTook                        | time.Duration            |
| AWS_K8S_TESTER_EC2_DELETE_TOOK_STRING                     | read-only "true"  | *ec2config.Config.DeleteTookString                  | string                   |
| AWS_K8S_TESTER_EC2_TIME_UTC_CREATE_COMPLETE               | read-only "true"  | *ec2config.Config.TimeUTCCreateComplete             | time.Time                |
| AWS_K8S_TESTER_EC2_TIME_UTC_CREATE_COMPLETE_RFC3339_MICRO | read-only "true"  | *ec2config.Config.TimeUTCCreateCompleteRFC3339Micro | string                   |
| AWS_K8S_TESTER_EC2_TIME_UTC_DELETE_START                  | read-only "true"  | *ec2config.Config.TimeUTCDeleteStart                | time.Time                |
| AWS_K8S_TESTER_EC2_TIME_UTC_DELETE_START_RFC3339_MICRO    | read-only "true"  | *ec2config.Config.TimeUTCDeleteStartRFC3339Micro    | string                   |
| AWS_K8S_TESTER_EC2_LOG_LEVEL                              | read-only "false" | *ec2config.Config.LogLevel                          | string                   |
| AWS_K8S_TESTER_EC2_LOG_OUTPUTS                            | read-only "false" | *ec2config.Config.LogOutputs                        | []string                 |
| AWS_K8S_TESTER_EC2_UP                                     | read-only "false" | *ec2config.Config.Up                                | bool                     |
| AWS_K8S_TESTER_EC2_STATUS_CURRENT                         | read-only "false" | *ec2config.Config.StatusCurrent                     | string                   |
| AWS_K8S_TESTER_EC2_STATUS                                 | read-only "false" | *ec2config.Config.Status                            | []ec2config.Status       |
| AWS_K8S_TESTER_EC2_ON_FAILURE_DELETE                      | read-only "false" | *ec2config.Config.OnFailureDelete                   | bool                     |
| AWS_K8S_TESTER_EC2_ON_FAILURE_DELETE_WAIT_SECONDS         | read-only "false" | *ec2config.Config.OnFailureDeleteWaitSeconds        | uint64                   |
| AWS_K8S_TESTER_EC2_S3_BUCKET_CREATE                       | read-only "false" | *ec2config.Config.S3BucketCreate                    | bool                     |
| AWS_K8S_TESTER_EC2_S3_BUCKET_CREATE_KEEP                  | read-only "false" | *ec2config.Config.S3BucketCreateKeep                | bool                     |
| AWS_K8S_TESTER_EC2_S3_BUCKET_NAME                         | read-only "false" | *ec2config.Config.S3BucketName                      | string                   |
| AWS_K8S_TESTER_EC2_S3_BUCKET_LIFECYCLE_EXPIRATION_DAYS    | read-only "false" | *ec2config.Config.S3BucketLifecycleExpirationDays   | int64                    |
| AWS_K8S_TESTER_EC2_ROLE_NAME                              | read-only "false" | *ec2config.Config.RoleName                          | string                   |
| AWS_K8S_TESTER_EC2_ROLE_CREATE                            | read-only "false" | *ec2config.Config.RoleCreate                        | bool                     |
| AWS_K8S_TESTER_EC2_ROLE_ARN                               | read-only "false" | *ec2config.Config.RoleARN                           | string                   |
| AWS_K8S_TESTER_EC2_ROLE_SERVICE_PRINCIPALS                | read-only "false" | *ec2config.Config.RoleServicePrincipals             | []string                 |
| AWS_K8S_TESTER_EC2_ROLE_MANAGED_POLICY_ARNS               | read-only "false" | *ec2config.Config.RoleManagedPolicyARNs             | []string                 |
| AWS_K8S_TESTER_EC2_ROLE_CFN_STACK_ID                      | read-only "true"  | *ec2config.Config.RoleCFNStackID                    | string                   |
| AWS_K8S_TESTER_EC2_VPC_CREATE                             | read-only "false" | *ec2config.Config.VPCCreate                         | bool                     |
| AWS_K8S_TESTER_EC2_VPC_ID                                 | read-only "false" | *ec2config.Config.VPCID                             | string                   |
| AWS_K8S_TESTER_EC2_VPC_CFN_STACK_ID                       | read-only "true"  | *ec2config.Config.VPCCFNStackID                     | string                   |
| AWS_K8S_TESTER_EC2_SSH_INGRESS_IPV4_RANGE                 | read-only "false" | *ec2config.Config.SSHIngressIPv4Range               | string                   |
| AWS_K8S_TESTER_EC2_VPC_CIDR                               | read-only "false" | *ec2config.Config.VPCCIDR                           | string                   |
| AWS_K8S_TESTER_EC2_PUBLIC_SUBNET_CIDR_1                   | read-only "false" | *ec2config.Config.PublicSubnetCIDR1                 | string                   |
| AWS_K8S_TESTER_EC2_PUBLIC_SUBNET_CIDR_2                   | read-only "false" | *ec2config.Config.PublicSubnetCIDR2                 | string                   |
| AWS_K8S_TESTER_EC2_PUBLIC_SUBNET_CIDR_3                   | read-only "false" | *ec2config.Config.PublicSubnetCIDR3                 | string                   |
| AWS_K8S_TESTER_EC2_PRIVATE_SUBNET_CIDR_1                  | read-only "false" | *ec2config.Config.PrivateSubnetCIDR1                | string                   |
| AWS_K8S_TESTER_EC2_PRIVATE_SUBNET_CIDR_2                  | read-only "false" | *ec2config.Config.PrivateSubnetCIDR2                | string                   |
| AWS_K8S_TESTER_EC2_PUBLIC_SUBNET_IDS                      | read-only "true"  | *ec2config.Config.PublicSubnetIDs                   | []string                 |
| AWS_K8S_TESTER_EC2_PRIVATE_SUBNET_IDS                     | read-only "true"  | *ec2config.Config.PrivateSubnetIDs                  | []string                 |
| AWS_K8S_TESTER_EC2_DHCP_OPTIONS_DOMAIN_NAME               | read-only "false" | *ec2config.Config.DHCPOptionsDomainName             | string                   |
| AWS_K8S_TESTER_EC2_DHCP_OPTIONS_DOMAIN_NAME_SERVERS       | read-only "false" | *ec2config.Config.DHCPOptionsDomainNameServers      | []string                 |
| AWS_K8S_TESTER_EC2_SECURITY_GROUP_ID                      | read-only "true"  | *ec2config.Config.SecurityGroupID                   | string                   |
| AWS_K8S_TESTER_EC2_REMOTE_ACCESS_KEY_CREATE               | read-only "false" | *ec2config.Config.RemoteAccessKeyCreate             | bool                     |
| AWS_K8S_TESTER_EC2_REMOTE_ACCESS_KEY_NAME                 | read-only "false" | *ec2config.Config.RemoteAccessKeyName               | string                   |
| AWS_K8S_TESTER_EC2_REMOTE_ACCESS_PRIVATE_KEY_PATH         | read-only "false" | *ec2config.Config.RemoteAccessPrivateKeyPath        | string                   |
| AWS_K8S_TESTER_EC2_REMOTE_ACCESS_COMMANDS_OUTPUT_PATH     | read-only "false" | *ec2config.Config.RemoteAccessCommandsOutputPath    | string                   |
| AWS_K8S_TESTER_EC2_ASGS_FETCH_LOGS                        | read-only "false" | *ec2config.Config.ASGsFetchLogs                     | bool                     |
| AWS_K8S_TESTER_EC2_ASGS_LOGS_DIR                          | read-only "false" | *ec2config.Config.ASGsLogsDir                       | string                   |
| AWS_K8S_TESTER_EC2_ASGS                                   | read-only "false" | *ec2config.Config.ASGs                              | map[string]ec2config.ASG |
*-----------------------------------------------------------*-------------------*-----------------------------------------------------*--------------------------*

Documentation

Overview

Package ec2config defines EC2 configuration.

Index

Constants

View Source
const (
	// AMITypeBottleRocketCPU is the AMI type for Bottlerocket OS.
	// https://github.com/bottlerocket-os/bottlerocket
	AMITypeBottleRocketCPU = "BOTTLEROCKET_x86_64"
	// AMITypeAL2X8664 is the AMI type for Amazon Linux 2 AMI.
	AMITypeAL2X8664 = "AL2_x86_64"
	// AMITypeAL2X8664GPU is the AMI type for Amazon Linux 2 AMI with GPU.
	AMITypeAL2X8664GPU = "AL2_x86_64_GPU"

	// DefaultNodeInstanceTypeCPU is the default EC2 instance type for CPU worker node.
	DefaultNodeInstanceTypeCPU = "c5.xlarge"
	// DefaultNodeInstanceTypeGPU is the default EC2 instance type for GPU worker node.
	DefaultNodeInstanceTypeGPU = "p3.8xlarge"

	// DefaultNodeVolumeSize is the default EC2 instance volume size for a worker node.
	DefaultNodeVolumeSize = 40

	// ASGsMaxLimit is the maximum number of "Managed Node Group"s per a EKS cluster.
	ASGsMaxLimit = 10
	// ASGMaxLimit is the maximum number of nodes per a "Managed Node Group".
	ASGMaxLimit = 100
)
View Source
const AWS_K8S_TESTER_EC2_PREFIX = "AWS_K8S_TESTER_EC2_"

AWS_K8S_TESTER_EC2_PREFIX is the environment variable prefix used for "ec2config".

View Source
const StatusDELETEDORNOTEXIST = "DELETED/NOT-EXIST"

TODO: asg status

Variables

This section is empty.

Functions

This section is empty.

Types

type ASG added in v0.6.9

type ASG struct {
	// Name is the ASG name.
	Name          string `json:"name"`
	ASGCFNStackID string `json:"asg-cfn-stack-id" read-only:"true"`

	// CreateTook is the duration that took to create the resource.
	CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
	// CreateTookString is the duration that took to create the resource.
	CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
	// DeleteTook is the duration that took to create the resource.
	DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
	// DeleteTookString is the duration that took to create the resource.
	DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`

	// RemoteAccessUserName is the user name used for running init scripts or SSH access.
	RemoteAccessUserName string `json:"remote-access-user-name"`

	// SSMDocumentCreate is true to auto-create and delete SSM document.
	SSMDocumentCreate bool `json:"ssm-document-create"`
	// SSMDocumentName is the name of SSM document.
	SSMDocumentName string `json:"ssm-document-name"`
	// SSMDocumentCFNStackName is the name of SSM document CFN stack.
	SSMDocumentCFNStackName string `json:"ssm-document-cfn-stack-name"`
	// SSMDocumentCommands is the commands for SSM document.
	// Only used if SSM doc is created.
	SSMDocumentCommands string `json:"ssm-document-commands"`
	// SSMDocumentExecutionTimeoutSeconds is the SSM document execution timeout in seconds.
	SSMDocumentExecutionTimeoutSeconds int      `json:"ssm-document-execution-timeout-in-seconds"`
	SSMDocumentCFNStackID              string   `json:"ssm-document-cfn-stack-id" read-only:"true"`
	SSMDocumentCommandIDs              []string `json:"ssm-document-command-ids" read-only:"true"`

	// AMIType is the AMI type for the node group.
	// Allowed values are BOTTLEROCKET_x86_64, AL2_x86_64 and AL2_x86_64_GPU.
	// ref. https://docs.aws.amazon.com/eks/latest/userguide/launch-workers.html
	// ref. https://github.com/awslabs/amazon-eks-ami/blob/master/amazon-eks-nodegroup.yaml
	AMIType string `json:"ami-type,omitempty"`
	// ImageID is the Amazon Machine Image (AMI).
	// This value overrides any AWS Systems Manager Parameter Store value.
	ImageID string `json:"image-id"`
	// ImageIDSSMParameter is the AWS Systems Manager Parameter Store
	// parameter of the AMI ID.
	ImageIDSSMParameter string `json:"image-id-ssm-parameter"`

	// InstanceTypes is the list of EC2 instance types.
	InstanceTypes []string `json:"instance-types"`
	// VolumeSize is the size of the default volume, in GiB.
	//
	// Constraints: 1-16384 for General Purpose SSD (gp2), 4-16384 for Provisioned
	// IOPS SSD (io1), 500-16384 for Throughput Optimized HDD (st1), 500-16384 for
	// Cold HDD (sc1), and 1-1024 for Magnetic (standard) volumes. If you specify
	// a snapshot, the volume size must be equal to or larger than the snapshot
	// size.
	//
	// Default: If you're creating the volume from a snapshot and don't specify
	// a volume size, the default is the snapshot size.
	VolumeSize int64 `json:"volume-size"`

	// ASGMinSize is the minimum size of ASG.
	ASGMinSize int64 `json:"asg-min-size,omitempty"`
	// ASGMaxSize is the maximum size of ASG.
	ASGMaxSize int64 `json:"asg-max-size,omitempty"`
	// ASGDesiredCapacity is the desired capacity of ASG.
	ASGDesiredCapacity int64 `json:"asg-desired-capacity,omitempty"`

	// Instances is a map from instance ID to instance.
	Instances map[string]Instance `json:"instanaces" read-only:"true"`
	// Logs maps each instance ID to a list of log file paths fetched via SSH access.
	Logs map[string][]string `json:"logs" read-only:"true"`
}

ASG represents one ASG.

func (*ASG) SSHCommands added in v0.6.9

func (asg *ASG) SSHCommands(region string, keyPath string, userName string) (s string)

SSHCommands returns the SSH commands.

type BlockDeviceMapping

type BlockDeviceMapping struct {
	DeviceName string `json:"device-name"`
	EBS        EBS    `json:"ebs"`
}

BlockDeviceMapping defines a block device mapping.

type CPUOptions added in v0.9.0

type CPUOptions struct {
	// CoreCount is the number of CPU cores for the instance.
	CoreCount int64 `json:"core-count"`
	// ThreadsPerCore is the number of threads per CPU core.
	ThreadsPerCore int64 `json:"threads-per-core"`
}

CPUOptions represents the CPU of an EC2 instance.

type Config

type Config struct {

	// Name is the cluster name.
	// If empty, deployer auto-populates it.
	Name string `json:"name"`
	// Partition is the AWS partition for EC2 deployment region.
	// If empty, set default partition "aws".
	Partition string `json:"partition"`
	// Region is the AWS geographic area for EC2 deployment.
	// If empty, set default region.
	Region string `json:"region"`

	// ConfigPath is the configuration file path.
	// Deployer is expected to update this file with latest status.
	ConfigPath string `json:"config-path,omitempty"`

	// AWSAccountID is the account ID of the eks tester caller session.
	AWSAccountID string `json:"aws-account-id" read-only:"true"`
	// AWSUserID is the user ID of the eks tester caller session.
	AWSUserID string `json:"aws-user-id" read-only:"true"`
	// AWSIAMRoleARN is the user IAM Role ARN of the eks tester caller session.
	AWSIAMRoleARN string `json:"aws-iam-role-arn" read-only:"true"`
	// AWSCredentialPath is automatically set via AWS SDK Go.
	// And to be mounted as a volume as 'Secret' object.
	AWSCredentialPath string `json:"aws-credential-path" read-only:"true"`

	// CreateTook is the duration that took to create the resource.
	CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
	// CreateTookString is the duration that took to create the resource.
	CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
	// DeleteTook is the duration that took to create the resource.
	DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
	// DeleteTookString is the duration that took to create the resource.
	DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
	// TimeUTCCreateComplete is the time when creation is complete.
	TimeUTCCreateComplete             time.Time `json:"time-utc-create-complete,omitempty" read-only:"true"`
	TimeUTCCreateCompleteRFC3339Micro string    `json:"time-utc-create-complete-rfc3339-micro,omitempty" read-only:"true"`
	// TimeUTCDeleteStart is the time when deletion is started.
	TimeUTCDeleteStart             time.Time `json:"time-utc-delete-start,omitempty" read-only:"true"`
	TimeUTCDeleteStartRFC3339Micro string    `json:"time-utc-delete-start-rfc3339-micro,omitempty" read-only:"true"`

	// LogLevel configures log level. Only supports debug, info, warn, error, panic, or fatal. Default 'info'.
	LogLevel string `json:"log-level"`
	// LogOutputs is a list of log outputs. Valid values are 'default', 'stderr', 'stdout', or file names.
	// Logs are appended to the existing file, if any.
	// Multiple values are accepted. If empty, it sets to 'default', which outputs to stderr.
	// See https://pkg.go.dev/go.uber.org/zap#Open and https://pkg.go.dev/go.uber.org/zap#Config for more details.
	LogOutputs []string `json:"log-outputs,omitempty"`

	// Up is true if the cluster is up.
	Up bool `json:"up"`
	// StatusCurrent represents the current status of the cluster.
	StatusCurrent string `json:"status-current"`
	// Status represents the status of the cluster.
	Status []Status `json:"status"`

	// OnFailureDelete is true to delete all resources on creation fail.
	OnFailureDelete bool `json:"on-failure-delete"`
	// OnFailureDeleteWaitSeconds is the seconds to wait before deleting
	// all resources on creation fail.
	OnFailureDeleteWaitSeconds uint64 `json:"on-failure-delete-wait-seconds"`

	// S3BucketCreate is true to auto-create S3 bucket.
	S3BucketCreate bool `json:"s3-bucket-create"`
	// S3BucketCreateKeep is true to not delete auto-created S3 bucket.
	// The created S3 bucket is kept.
	S3BucketCreateKeep bool `json:"s3-bucket-create-keep"`
	// S3BucketName is the name of cluster S3.
	S3BucketName string `json:"s3-bucket-name"`
	// S3BucketLifecycleExpirationDays is expiration in days for the lifecycle of the object.
	S3BucketLifecycleExpirationDays int64 `json:"s3-bucket-lifecycle-expiration-days"`

	// RoleName is the name of cluster role.
	RoleName string `json:"role-name"`
	// RoleCreate is true to auto-create and delete cluster role.
	RoleCreate bool `json:"role-create"`
	// RoleARN is the role ARN that EC2 uses to create AWS resources for Kubernetes.
	// By default, it's empty which triggers tester to create one.
	RoleARN string `json:"role-arn"`
	// RoleServicePrincipals is the EC2 Role Service Principals
	RoleServicePrincipals []string `json:"role-service-principals"`
	// RoleManagedPolicyARNs is EC2 Role managed policy ARNs.
	RoleManagedPolicyARNs []string `json:"role-managed-policy-arns"`
	RoleCFNStackID        string   `json:"role-cfn-stack-id" read-only:"true"`

	// VPCCreate is true to auto-create and delete VPC.
	VPCCreate bool `json:"vpc-create"`
	// VPCID is the VPC ID for cluster creation.
	// If not empty, VPC is reused and not deleted.
	// If empty, VPC is created anew and deleted on cluster deletion.
	VPCID         string `json:"vpc-id"`
	VPCCFNStackID string `json:"vpc-cfn-stack-id" read-only:"true"`
	// SSHIngressIPv4Range is the IP range for SSH inbound traffic.
	SSHIngressIPv4Range string `json:"ssh-ingress-ipv4-range"`
	// VpcCIDR is the IP range (CIDR notation) for VPC, must be a valid private
	// (RFC 1918) CIDR range.
	VPCCIDR string `json:"vpc-cidr,omitempty"`
	// PublicSubnetCIDR1 is the CIDR Block for subnet 1 within the VPC.
	PublicSubnetCIDR1 string `json:"public-subnet-cidr-1,omitempty"`
	// PublicSubnetCIDR2 is the CIDR Block for subnet 2 within the VPC.
	PublicSubnetCIDR2 string `json:"public-subnet-cidr-2,omitempty"`
	// PublicSubnetCIDR3 is the CIDR Block for subnet 3 within the VPC.
	PublicSubnetCIDR3 string `json:"public-subnet-cidr-3,omitempty"`
	// PrivateSubnetCIDR1 is the CIDR Block for subnet 1 within the VPC.
	PrivateSubnetCIDR1 string `json:"private-subnet-cidr-1,omitempty"`
	// PrivateSubnetCIDR2 is the CIDR Block for subnet 2 within the VPC.
	PrivateSubnetCIDR2 string `json:"private-subnet-cidr-2,omitempty"`
	// PublicSubnetIDs is the list of all public subnets in the VPC.
	PublicSubnetIDs []string `json:"public-subnet-ids" read-only:"true"`
	// PrivateSubnetIDs is the list of all private subnets in the VPC.
	PrivateSubnetIDs []string `json:"private-subnet-ids" read-only:"true"`

	// DHCPOptionsDomainName is used to complete unqualified DNS hostnames for VPC.
	// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html
	// ref. https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html
	DHCPOptionsDomainName string `json:"dhcp-options-domain-name"`
	// DHCPOptionsDomainNameServers is a list of strings.
	// The IPv4 addresses of up to four domain name servers, or AmazonProvidedDNS, for VPC.
	// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html
	// ref. https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html
	DHCPOptionsDomainNameServers []string `json:"dhcp-options-domain-name-servers"`

	// SecurityGroupID is the security group ID for the VPC.
	SecurityGroupID string `json:"security-group-id" read-only:"true"`

	// RemoteAccessKeyCreate is true to create the remote SSH access private key.
	RemoteAccessKeyCreate bool `json:"remote-access-key-create"`
	// RemoteAccessKeyName is the remote SSH access private key name.
	RemoteAccessKeyName string `json:"remote-access-key-name"`
	// RemoteAccessPrivateKeyPath is the remote SSH access private key path.
	RemoteAccessPrivateKeyPath string `json:"remote-access-private-key-path"`
	// RemoteAccessCommandsOutputPath is the output path for ssh commands.
	RemoteAccessCommandsOutputPath string `json:"remote-access-commands-output-path,omitempty"`

	// ASGsFetchLogs is true to fetch logs from remote nodes using SSH.
	ASGsFetchLogs bool `json:"asgs-fetch-logs"`
	// ASGsLogsDir is set to specify the target directory to store all remote log files.
	// If empty, it stores in the same directory as "ConfigPath".
	ASGsLogsDir string `json:"asgs-logs-dir,omitempty"`
	// ASGs is a map from each ASG name to EC2 ASG.
	ASGs map[string]ASG `json:"asgs"`
	// contains filtered or unexported fields
}

Config defines EC2 configuration.

func Load

func Load(p string) (cfg *Config, err error)

Load loads configuration from YAML. Useful when injecting shared configuration via ConfigMap.

Example usage:

import "github.com/aws/aws-k8s-tester/eksconfig"
cfg := eksconfig.Load("test.yaml")
err := cfg.ValidateAndSetDefaults()

Do not set default values in this function. "ValidateAndSetDefaults" must be called separately, to prevent overwriting previous data when loaded from disks.

func NewDefault

func NewDefault() *Config

NewDefault returns a default configuration.

  • empty string creates a non-nil object for pointer-type field
  • omitting an entire field returns nil value
  • make sure to check both

func (*Config) RecordStatus added in v0.6.9

func (cfg *Config) RecordStatus(status string)

RecordStatus records cluster status.

func (*Config) SSHCommands

func (cfg *Config) SSHCommands() string

SSHCommands returns the SSH commands.

func (*Config) Sync

func (cfg *Config) Sync() (err error)

Sync persists current configuration and states to disk.

func (*Config) UpdateFromEnvs

func (cfg *Config) UpdateFromEnvs() (err error)

UpdateFromEnvs updates fields from environmental variables. Empty values are ignored and do not overwrite fields with empty values. WARNING: The environmental variable value always overwrites current field values if there's a conflict.

func (*Config) ValidateAndSetDefaults

func (cfg *Config) ValidateAndSetDefaults() error

ValidateAndSetDefaults returns an error for invalid configurations. And updates empty fields with default values. At the end, it writes populated YAML to aws-k8s-tester config path.

type EBS

type EBS struct {
	DeleteOnTermination bool   `json:"delete-on-termination"`
	Status              string `json:"status"`
	VolumeID            string `json:"volume-id"`
}

EBS defines an EBS volume.

type IAMInstanceProfile added in v0.9.0

type IAMInstanceProfile struct {
	// ARN is the Amazon Resource Name (ARN) of the instance profile.
	ARN string `json:"arn"`
	// ID is the ID of the instance profile.
	ID string `json:"id"`
}

IAMInstanceProfile is the IAM instance profile.

type Instance

type Instance struct {
	Architecture          string               `json:"architecture"`
	ImageID               string               `json:"image-id"`
	IAMInstanceProfile    IAMInstanceProfile   `json:"iam-instance-profile"`
	InstanceID            string               `json:"instance-id"`
	InstanceType          string               `json:"instance-type"`
	KeyName               string               `json:"key-name"`
	Placement             Placement            `json:"placement"`
	PrivateDNSName        string               `json:"private-dns-name"`
	PrivateIP             string               `json:"private-ip"`
	PublicDNSName         string               `json:"public-dns-name"`
	PublicIP              string               `json:"public-ip"`
	State                 State                `json:"state"`
	StateReason           StateReason          `json:"state-reason"`
	StateTransitionReason string               `json:"state-transition-reason"`
	SubnetID              string               `json:"subnet-id"`
	VPCID                 string               `json:"vpc-id"`
	CPUOptions            CPUOptions           `json:"cpu-options"`
	BlockDeviceMappings   []BlockDeviceMapping `json:"block-device-mappings"`
	EBSOptimized          bool                 `json:"ebs-optimized"`
	RootDeviceName        string               `json:"root-device-name"`
	RootDeviceType        string               `json:"root-device-type"`
	SecurityGroups        []SecurityGroup      `json:"security-groups"`
	LaunchTime            time.Time            `json:"launch-time"`
	RemoteAccessUserName  string               `json:"remote-access-user-name"`
	Hypervisor            string               `json:"hypervisor"`
	VirtualizationType    string               `json:"virtualization-type"`
}

Instance represents an EC2 instance.

func ConvertInstance added in v0.6.9

func ConvertInstance(iv *ec2.Instance) (instance Instance)

ConvertInstance converts "aws ec2 describe-instances" to "config.Instance".

type Placement

type Placement struct {
	AvailabilityZone string `json:"availability-zone"`
	Tenancy          string `json:"tenancy"`
}

Placement defines EC2 placement.

type SecurityGroup

type SecurityGroup struct {
	GroupName string `json:"group-name"`
	GroupID   string `json:"group-id"`
}

SecurityGroup defines a security group.

type State

type State struct {
	Code int64  `json:"code"`
	Name string `json:"name"`
}

State defines an EC2 state.

type StateReason added in v0.9.0

type StateReason struct {
	Code    string `json:"code"`
	Message string `json:"message"`
}

StateReason represents the EC2 state reason.

type Status added in v0.6.9

type Status struct {
	Time   time.Time `json:"time"`
	Status string    `json:"status"`
}

Status is the status.

Directories

Path Synopsis
gen generates ec2config documentation.
gen generates ec2config documentation.

Jump to

Keyboard shortcuts

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