shops is a simple command-line tool written in Go that helps you simplify the way you manage configuration across a set of machines. shops is your configuration management tool of choice when Chef, Puppet, Ansible are all too complicated and all you really want to do is run a bunch of regular shell against a set of hosts.
|
2 hours ago | |
---|---|---|
testdata | 21 hours ago | |
.gitignore | 1 week ago | |
LICENSE | 1 week ago | |
README.md | 1 week ago | |
TODO.md | 21 hours ago | |
config.go | 1 week ago | |
docker-nodes.yml | 3 days ago | |
go.mod | 1 week ago | |
go.sum | 1 week ago | |
main.go | 21 hours ago | |
pony.go | 3 days ago | |
runner.go | 2 hours ago | |
ssh.go | 1 week ago | |
utils.go | 21 hours ago | |
version.go | 1 week ago |
shops
is a simple command-line tool written in Go
that helps you simplify the way you manage configuration across a set of
machines. shops
is your configuration management tool of choice when Chef,
Puppet, Ansible are all too complicated and all you really want to do is
run a bunch of regular shell against a set of hosts.
To install shops
you can either run go get
directly:
go get git.mills.io/prologic/shops
NOTE: Be sure to have
$GOBIN
in your$PATH
. Seego env
.
Or grab the source code and build:
git clone https://git.mills.io/prologic/shops.git
cd shops
go build
And optionally run go install
to place the binary shops
in your $GOBIN
.
Using shops
is quite simple. The basic usage is as follows:
shops -f /path/to/config.yml <host1> <host2> <hostN>
For example running the included test.yml
configuration file at the root of
the source code repository here against a typical Linux server:
shops -f test.yml 10.0.0.50:22
Will perform the will perform the following:
README.md
to /root/README.md
on the server/tmp/foo
existsExample:
$ ./shops -f test.yml 10.0.0.50:22
10.0.0.50:22:
Ensure /root/foo exists ✅ -> /root/foo
Ensure sshbox is running ✅ ->
Check Uptime ✅ -> 04:01:12 up 19 days, 2:18, 0 users, load average: 0.00, 0.00, 0.00
Currently the configuration specification is a simple YAML file that consists of a number of top-level keys:
version
-- Which for the moment is ignored, but might be used to version
the configuration file for future enhancements in a backwards compatible way.files
-- Declares one or more files or directories to be copied to each
target host. Directories are copied recursively. Currently no checks are
performed, but this is planned.items
-- One or more items of configuration to be applied to each target
host. Each item declares a "check" and "action". Checks and actions are
written in regular shell. If a check fails, the action is run to correct the
failed state. If all checks pass, no actions are run.shops
is licensed under the terms of the MIT License