config

package module
v0.0.6 Latest Latest
Warning

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

Go to latest
Published: Dec 14, 2019 License: Apache-2.0 Imports: 17 Imported by: 15

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DNSFQDN

func DNSFQDN() (string, error)

DNSFQDN attempts to find the FQDN using DNS resolution

func Mutate

func Mutate(c *Config, log *logrus.Entry)

Mutate calls all registered mutators on the given configuration

func MutatorNames

func MutatorNames() []string

MutatorNames are the names of known configuration mutators

func RegisterMutator

func RegisterMutator(name string, m Mutator)

RegisterMutator registers a new configuration mutator

Types

type BuildInfoProvider

type BuildInfoProvider interface {
	HasTLS() bool
}

BuildInfoProvider provides build time information

type ChoriaPluginConfig

type ChoriaPluginConfig struct {
	PuppetServerHost string `confkey:"plugin.choria.puppetserver_host" default:"puppet"`
	PuppetServerPort int    `confkey:"plugin.choria.puppetserver_port" default:"8140"`
	PuppetCAHost     string `confkey:"plugin.choria.puppetca_host" default:"puppet"`
	PuppetCAPort     int    `confkey:"plugin.choria.puppetca_port" default:"8140"`
	PuppetDBHost     string `confkey:"plugin.choria.puppetdb_host" default:"puppet"`
	PuppetDBPort     int    `confkey:"plugin.choria.puppetdb_port" default:"8081"`
	SSLDir           string `confkey:"plugin.choria.ssldir" type:"path_string"`
	UseSRVRecords    bool   `confkey:"plugin.choria.use_srv" default:"true"`
	SRVDomain        string `confkey:"plugin.choria.srv_domain"`
	Provision        bool   `confkey:"plugin.choria.server.provision" default:"false"`

	// discovery proxy
	DiscoveryHost  string `confkey:"plugin.choria.discovery_host" default:"puppet"`
	DiscoveryPort  int    `confkey:"plugin.choria.discovery_port" default:"8085"`
	DiscoveryProxy bool   `confkey:"plugin.choria.discovery_proxy" default:"false"`

	// federation
	FederationCollectives     []string `confkey:"plugin.choria.federation.collectives" type:"comma_split" environment:"CHORIA_FED_COLLECTIVE"`
	FederationMiddlewareHosts []string `confkey:"plugin.choria.federation_middleware_hosts" type:"comma_split"`
	FederationCluster         string   `confkey:"plugin.choria.federation.cluster" default:"mcollective"`

	StatsListenAddress    string `confkey:"plugin.choria.stats_address" default:"127.0.0.1"`
	StatsPort             int    `confkey:"plugin.choria.stats_port" default:"0"`
	LegacyLifeCycleFormat bool   `confkey:"plugin.choria.legacy_lifecycle_format" default:"0"`

	// nats connector
	NatsUser                 string   `confkey:"plugin.nats.user" environment:"MCOLLECTIVE_NATS_USERNAME"`
	NatsPass                 string   `confkey:"plugin.nats.pass" environment:"MCOLLECTIVE_NATS_PASSWORD"`
	NatsCredentials          string   `confkey:"plugin.nats.credentials" environment:"MCOLLECTIVE_NATS_CREDENTIALS"`
	NatsNGS                  bool     `confkey:"plugin.nats.ngs" environment:"MCOLLECTIVE_NATS_NGS"`
	MiddlewareHosts          []string `confkey:"plugin.choria.middleware_hosts" type:"comma_split"`
	RandomizeMiddlewareHosts bool     `confkey:"plugin.choria.randomize_middleware_hosts" default:"true"`

	// network broker
	NetworkListenAddress      string        `confkey:"plugin.choria.network.listen_address" default:"::"`
	NetworkClientPort         int           `confkey:"plugin.choria.network.client_port" default:"4222"`
	NetworkClientTLSForce     bool          `confkey:"plugin.choria.network.client_tls_force_required"`
	NetworkPeerPort           int           `confkey:"plugin.choria.network.peer_port" default:"5222"`
	NetworkPeerUser           string        `confkey:"plugin.choria.network.peer_user"`
	NetworkPeerPassword       string        `confkey:"plugin.choria.network.peer_password"`
	NetworkPeers              []string      `confkey:"plugin.choria.network.peers" type:"comma_split"`
	NetworkLeafPort           int           `confkey:"plugin.choria.network.leafnode_port" default:"0"`
	NetworkLeafRemotes        []string      `confkey:"plugin.choria.network.leafnode_remotes" type:"comma_split"`
	NetworkGatewayPort        int           `confkey:"plugin.choria.network.gateway_port" default:"0"`
	NetworkGatewayName        string        `confkey:"plugin.choria.network.gateway_name" default:"CHORIA"`
	NetworkGatewayRemotes     []string      `confkey:"plugin.choria.network.gateway_remotes" type:"comma_split"`
	NetworkWriteDeadline      time.Duration `confkey:"plugin.choria.network.write_deadline" type:"duration" default:"5s"`
	NetworkAllowedClientHosts []string      `confkey:"plugin.choria.network.client_hosts" type:"comma_split"`
	NetworkAccountOperator    string        `confkey:"plugin.choria.network.operator_account"`
	NetworkSystemAccount      string        `confkey:"plugin.choria.network.system_account"`
	NetworkTLSTimeout         int           `confkey:"plugin.choria.network.tls_timeout" default:"2"`

	// broker features
	BrokerNetwork    bool `confkey:"plugin.choria.broker_network" default:"false"`
	BrokerDiscovery  bool `confkey:"plugin.choria.broker_discovery" default:"false"`
	BrokerFederation bool `confkey:"plugin.choria.broker_federation" default:"false"`

	// registration
	FileContentRegistrationData   string `confkey:"plugin.choria.registration.file_content.data" default:""`
	FileContentRegistrationTarget string `confkey:"plugin.choria.registration.file_content.target" default:""`
	FileContentCompression        bool   `confkey:"plugin.choria.registration.file_content.compression" default:"true"`

	// ruby compatibility
	RubyAgentShim   string   `confkey:"plugin.choria.agent_provider.mcorpc.agent_shim"`
	RubyAgentConfig string   `confkey:"plugin.choria.agent_provider.mcorpc.config"`
	RubyLibdir      []string `confkey:"plugin.choria.agent_provider.mcorpc.libdir" type:"path_split"`

	// security plugin
	PrivilegedUsers              []string `` /* 127-byte string literal not displayed */
	CertnameWhitelist            []string `confkey:"plugin.choria.security.certname_whitelist" type:"comma_split" default:"\\.mcollective$,\\.choria$"`
	Serializer                   string   `confkey:"plugin.choria.security.serializer" validate:"enum=json,yaml"`
	SecurityProvider             string   `confkey:"plugin.security.provider" default:"puppet" validate:"enum=puppet,file,pkcs11"`
	SecurityAlwaysOverwriteCache bool     `confkey:"plugin.security.always_overwrite_cache" default:"false"`
	RemoteSignerTokenFile        string   `confkey:"plugin.choria.security.request_signer.token_file" type:"path_string"`
	RemoteSignerTokenEnvironment string   `confkey:"plugin.choria.security.request_signer.token_environment"`
	RemoteSignerURL              string   `confkey:"plugin.choria.security.request_signer.url"`

	// file security
	FileSecurityCertificate string `confkey:"plugin.security.file.certificate" type:"path_string"`
	FileSecurityKey         string `confkey:"plugin.security.file.key" type:"path_string"`
	FileSecurityCA          string `confkey:"plugin.security.file.ca" type:"path_string"`
	FileSecurityCache       string `confkey:"plugin.security.file.cache" type:"path_string"`

	// pkcs11 security
	PKCS11DriverFile string `confkey:"plugin.security.pkcs11.driver_file" type:"path_string"`
	PKCS11Slot       int    `confkey:"plugin.security.pkcs11.slot"`

	// adapters
	Adapters []string `confkey:"plugin.choria.adapters" type:"comma_split"`

	// status file
	StatusFilePath      string `confkey:"plugin.choria.status_file_path" type:"path_string"`
	StatusUpdateSeconds int    `confkey:"plugin.choria.status_update_interval" default:"30"`

	// machine
	MachineSourceDir string `confkey:"plugin.choria.machine.store"`
}

