• Stars
    star
    3,625
  • Rank 12,217 (Top 0.3 %)
  • Language
    Go
  • License
    GNU General Publi...
  • Created about 9 years ago
  • Updated 29 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Next generation distributed, event-driven, parallel config management!

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 Libera.Chat
Twitter @mgmtconfig & #mgmtconfig
Mailing list [email protected]
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
videos for everyone
blogs for everyone

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:

Blog posts and recorded talks about mgmt are listed here!

Happy hacking!

More Repositories

1

oh-my-vagrant

An easy to manipulate development environment for using vagrant with puppet, docker and more!
Ruby
307
star
2

puppet-gluster

puppet module for gluster
Puppet
101
star
3

puppet-ipa

puppet module for freeipa
Puppet
43
star
4

vagrant-builder

an elegant method for making base images for vagrant-libvirt
Shell
42
star
5

legal-hackers

lawyers and hackers specializing in libre software/copyright matters
Shell
18
star
6

ircdns

Inexpensive, reliable, dynamic DNS over IRC
Go
15
star
7

pdfdoc

PDF as a service
Python
11
star
8

yesiscan

Automatic license scanning and reports!
Go
9
star
9

puppet-pushing

Code and slides from my pushing-puppet talk
Puppet
8
star
10

puppet-lsi

puppet module for lsi hardware raid
Puppet
4
star
11

puppet-nfs

puppet module for nfs
Puppet
4
star
12

puppet-matlab

puppet module for matlab
Puppet
4
star
13

purpleidea.com

Website for purpleidea.com
JavaScript
4
star
14

puppet-puppet

puppet module for puppet!
Puppet
3
star
15

puppet-fsm

Prototype of a finite state machine in puppet.
Puppet
3
star
16

puppet-yum

puppet module for yum
Makefile
3
star
17

puppet-cobbler

a puppet module for cobbler
Puppet
3
star
18

p4h

puppet for hackers course module for oh-my-vagrant
Puppet
3
star
19

gd3

A Next Generation GlusterFS management prototype
Go
2
star
20

simple-menu-system

Simple Menu System in Python
Python
2
star
21

puppet-shorewall

puppet module for shorewall
Puppet
2
star
22

puppet-rsnapshot

puppet module for rsnapshot
Puppet
2
star
23

gedit-plugins

My branch of gedit-plugins including "smarterspaces"
Python
1
star
24

bash-tutor

bash-tutor.sh Interactive live bash tutorial script with style
Python
1
star
25

mgmt-example1

an example mgmt module
1
star
26

puppet-common

puppet module for common utilities
Puppet
1
star
27

m9rx.com

1
star
28

puppet-keepalived

puppet module for keepalived
Puppet
1
star
29

mgmtconfig.com

JavaScript
1
star