GithubHelp home page GithubHelp logo

plunder-app / plunder Goto Github PK

View Code? Open in Web Editor NEW
172.0 14.0 13.0 5.86 MB

A Modern automation platform

License: Apache License 2.0

Makefile 0.63% Go 98.04% Shell 1.12% Dockerfile 0.21%
dhcp preseed bootstrap tftp kubernetes ssh bare-metal

plunder's People

Contributors

craigtracey avatar thebsdbox avatar zdyxry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plunder's Issues

Docker plug-in

This will require a re-architecture of the way things are parsed due to additional functionality being implemented.

The first function implemented in this plugin will be allowing the plunder server to push Docker images over ssh to remote nodes.

Interact with VMware (not by open-vm-tools)

The VMware toolbox is a "replacement" for open-vm-tools that provides enhanced remote execution functionality.

Note the VMtoolbox will not start if open-vm-tools are running. A plunder automate vmware will take the same "parley" deployment files and use the toolbox agent to handle remote execution through the vCenter API.

Wake on LAN

An excellent suggestion today, where plunder will register a new server and then power-it off. It will then use WoL to power the server on when being provisioned..

NOTE: some servers can take 8-10 minutes to power on (Looks at HPE)

Update docker plugin

Docker plugin can now automate the movement of images with the inclusion of internal piping of data.

Modify the plugin so it can take an array of files?

Move configurations to templates

Currently we've builtin:

  • preseed
  • booty
  • kickstart

pldrctl create deployment -a 172.16.1.15 -m 00:50:56:a5:29:2c -c booty

These have generally hardcoded configuration and can only be used once, this Issue is to track the capability to create a configuration based upon these as templates.

Something like:

Would configure a BOOTy configuration from the template with some settings and name it pullImage

pldrctl create config --template booty \
--sourceDevice /dev/sda
--destinationAddress http://192.168.0.12/images
--name pullImage

pldrctl create deployment -a 172.16.1.15 -m 00:50:56:a5:29:2c -c pullImage

pldrctl create config --template preseed \
--packages openssh cloud-utils
--noSwap
--name kubernetes

pldrctl create deployment -a 172.16.1.16 -m 00:50:56:a5:f9:24 -c kubernetes

Look for specific error detailing sudo

If a user forgets to build a system that doesn't have sudo enabled then tasks will error with ->

WARN[0000] Command Task [Reset Kubernetes] on node [192.168.0.100] failed (execution will continute) 
DEBU[0000] Command Results ->
sudo: a password is required 

Add logic that looks for "sudo" "password" and report a fatal error.

Test Building and running on an rPI

This in theory should work quite happily on a raspberry Pi.

Test:

  • go get -u github.com/plunder-app/plunder
  • cd ~/go/src/github.com/plunder-app/plunder
  • make build
  • plunder config server -o yaml > config.yaml
  • Edit config.yaml and enable DHCP etc. and ensure IP addresses are OK
  • plunder server --config ./config.yaml --logLevel 5
  • Boot something and check DHCP requests appear

Command written from memory so ymmv ...

Add UI to automation

Using https://github.com/AlecAivazis/survey/blob/master/examples/longmulti.go add the ability to select hosts, deployments and actions from an existing map.

Move away from calling docker directly

This issue is to track moving to utilising the docker socket directly (locally) to provide an API method (using the docker go pkg) to call the API. This will allow the pulling of images and transmitting the data over the same ssh session parlay has started.

Documentation about override flags missing

The flags:

      --overrideAddress string    (Optional) Override address to automate against
      --overrideKeypath string    (Optional) Override path to a key
      --overrideUsername string   (optional) Override Username

require documentation.

Fix samples and startup

Additions and modifications to the types mean that a server will ignore the defaultBoot until a correct deployment/config is applied.

Add yaml support

A quick test of https://www.json2yaml.com shows that a general configuration of 520 lines is reduced to 360, which makes configurations significantly more easy to manage. So adding yaml as an option makes sense to implement (also yaml supports comments etc..)

Move the internal "expandable" actions to a plugin model

Currently the kubeadm/{X} and load balancer actions are embedded code, the plan is to split the this code out into plugins that can be started at runtime.

Perhaps a ~./plugin directory when a plugin is invoked, it will start a socket ~./plugin/plugin_name.sock which can then be interacted with via HTTP calls. Plunder should be able to detect the plugin if it's running via a /live API call, and be able to kill or restart a plugin via an /exit API call.

Failed to execute `make` command

Go Version

go version go1.13.4 linux/amd64

Go Env

GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/yiran/.cache/go-build"
GOENV="/home/yiran/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/yiran/go"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/yiran/go/src/github.com/plunder-app/plunder/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build454146169=/tmp/go-build -gno-record-gcc-switches"

Error messages

yiran@t480:~/go/src/github.com/plunder-app/plunder 
master ✔ $ make 
vet: invoking "go tool vet" directly is unsupported; use "go vet"
make: *** [Makefile:87:check] Error 1

Maybe we need to use go vet instead of go tool vet

Don’t update the deployments config when no config has been passed

A bug spotted by @errordeveloper was introduced by adding functionality to manage the internal state and provide on-line updates to developments through the /deployment api end point.

The server will always attempt to parse a byte[] even when no config is parsed, to fix this the updateConfiguration() should create an empty configuration if no json/yaml is passed.

Re-write the configuration structure

The configuration structure needs re-organising to allow external interaction to create new deployments that point to different a kernel and initrd and make the API integration much more simple.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.