ChoriaPluginConfig settings

type Config

type Config struct {
	Registration              []string `confkey:"registration" type:"comma_split" default:""`
	RegistrationCollective    string   `confkey:"registration_collective"`
	RegisterInterval          int      `confkey:"registerinterval" default:"300"`
	RegistrationSplay         bool     `confkey:"registration_splay" default:"false"`
	Collectives               []string `confkey:"collectives" type:"comma_split" default:"mcollective"`
	MainCollective            string   `confkey:"main_collective"`
	LogFile                   string   `confkey:"logfile" type:"path_string"`
	KeepLogs                  int      `confkey:"keeplogs" default:"5"`
	MaxLogSize                int      `confkey:"max_log_size" default:"2097152"`
	LogLevel                  string   `confkey:"loglevel" default:"info" validate:"enum=debug,info,warn,error,fatal"`
	LogFacility               string   `confkey:"logfacility" default:"user"`
	LibDir                    []string `confkey:"libdir" type:"path_split"`
	Identity                  string   `confkey:"identity"`
	DirectAddressing          bool     `confkey:"direct_addressing" default:"true"`
	DirectAddressingThreshold int      `confkey:"direct_addressing_threshold" default:"10"`
	Color                     bool     `confkey:"color" default:"true"`
	Daemonize                 bool     `confkey:"daemonize" default:"false"`
	SecurityProvider          string   `confkey:"securityprovider" default:"psk" type:"title_string"`
	FactSource                string   `confkey:"factsource" default:"yaml"`
	Connector                 string   `confkey:"connector" default:"nats" type:"title_string"`
	ClassesFile               string   `confkey:"classesfile" default:"/opt/puppetlabs/puppet/cache/state/classes.txt" type:"path_string"`
	DiscoveryTimeout          int      `confkey:"discovery_timeout" default:"2"`
	PublishTimeout            int      `confkey:"publish_timeout" default:"2"`
	ConnectionTimeout         int      `confkey:"connection_timeout"`
	RPCAudit                  bool     `confkey:"rpcaudit" default:"false"`
	RPCAuditProvider          string   `confkey:"rpcauditprovider" type:"title_string"`
	RPCAuthorization          bool     `confkey:"rpcauthorization" default:"false"`
	RPCAuthorizationProvider  string   `confkey:"rpcauthprovider" type:"title_string" default:"action_policy"`
	RPCLimitMethod            string   `confkey:"rpclimitmethod" default:"first" validate:"enum=first,random"`
	LoggerType                string   `confkey:"logger_type" default:"file"`
	FactCacheTime             int      `confkey:"fact_cache_time" default:"300"`
	SSLCipher                 string   `confkey:"ssl_cipher" default:"aes-256-cbc"`
	Threaded                  bool     `confkey:"threaded" default:"false"`
	TTL                       int      `confkey:"ttl" default:"60"`
	DefaultDiscoveryOptions   []string `confkey:"default_discovery_options"`
	DefaultDiscoveryMethod    string   `confkey:"default_discovery_method" default:"mc"`
	SoftShutdown              bool     `confkey:"soft_shutdown" default:"true"`
	SoftShutdownTimeout       int      `confkey:"soft_shutdown_timeout" default:"2"`
	ActivateAgents            bool     `confkey:"activate_agents" default:"true"`
	FactSourceFile            string   `confkey:"plugin.yaml" default:"/etc/puppetlabs/mcollective/generated-facts.yaml" type:"path_string"`
	RequireClientFilter       bool     `confkey:"require_client_filter" default:"false"`

	ConfigFile string

	Choria *ChoriaPluginConfig

	// DisableSecurityProviderVerify skips calling security provider Validate()
	DisableSecurityProviderVerify bool

	// DisableTLS turns off TLS and skips calling security provider Validate()
	DisableTLS bool

	// DisableTLSVerify turns off CA validation etc in TLS connections
	DisableTLSVerify bool

	// OverrideCertname sets a arbitrary certname and short circuits calling Puppet etc
	// this is mainly used by tests to adjust the certname on the fly
	OverrideCertname string

	// InitiatedByServer indicates to the framework that certain server specific
	// initialization steps - like Provisioning mode - should be performed.
	InitiatedByServer bool

	// Puppet provides access to puppet config data, settings and facts
	Puppet *puppet.PuppetWrapper
	// contains filtered or unexported fields
}

