Documentation ¶
Index ¶
- Variables
- func AddDeployment(rawDeployment []byte) error
- func DeleteDeploymentAddress(address string, rawDeployment []byte) error
- func DeleteDeploymentMac(macAddress string, rawDeployment []byte) error
- func FindDeploymentConfigFromMac(mac string) string
- func HandleRead(filename string) (r io.Reader, err error)
- func HandleWrite(filename string) (w io.Writer, err error)
- func HealthCheckHandler(w http.ResponseWriter, r *http.Request)
- func OpenISO(isoPath, isoPrefix string) error
- func ParseControllerData(b []byte) error
- func RegisterToAPIServer()
- func UpdateDeployment(macAddress string, rawDeployment []byte) error
- func UpdateDeploymentConfig(rawDeploymentConfig []byte) error
- func UpdateGlobalDeploymentConfig(rawDeployment []byte) error
- type BootConfig
- type BootController
- type DHCPSettings
- type DeploymentConfig
- type DeploymentConfigurationFile
- type HostConfig
- func (config *HostConfig) BuildBOOTYconfig() string
- func (config *HostConfig) BuildESXiConfig() string
- func (config *HostConfig) BuildESXiKickStart() string
- func (config *HostConfig) BuildKickStartConfig() string
- func (config *HostConfig) BuildPreeSeedConfig() string
- func (c *HostConfig) PopulateFromGlobalConfiguration(globalConfig HostConfig)
- func (c *HostConfig) ReadKeyFromFile() (string, error)
- type Lease
- type WriteCounter
Constants ¶
This section is empty.
Variables ¶
var DefaultBootType string
DefaultBootType specifies what a server will default to if no config is found
Functions ¶
func AddDeployment ¶
AddDeployment - This function will add a new deployment to the deployment configuration
func DeleteDeploymentAddress ¶
DeleteDeploymentAddress - This function will delete a deployment based upon it's IP Address
func DeleteDeploymentMac ¶
DeleteDeploymentMac - This function will delete a deployment based upon it's mac Address
func FindDeploymentConfigFromMac ¶
FindDeploymentConfigFromMac - this will return the deployment configuration, allowing the DHCP server to return the correct DHCP options
func HandleRead ¶
HandleRead : read a ROfs file and send over tftp
func HandleWrite ¶
HandleWrite : writing is disabled in this service
func HealthCheckHandler ¶
func HealthCheckHandler(w http.ResponseWriter, r *http.Request)
HealthCheckHandler -
func ParseControllerData ¶
ParseControllerData will read in a byte array and attempt to parse it as yaml or json
func RegisterToAPIServer ¶
func RegisterToAPIServer()
RegisterToAPIServer - will add the endpoints to the API server
func UpdateDeployment ¶
UpdateDeployment - This function will add a new deployment to the deployment configuration
func UpdateDeploymentConfig ¶
UpdateDeploymentConfig will read a configuration string and build the iPXE files needed
func UpdateGlobalDeploymentConfig ¶
UpdateGlobalDeploymentConfig - This allows updating of the global configuration independently
Types ¶
type BootConfig ¶
type BootConfig struct { ConfigName string `json:"configName"` ConfigType string `json:"configType"` // iPXE file settings - exported Kernel string `json:"kernelPath"` Initrd string `json:"initrdPath"` Cmdline string `json:"cmdline"` // ISO Reader settings ISOPath string `json:"isoPath,omitempty"` ISOPrefix string `json:"isoPrefix,omitempty"` }
BootConfig defines a named configuration for booting
func (*BootConfig) Parse ¶
func (b *BootConfig) Parse() error
Parse will read through a new configuration and implement the configuration if possible
type BootController ¶
type BootController struct { AdapterName *string `json:"adapter"` // A physical adapter to bind to e.g. en0, eth0 // Servers EnableDHCP *bool `json:"enableDHCP"` // Enable Server //DHCP Configuration DHCPConfig dhcpConfig `json:"dhcpConfig,omitempty"` // TFTP / HTTP configuration EnableTFTP *bool `json:"enableTFTP"` // Enable Server TFTPAddress *string `json:"addressTFTP"` // Should ideally be the IP of the adapter EnableHTTP *bool `json:"enableHTTP"` // Enable Server HTTPAddress *string `json:"addressHTTP"` // Should ideally be the IP of the adapter // TFTP Configuration PXEFileName *string `json:"pxePath"` // undionly.kpxe // Boot Configuration BootConfigs []BootConfig `json:"bootConfigs"` // Array of kernel configurations // contains filtered or unexported fields }
BootController contains the settings that define how the remote boot will
var Controller BootController
Controller contains all the "current" settings for booting servers
func (*BootController) DelUnLeased ¶
func (c *BootController) DelUnLeased(mac string)
DelUnLeased - This will retrieve all of the un-allocated leases from the boot controller
func (*BootController) DeleteBootControllerConfig ¶
func (c *BootController) DeleteBootControllerConfig(configName string) error
DeleteBootControllerConfig - will iterate through the boot controller and see if any changes need applying this is mainly for the dynamic loading of ISOs
func (*BootController) GetLeases ¶
func (c *BootController) GetLeases() *[]Lease
GetLeases - This will retrieve all of the allocated leases from the boot controller
func (*BootController) GetUnLeased ¶
func (c *BootController) GetUnLeased() *[]Lease
GetUnLeased - This will retrieve all of the un-allocated leases from the boot controller
func (*BootController) StartServices ¶
func (c *BootController) StartServices(deployment []byte) error
StartServices - This will start all of the enabled services
type DHCPSettings ¶
type DHCPSettings struct { IP net.IP // Server IP to use Options dhcp.Options // Options to send to DHCP Clients Start net.IP // Start of IP range to distribute LeaseRange int // Number of IPs to distribute (starting from start) LeaseDuration time.Duration // Lease period Leases map[int]Lease // Map to keep track of leases UnLeased []Lease // Map to keep track of unleased devices, and when they were seen }
DHCPSettings -
type DeploymentConfig ¶
type DeploymentConfig struct { MAC string `json:"mac"` ConfigName string `json:"bootConfigName,omitempty"` // To be discovered in the controller BootConfig array ConfigBoot BootConfig `json:"bootConfig,omitempty"` // Array of kernel configurations ConfigHost HostConfig `json:"config"` }
DeploymentConfig - is used to parse the files containing all server configurations
func GetDeployment ¶
func GetDeployment(macAddress string) *DeploymentConfig
GetDeployment - This function will add a new deployment to the deployment configuration
type DeploymentConfigurationFile ¶
type DeploymentConfigurationFile struct { GlobalServerConfig HostConfig `json:"globalConfig"` Configs []DeploymentConfig `json:"deployments"` }
DeploymentConfigurationFile - The bootstraps.Configs is used by other packages to manage use case for Mac addresses
var Deployments DeploymentConfigurationFile
Deployments - contains an accessible "current" configuration for all deployments
func ParseDeployment ¶
func ParseDeployment(b []byte) (*DeploymentConfigurationFile, error)
ParseDeployment will read in a byte array and attempt to parse it as yaml or json
type HostConfig ¶
type HostConfig struct { // Not required for the global configuration Adapter string `json:"adapter,omitempty"` // Adapter to be configured with networking address IPAddress string `json:"address,omitempty"` // Allocated IP address for a host (ignored for global) ServerName string `json:"hostname,omitempty"` // Hostname to be applied to a server // Typically shared details Gateway string `json:"gateway,omitempty"` // Default Gateway Subnet string `json:"subnet,omitempty"` // Subnet to be used for the host NameServer string `json:"nameserver,omitempty"` // Set the default nameserver for DNS NTPServer string `json:"ntpserver,omitempty"` // Time Server to be used LVMEnable *bool `json:"lvmEnabled,omitempty"` // Use LVM for the configuration SwapDisabled *bool `json:"swapDisabled,omitempty"` // Dont create swap partitions Username string `json:"username,omitempty"` Password string `json:"password,omitempty"` // RepositoryAddress is required for pre-seed / kickstart RepositoryAddress string `json:"repoaddress,omitempty"` // MirrorDirectory is an Ubuntu specific config MirrorDirectory string `json:"mirrordir,omitempty"` // SSHKeyPath will typically be referenced from a file ~/.ssh/id_rsa.pub SSHKeyPath string `json:"sshkeypath,omitempty"` // SSHKey is a full SSH Key in base 64 SSHKey string `json:"sshkey,omitempty"` // Packages to be installed Packages string `json:"packages,omitempty"` // OS Image provisioning BOOTYAction string `json:"bootyAction,omitempty"` Compressed *bool `json:"compressed,omitempty"` // Write image to disk from remote address SourceImage string `json:"sourceImage,omitempty"` DestinationDevice string `json:"destinationDevice,omitempty"` // Read image from disk from remote address SourceDevice string `json:"sourceDevice,omitempty"` DestinationAddress string `json:"destinationAddress,omitempty"` // Volume modifications (LVM2) GrowPartition *int `json:"growPartition,omitempty"` LVMRootName string `json:"lvmRootName,omitempty"` // Troubleshooting ShellOnFail *bool `json:"shellOnFail,omitempty"` }
HostConfig - Defines how a server will be configured by plunder
func (*HostConfig) BuildBOOTYconfig ¶
func (config *HostConfig) BuildBOOTYconfig() string
BuildBOOTYconfig - Creates a new presseed configuration using the passed data
func (*HostConfig) BuildESXiConfig ¶
func (config *HostConfig) BuildESXiConfig() string
BuildESXiConfig - Creates a new presseed configuration using the passed data
func (*HostConfig) BuildESXiKickStart ¶
func (config *HostConfig) BuildESXiKickStart() string
BuildESXiKickStart - Creates a new presseed configuration using the passed data
func (*HostConfig) BuildKickStartConfig ¶
func (config *HostConfig) BuildKickStartConfig() string
BuildKickStartConfig - Creates a new presseed configuration using the passed data
func (*HostConfig) BuildPreeSeedConfig ¶
func (config *HostConfig) BuildPreeSeedConfig() string
BuildPreeSeedConfig - Creates a new presseed configuration using the passed data
func (*HostConfig) PopulateFromGlobalConfiguration ¶
func (c *HostConfig) PopulateFromGlobalConfiguration(globalConfig HostConfig)
PopulateFromGlobalConfiguration - This will read a deployment configuration and attempt to fill any missing fields from the global config
func (*HostConfig) ReadKeyFromFile ¶
func (c *HostConfig) ReadKeyFromFile() (string, error)
ReadKeyFromFile - will attempt to read an sshkey from a file and populate the struct
type Lease ¶
type Lease struct { MAC string `json:"mac"` // Client's Physical Address Expiry time.Time `json:"time"` // When the lease expires }
Lease defines a lease that is allocated to a client
type WriteCounter ¶
type WriteCounter struct {
Total uint64
}
WriteCounter counts the number of bytes written to it. It implements to the io.Writer interface and we can pass this into io.TeeReader() which will report progress on each write cycle.