Documentation
¶
Index ¶
Constants ¶
View Source
const ( DdbAccessKeyEnvVar = "DDB_AWS_ACCESS_KEY_ID" DdbSecretKeyEnvVar = "DDB_AWS_SECRET_ACCESS_KEY" DdbRegionEnvVar = "DDB_AWS_REGION" )
View Source
const ( SnsAccessKeyEnvVar = "SNS_AWS_ACCESS_KEY_ID" SnsSecretKeyEnvVar = "SNS_AWS_SECRET_ACCESS_KEY" SnsRegionEnvVar = "SNS_AWS_REGION" )
View Source
const ( AwsAccessKeyIdSuffix = "AWS_ACCESS_KEY_ID" AwsSecretAccessKeySuffix = "AWS_SECRET_ACCESS_KEY" ApiKeySuffix = "API_KEY" )
View Source
const ( ServerApiKeyEnv = "SERVER_API_KEY" DefaultTsState = "/var/lib/texit/tsstate" )
View Source
const ( ProvisionWorkflowArnEnvVar = "PROVISION_NODE_WORKFLOW_ARN" DeprovisionWorkflowArnEnvVar = "DEPROVISION_NODE_WORKFLOW_ARN" WorkflowAwsAccessKeyEnvVar = "SFN_AWS_ACCESS_KEY_ID" WorkflowAwsSecretKeyEnvVar = "SFN_AWS_SECRET_ACCESS_KEY" WorkflowAwsRegionEnvVar = "SFN_AWS_REGION" )
View Source
const (
TailnetApiKeySuffix = "TAILNET_API_KEY"
)
Variables ¶
View Source
var ( ErrMissingDatabaseHost = errors.New("missing database host") ErrMissingDatabasePort = errors.New("missing database port") ErrMissingDatabaseUser = errors.New("missing database user") ErrMissingDatabasePass = errors.New("missing database pass") ErrMissingDatabaseName = errors.New("missing database name") )
View Source
var ( ErrMissingNotifierBroker = errors.New("missing notifier broker") ErrMissingNotifierTopic = errors.New("missing notifier topic") ErrMissiningNotifierRegion = errors.New("missing notifier region") )
View Source
var ( ErrMissingProviderAwsAccessKey = fmt.Errorf("missing provider access key") ErrMissingProviderAwsSecretKey = fmt.Errorf("missing provider secret key") ErrMissingApiKey = fmt.Errorf("missing api key") ErrMissingProviderName = fmt.Errorf("missing provider name") )
View Source
var ( ErrMissingTailnetType = errors.New("missing tailnet type") ErrMissingTailnet = errors.New("missing tailnet") ErrMissingTailnetApiKey = errors.New("missing tailnet api key") ErrMissingUser = errors.New("missing headscale user") ErrMissingHeadscaleControlServer = errors.New("missing headscale control server") )
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
LogLevel string `yaml:"logLevel"`
Server *ServerConfig `yaml:"server"`
Tailnets []*TailnetConfig `yaml:"tailnets"`
Database *DatabaseConfig `yaml:"database"`
Providers []*ProviderConfig `yaml:"providers"`
Notifiers []*NotifierConfig `yaml:"notifiers"`
Workflow *WorkflowConfig `yaml:"workflow"`
}
func LoadFromData ¶ added in v0.0.6
func LoadFromFile ¶
Loads the application config from a file at the specified path.
type DatabaseConfig ¶
type DatabaseConfig struct {
// The database engine to use
Engine DatabaseEngine `yaml:"engine"`
// The host of the database
Host string `yaml:"host"`
// The port of the database
Port int `yaml:"port"`
// The username to connect to the database
Username string `yaml:"username"`
// The password to connect to the database
Password string `yaml:"password"`
// The name of the database
Database string `yaml:"database"`
// Location of the database file. For sqlite only
Location string `yaml:"location"`
// Whether to use SSL for the connection
Ssl bool `yaml:"ssl"`
// The region to use for a ddb table
Region string `yaml:"region"`
// The access key to use for a ddb table
AccessKey string `yaml:"accessKey"`
// The secret key to use for a ddb table
SecretKey string `yaml:"secretKey"`
}
Configuration for the database
func NewDefaultDatabaseConfig ¶ added in v0.0.9
func NewDefaultDatabaseConfig() *DatabaseConfig
func (*DatabaseConfig) Validate ¶
func (c *DatabaseConfig) Validate() error
type DatabaseEngine ¶
type DatabaseEngine string
const ( DatabaseEngineSqlite DatabaseEngine = "sqlite" DatabaseEnginePostgres DatabaseEngine = "postgres" DatabaseEngineDynamoDb DatabaseEngine = "dynamodb" )
type NotifierConfig ¶ added in v0.0.8
type NotifierConfig struct {
// the notifier type
Type NotifierType `yaml:"type"`
// the notifier name
Name string `yaml:"name"`
// the topic to publish to
Topic string `yaml:"topic"`
// username for the notifier
Username string `yaml:"username"`
// password for the notifier
Password string `yaml:"password"`
// Access key for the notifier
AccessKey string `yaml:"accessKey"`
// Secret key for the notifier
SecretKey string `yaml:"secretKey"`
// the aws region for the notifier
Region string `yaml:"region"`
// The broker for the notifier
Broker string `yaml:"broker"`
}
Configuration for the notifier
func (*NotifierConfig) Validate ¶ added in v0.0.8
func (c *NotifierConfig) Validate() error
type NotifierType ¶ added in v0.0.8
type NotifierType string
const ( NotifierTypeMqtt NotifierType = "mqtt" NotifierTypeSns NotifierType = "sns" )
type ProviderConfig ¶
type ProviderConfig struct {
// The type of provider, curretly only aws-ecs
Type ProviderType `yaml:"type"`
// The access key for the provider. This is only for AWS types.
AccessKey string `yaml:"accessKey"`
// The secret key for the provider. This is only for AWS types.
SecretKey string `yaml:"secretKey"`
// An api key for the provider.
ApiKey string `yaml:"apiKey"`
// The name of the provider.
Name string `yaml:"name"`
}
Configuration for a provider. Currently only AWS ECS.
func (*ProviderConfig) Validate ¶
func (c *ProviderConfig) Validate() error
func (*ProviderConfig) ValidateHetzner ¶ added in v0.0.9
func (c *ProviderConfig) ValidateHetzner() error
type ProviderType ¶
type ProviderType string
const ( ProviderTypeAwsEcs ProviderType = "aws-ecs" ProviderTypeAwsEc2 ProviderType = "aws-ec2" ProviderTypeLinode ProviderType = "linode" ProviderTypeHetzner ProviderType = "hetzner" )
func (ProviderType) String ¶
func (t ProviderType) String() string
type ServerConfig ¶
type ServerConfig struct {
// The address to listen on
Address string `yaml:"address"`
// If specified, the server will join the tailnet with the config provided
Tailnet *tsn.Config `yaml:"tailnet"`
// A static key to use for the API. If not specified, one will be generated.
APIKey string `yaml:"apiKey"` //TODO: make this better one day
}
Configuration for the server
func (*ServerConfig) Validate ¶
func (c *ServerConfig) Validate() error
type TailnetConfig ¶
type TailnetConfig struct {
// The type of tailnet, tailscale or headscale
Type TailnetType `yaml:"type"`
// The network of the tailnet. On tailscale this is the network id
Tailnet string `yaml:"tailnet"`
// The api token to communicate with the tailnet
ApiKey string `yaml:"apiKey"`
// The user to register exist nodes for.
User string `yaml:"user"`
// the control server to use. This is require for headscale
ControlServer string `yaml:"controlServer"`
}
Configuration for the tailnet exit nodes will join
func (*TailnetConfig) Validate ¶
func (c *TailnetConfig) Validate() error
type TailnetType ¶
type TailnetType string // tailscale or headscale
const ( TailnetTypeTailscale TailnetType = "tailscale" TailnetTypeHeadscale TailnetType = "headscale" )
func (TailnetType) String ¶
func (t TailnetType) String() string
type WorkflowConfig ¶ added in v0.0.9
type WorkflowConfig struct {
// the workflow type
Type WorkflowType `yaml:"type"`
// sfn provision workflow arn
ProvisionWorkflowArn string `yaml:"provisionWorkflowArn"`
// sfn deprovision workflow arn
DeprovisionWorkflowArn string `yaml:"deprovisionWorkflowArn"`
// Access key to use when calling sfn
AccessKey string `yaml:"accessKey"`
// Secret key to use when calling sfn
SecretKey string `yaml:"secretKey"`
// The region to use when calling sfn
Region string `yaml:"region"`
}
Configuration for the notifier
func NewDefaultWorkflowConfig ¶ added in v0.0.9
func NewDefaultWorkflowConfig() *WorkflowConfig
func (*WorkflowConfig) Validate ¶ added in v0.0.9
func (c *WorkflowConfig) Validate() error
type WorkflowType ¶ added in v0.0.9
type WorkflowType string
const ( WorkflowTypeLocal WorkflowType = "local" WorkflowTypeSfn WorkflowType = "sfn" )
Click to show internal directories.
Click to hide internal directories.