Config represents Choria configuration

func NewConfig

func NewConfig(path string) (*Config, error)

NewConfig parses a config file and return the config

func NewConfigForTests

func NewConfigForTests() *Config

NewConfigForTests creates a configuration for use in testing tools

func NewDefaultConfig

func NewDefaultConfig() (*Config, error)

NewDefaultConfig creates a empty configuration

func (*Config) ApplyBuildSettings

func (c *Config) ApplyBuildSettings(b BuildInfoProvider)

ApplyBuildSettings applies build time overrides to the configuration

func (*Config) HasOption

func (c *Config) HasOption(option string) bool

HasOption determines if a specific option was set from a config key. The option given would be something like `plugin.choria.use_srv` and true would indicate that it was set by config vs using defaults

func (*Config) Option

func (c *Config) Option(option string, deflt string) string

Option retrieves the raw string representation of a given option from that was loaded from the configuration

func (*Config) SetOption added in v0.0.5

func (c *Config) SetOption(option string, value string)

SetOption sets a raw string option, can be used to programatically set plugin options etc, setting a main config item value here does not update the values in the strings, so this is only really useful for setting plugin options

type Mutator

type Mutator interface {
	Mutate(*Config, *logrus.Entry)
}

Mutator is a function that can mutate the configuration

Jump to

Keyboard shortcuts

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