THIS IS A TEST INSTANCE ONLY! REPOSITORIES CAN BE DELETED AT ANY TIME!

You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
q432rrrrqqrrqqr d575d08046 Add 'testing_stuff.html' 4 months ago
.github test: Make a few cosmetic changes and enable race testing 5 months ago
art art: Use a transparent logo for dark themes 6 months ago
bindata legal: Happy 2021 everyone... 6 months ago
converger legal: Happy 2021 everyone... 6 months ago
debian legal: Happy 2021 everyone... 6 months ago
docker misc, docs: Update minimum required golang version to 1.13 10 months ago
docs legal: Happy 2021 everyone... 6 months ago
engine docker: Bump docker dependencies, add containerd 6 months ago
etcd legal: Happy 2021 everyone... 6 months ago
examples examples: tftp: Fix missing error checking in example 5 months ago
gapi legal: Happy 2021 everyone... 6 months ago
integration lang: Improve string interpolation 5 months ago
lang lang: funcs: Catch simple function api usage without types 5 months ago
langpuppet legal: Happy 2021 everyone... 6 months ago
lib legal: Happy 2021 everyone... 6 months ago
misc lang: Improve string interpolation 5 months ago
pgp legal: Happy 2021 everyone... 6 months ago
pgraph legal: Happy 2021 everyone... 6 months ago
prometheus legal: Happy 2021 everyone... 6 months ago
puppet legal: Happy 2021 everyone... 6 months ago
recwatch legal: Happy 2021 everyone... 6 months ago
releases docs, readme: Improve new user experience 2 years ago
test test: Disable failing test 5 months ago
util legal: Happy 2021 everyone... 6 months ago
vagrant vagrant: Update Vagrantfile 2 years ago
vendor docker: Bump docker dependencies, add containerd 6 months ago
yamlgraph legal: Happy 2021 everyone... 6 months ago
.ackrc misc: Exclude vendor/ directory from ack matching 5 years ago
.dockerignore Add Docker support 5 years ago
.editorconfig docs, misc: Add tool references, .editorconfig for mcl 3 years ago
.gitignore git: Add a simple gitignore helper 2 years ago
.gitmodules docker: Bump docker dependencies, add containerd 6 months ago
.travis.yml test: Disable travis IRC notifications for now 5 months ago
AUTHORS project: Add me 3 years ago
COPYING legal: Re-license to GPLv3 4 years ago
COPYRIGHT legal: Happy 2021 everyone... 6 months ago
Makefile make: Drop support for Go 1.9 in `make build` 6 months ago
README Initial public commit of mgmt 6 years ago
README.md test: Make a few cosmetic changes and enable race testing 5 months ago
THANKS thanks: More people really needed to be on the list 5 years ago
TODO.md todo: Update the TODO file so that it has a sane purpose 2 years ago
Vagrantfile vagrant: Update Vagrantfile 2 years ago
doc.go legal: Happy 2021 everyone... 6 months ago
main.go legal: Happy 2021 everyone... 6 months ago
omv.yaml Support N distributed agents 6 years ago
run.sh Initial public commit of mgmt 6 years ago
spec.in etcd: Bump to new 3.4.x version 2 years ago
test.sh test: make-deps: Add folds around tests and dep blocks 5 months ago
testing_stuff.html Add 'testing_stuff.html' 4 months ago

README.md

mgmt: next generation config management!

mgmt!

Go Report Card Build Status Build Status GoDoc IRC Patreon Liberapay

About:

Mgmt is a real-time automation tool. It is familiar to existing configuration management software, but is drastically more powerful as it can allow you to build real-time, closed-loop feedback systems, in a very safe way, and with a surprisingly small amout of our mcl code. For example, the following code will ensure that your file server is set to read-only when it's friday.

import "datetime"
$is_friday = datetime.weekday(datetime.now()) == "friday"
file "/srv/files/" {
	state => $const.res.file.state.exists,
	mode => if $is_friday { # this updates the mode, the instant it changes!
		"0550"
	} else {
		"0770"
	},
}

It can run continuously, intermittently, or on-demand, and in the first case, it will guarantee that your system is always in the desired state for that instant! In this mode it can run as a decentralized cluster of agents across your network, each exchanging information with the others in real-time, to respond to your changing needs. For example, if you want to ensure that some resource runs on a maximum of two hosts in your cluster, you can specify that as well:

import "sys"
import "world"

# we'll set a few scheduling options:
$opts = struct{strategy => "rr", max => 2, ttl => 10,}

# schedule in a particular namespace with options:
$set = world.schedule("xsched", $opts)

if sys.hostname() in $set {
	# use your imagination to put something more complex right here...
	print "i got scheduled" {} # this will run on the chosen machines
}

As you add and remove hosts from the cluster, the real-time schedule function will dynamically pick up to two hosts from the available pool. These specific functions aren't intrinsic to the core design, and new ones can be easily added.

Please read on if you'd like to learn more...

Community:

Come join us in the mgmt community!

Medium Link
IRC #mgmtconfig on Freenode
Twitter @mgmtconfig & #mgmtconfig
Mailing list mgmtconfig-list@redhat.com
Patreon purpleidea on Patreon
Liberapay purpleidea on Liberapay

Status:

Mgmt is a next generation automation tool. It has similarities to other tools in the configuration management space, but has a fast, modern, distributed systems approach. The project contains an engine and a language. Please have a look at an introductory video or blog post.

Mgmt is a fairly new project. It is usable today, but not yet feature complete. With your help you'll be able to influence our design and get us to 1.0 sooner! Interested users should read the quick start guide.

Documentation:

Please read, enjoy and help improve our documentation!

Documentation Additional Notes
quick start guide for everyone
frequently asked questions for everyone
general documentation for everyone
language guide for everyone
function guide for mgmt developers
resource guide for mgmt developers
style guide for mgmt developers
godoc API reference for mgmt developers
prometheus guide for everyone
puppet guide for puppet sysadmins
development for mgmt developers

Questions:

Please ask in the community! If you have a well phrased question that might benefit others, consider asking it by sending a patch to the FAQ section. I'll merge your question, and a patch with the answer!

Get involved:

Feel free to grab one of the straightforward #mgmtlove issues if you're a first time contributor to the project or if you're unsure about what to hack on! Please get involved by working on one of these items or by suggesting something else! There are some lower priority issues and harder issues available in our TODO file. Please have a look.

Bugs:

Please set the DEBUG constant in main.go to true, and post the logs when you report the issue. Feel free to read my article on debugging golang programs.

Patches:

We'd love to have your patches! Please send them by email, or as a pull request.

On the web:

Read what people are saying and publishing about mgmt!

Happy hacking!