config

package
v0.2.4 Latest Latest
Warning

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

Go to latest
Published: Oct 4, 2018 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultConfigFile is the default file where blessclient will look for its config
	DefaultConfigFile = "~/.blessclient/config.yml"

	// DefaultSSHPrivateKey is a path to where users usually keep an ssh key
	DefaultSSHPrivateKey = "~/.ssh/id_rsa"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Bastion

type Bastion struct {
	Host `yaml:",inline"`

	Hosts        []Host `yaml:"hosts"`
	IdentityFile string `yaml:"identity_file"`
	User         string `yaml:"user"`
}

Bastion is an internet accessibly server used to "jump" to other servers

type ClientConfig

type ClientConfig struct {
	// ConfigFile is the path to blessclient config file
	ConfigFile string

	// AWSUserProfile is an aws profile that references a user (not a role)
	// leaving this empty typically means use `default` profile
	AWSUserProfile string `json:"aws_user_profile" yaml:"aws_user_profile"`

	// Path to your ssh private key
	SSHPrivateKey string `json:"ssh_private_key" yaml:"ssh_private_key"`

	// cert related
	CertLifetime Duration `json:"cert_lifetime" yaml:"cert_lifetime,inline"`
	// ask bless to sign for these remote users
	RemoteUsers []string `json:"remote_users" yaml:"remote_users"`
	// bless calls these bastion ips - your source ip. 0.0.0.0/0 is all
	BastionIPS []string `json:"bastion_ips" yaml:"bastion_ips"`
}

ClientConfig is the client config

type Config

type Config struct {
	// Version versions this config
	Version int `json:"version" yaml:"version"`

	// ClientConfig is config for blessclient
	ClientConfig ClientConfig `json:"client_config" yaml:"client_config"`
	// LambdaConfig holds configuration around the bless lambda
	LambdaConfig LambdaConfig `json:"lambda_config" yaml:"lambda_config"`
	// For convenience, you can bundle an ~/.ssh/config template here
	SSHConfig *SSHConfig `json:"ssh_config,omitempty" yaml:"ssh_config,omitempty"`

	// Telemetry does telemetry
	Telemetry Telemetry `yaml:"telemetry,omitempty"`
}

Config is a blessclient config

func DefaultConfig

func DefaultConfig() (*Config, error)

DefaultConfig generates a config with some defaults

func FromFile

func FromFile(file string) (*Config, error)

FromFile reads the config from file

func (*Config) GetAWSSessionCachePath added in v0.0.6

func (c *Config) GetAWSSessionCachePath() string

GetAWSSessionCachePath gets path to aws user session cache file

func (*Config) GetKMSAuthCachePath added in v0.0.6

func (c *Config) GetKMSAuthCachePath(region string) string

GetKMSAuthCachePath gets a path to kmsauth cache file kmsauth is regional

func (*Config) Persist

func (c *Config) Persist() error

Persist persists a config to disk

type Duration

type Duration struct {
	time.Duration
}

Duration is a wrapper around Duration to marshal/unmarshal

func (Duration) AsDuration

func (d Duration) AsDuration() time.Duration

AsDuration returns as duration

func (Duration) MarshalJSON

func (d Duration) MarshalJSON() ([]byte, error)

MarshalJSON marshals to json

func (*Duration) UnmarshalJSON

func (d *Duration) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals

type Honeycomb added in v0.2.0

type Honeycomb struct {
	WriteKey string `yaml:"write_key,omitempty"`
	Dataset  string `yaml:"dataset,omitempty"`
	// SecretManagerARN is a secret that holds the honeycomb write key
	SecretManagerARN string `yaml:"secret_manager_arn,omitempty"`
}

Honeycomb telemetry configuration

type Host

type Host struct {
	Pattern string `yaml:"pattern"`
}

Host represents a Host block in an ssh config

type LambdaConfig

type LambdaConfig struct {
	// RoleARN used to assume and invoke bless lambda
	RoleARN string `json:"role_arn" yaml:"role_arn"`
	// Bless lambda function name
	FunctionName string `json:"function_name" yaml:"function_name"`
	// bless lambda regions
	Regions []Region `json:"regions,omitempty" yaml:"regions,omitempty"`
}

LambdaConfig is the lambda config

type Region

type Region struct {
	// name of the aws region (us-west-2)
	AWSRegion string `json:"aws_region" yaml:"aws_region"`
	// region specific kms key id (not arn) of the key used for kmsauth
	KMSAuthKeyID string `json:"kms_auth_key_id" yaml:"kms_auth_key_id"`
}

Region is an aws region that contains an aws lambda

type SSHConfig

type SSHConfig struct {
	Bastions []Bastion `yaml:"bastions"`
}

SSHConfig is an SSH config We make some assumptions here around the structure of the machines A bastion is internet accessible and can be used to reach other machines

func (*SSHConfig) String

func (s *SSHConfig) String() (string, error)

String generates the ssh config string

type Telemetry added in v0.2.0

type Telemetry struct {
	Honeycomb *Honeycomb `yaml:"honeycomb,omitempty"`
}

Telemetry to track adoption, performance, errors

Jump to

Keyboard shortcuts

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