Documentation ¶
Index ¶
- func Execute()
- type AnsibleTarget
- type CleanTarget
- type ConfigFileTarget
- type FetchitConfig
- func (fc *FetchitConfig) Apply(ctx context.Context, mo *SingleMethodObj, currentState plumbing.Hash, ...) error
- func (hc *FetchitConfig) CheckForConfigUpdates(envURL string, existsAlready bool, initial bool) bool
- func (hc *FetchitConfig) EngineMethod(ctx context.Context, mo *SingleMethodObj, path string, change *object.Change) error
- func (fc *FetchitConfig) GetCurrent(target *Target, method string) (plumbing.Hash, error)
- func (fc *FetchitConfig) GetLatest(target *Target) (plumbing.Hash, error)
- func (hc *FetchitConfig) GetTargets()
- func (hc *FetchitConfig) InitConfig(initial bool)
- func (hc *FetchitConfig) Restart()
- func (hc *FetchitConfig) RunTargets()
- func (fc *FetchitConfig) UpdateCurrent(ctx context.Context, target *Target, method string, newCurrent plumbing.Hash) error
- type FileTransferTarget
- type KubeTarget
- type Methods
- type RawPod
- type RawTarget
- type SingleMethodObj
- type SystemdTarget
- type Target
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AnsibleTarget ¶
type AnsibleTarget struct { // Where in the git repository to fetch a file or directory (to fetch all files in directory) TargetPath string `mapstructure:"targetPath"` // Schedule is how often to check for git updates with the target files // Must be valid cron expression Schedule string `mapstructure:"schedule"` // Number of seconds to skew the schedule by Skew *int `mapstructure:"skew"` // SshDirectory for ansible to connect to host SshDirectory string `mapstructure:"sshDirectory"` // contains filtered or unexported fields }
AnsibleTarget to place and run ansible playbooks
type CleanTarget ¶
type CleanTarget struct { // Schedule is how often to check for git updates and/or restart the fetchit service // Must be valid cron expression // With ConfigFileTarget, fetchit will be restarted with each scheduled run Schedule string `mapstructure:"schedule"` // Number of seconds to skew the schedule by Skew *int `mapstructure:"skew"` // URL location of config file, such as a raw github URL Volumes bool `mapstructure:"volumes"` // initialRun is set by fetchit All bool `mapstructure:"all"` }
Clean configures targets to run a system prune periodically
type ConfigFileTarget ¶
type ConfigFileTarget struct { // Schedule is how often to check for git updates and/or restart the fetchit service // Must be valid cron expression // With ConfigFileTarget, fetchit will be restarted with each scheduled run Schedule string `mapstructure:"schedule"` // Number of seconds to skew the schedule by Skew *int `mapstructure:"skew"` // URL location of config file, such as a raw github URL ConfigUrl string `mapstructure:"configUrl"` // contains filtered or unexported fields }
type FetchitConfig ¶
type FetchitConfig struct { Targets []*Target `mapstructure:"targets"` PAT string `mapstructure:"pat"` // contains filtered or unexported fields }
FetchitConfig requires necessary objects to process targets
func NewFetchitConfig ¶
func NewFetchitConfig() *FetchitConfig
func (*FetchitConfig) Apply ¶
func (fc *FetchitConfig) Apply( ctx context.Context, mo *SingleMethodObj, currentState plumbing.Hash, desiredState plumbing.Hash, targetPath string, tags *[]string, ) error
Side effects are running/applying changes concurrently and on success moving old "current" tag
func (*FetchitConfig) CheckForConfigUpdates ¶
func (hc *FetchitConfig) CheckForConfigUpdates(envURL string, existsAlready bool, initial bool) bool
CheckForConfigUpdates, downloads, & places config file in defaultConfigPath in fetchit container (/opt/mount/config.yaml). This runs with the initial startup as well as with scheduled ConfigTarget runs, if $FETCHIT_CONFIG_URL is set.
func (*FetchitConfig) EngineMethod ¶
func (hc *FetchitConfig) EngineMethod(ctx context.Context, mo *SingleMethodObj, path string, change *object.Change) error
Each engineMethod call now owns the prev and dest variables instead of being shared in mo
func (*FetchitConfig) GetCurrent ¶
func (*FetchitConfig) GetLatest ¶
func (fc *FetchitConfig) GetLatest(target *Target) (plumbing.Hash, error)
For any given target, will get the head of the branch in the repository specified by the target's url
func (*FetchitConfig) GetTargets ¶
func (hc *FetchitConfig) GetTargets()
GetTargets returns map of repoName to map of method:Schedule
func (*FetchitConfig) InitConfig ¶
func (hc *FetchitConfig) InitConfig(initial bool)
Initconfig reads in config file and env variables if set.
func (*FetchitConfig) Restart ¶
func (hc *FetchitConfig) Restart()
restart fetches new targets from an updated config new targets will be added, stale removed, and existing will set last commit as last known.
func (*FetchitConfig) RunTargets ¶
func (hc *FetchitConfig) RunTargets()
This assumes each Target has no more than 1 each of Raw, Systemd, FileTransfer
func (*FetchitConfig) UpdateCurrent ¶
type FileTransferTarget ¶
type FileTransferTarget struct { // Where in the git repository to fetch a file or directory (to fetch all files in directory) TargetPath string `mapstructure:"targetPath"` // Directory path on the host system in which the target files should be placed DestinationDirectory string `mapstructure:"destinationDirectory"` // Schedule is how often to check for git updates to the target files // Must be valid cron expression Schedule string `mapstructure:"schedule"` // Number of seconds to skew the schedule by Skew *int `mapstructure:"skew"` // contains filtered or unexported fields }
FileTransferTarget to place files on host system
type KubeTarget ¶
type KubeTarget struct { // Where in the git repository to fetch a file or directory (to fetch all files in directory) TargetPath string `mapstructure:"targetPath"` // Schedule is how often to check for git updates with the target files // Must be valid cron expression Schedule string `mapstructure:"schedule"` // Number of seconds to skew the schedule by Skew *int `mapstructure:"skew"` // contains filtered or unexported fields }
KubeTarget to launch pods using podman kube-play
type Methods ¶
type Methods struct { Raw *RawTarget `mapstructure:"raw"` Systemd *SystemdTarget `mapstructure:"systemd"` Kube *KubeTarget `mapstructure:"kube"` Ansible *AnsibleTarget `mapstructure:"ansible"` FileTransfer *FileTransferTarget `mapstructure:"fileTransfer"` Clean *CleanTarget `mapstructure:"clean"` ConfigTarget *ConfigFileTarget `mapstructure:"configTarget"` }
Only 1 of each Method per Methods
type RawPod ¶
type RawPod struct { Image string `json:"Image" yaml:"Image"` Name string `json:"Name" yaml:"Name"` Env map[string]string `json:"Env" yaml:"Env"` Ports []port `json:"Ports" yaml:"Ports"` Mounts []mount `json:"Mounts" yaml:"Mounts"` Volumes []namedVolume `json:"Volumes" yaml:"Volumes"` CapAdd []string `json:"CapAdd" yaml:"CapAdd"` CapDrop []string `json:"CapDrop" yaml:"CapDrop"` }
type RawTarget ¶
type RawTarget struct { // Where in the git repository to fetch a file or directory (to fetch all files in directory) TargetPath string `mapstructure:"targetPath"` // Schedule is how often to check for git updates to the unit file // Must be valid cron expression Schedule string `mapstructure:"schedule"` // Number of seconds to skew the schedule by Skew *int `mapstructure:"skew"` // Pull images configured in target files each time regardless of if it already exists PullImage bool `mapstructure:"pullImage"` // contains filtered or unexported fields }
RawTarget to deploy pods from json or yaml files
type SingleMethodObj ¶
type SystemdTarget ¶
type SystemdTarget struct { // AutoUpdateAll will start podman-auto-update.service, podman-auto-update.timer // on the host. With this field true, all other fields are ignored. To place unit files // on host and/or enable individual services, create a separate Target.Methods.Systemd // 'podman auto-update' updates all services running podman with the autoupdate label // see https://docs.podman.io/en/latest/markdown/podman-auto-update.1.html#systemd-unit-and-timer // TODO: update /etc/systemd/system/podman-auto-update.timer.d/override.conf with schedule // By default, podman will auto-update at midnight daily when this service is running AutoUpdateAll bool `mapstructure:"autoUpdateAll"` // Where in the git repository to fetch a systemd unit file // All '*.service' files will be placed in appropriate systemd path // TargetPath must be a single exact file TargetPath string `mapstructure:"targetPath"` // If true, will place unit file in /etc/systemd/system/ // If false (default) will place unit file in ~/.config/systemd/user/ Root bool `mapstructure:"root"` // If true, will enable and start all systemd services from fetched unit files // If true, will reload and restart the services with every scheduled run // Implies Enable=true, will override Enable=false Restart bool `mapstructure:"restart"` // If true, will enable and start systemd services from fetched unit files // If false (default), will place unit file(s) in appropriate systemd path Enable bool `mapstructure:"enable"` // Schedule is how often to check for git updates to the unit file // and/or how often to restart services. // Must be valid cron expression Schedule string `mapstructure:"schedule"` // Number of seconds to skew the schedule by Skew *int `mapstructure:"skew"` // contains filtered or unexported fields }
SystemdTarget to place and/or enable systemd unit files on host