Mgmt is a next gen config management tool that takes a fresh look at existing automation problems.
Three of the main design features of the tool include:
* Parallel execution
* Event driven mechanism
* Distributed architecture
The tool has two main parts: the engine, and the language.
This presentation will demo both and include many examples showing how monitoring is built-in to each resource, and how events can cause the system to react and fix a problem before your pager even goes off.
Finally we’ll talk about some of the future designs we’re planning and make it easy for new users to get involved and help shape the project.
A number of blog posts on the subject are available. https://ttboj.wordpress.com/?s=mgmtconfig Attendees are encouraged to read some before the talk if they want a preview!
OSMC 2017 | Next Generation Config Mgmt Monitoring by James Shubin
1. 1 JAMES SHUBIN
Next generation
configuration mgmt:
Reactive Systems
James Shubin, a.k.a. @purpleidea
Principal Software Engineer, Red Hat
OSMC, Nuremberg, Germany, 22/Nov/2017
2. 2 JAMES SHUBIN
Next generation
configuration mgmt:
What is possible today ?
James Shubin, a.k.a. @purpleidea
Principal Software Engineer, Red Hat
OSMC, Nuremberg, Germany, 22/Nov/2017
6. 6 JAMES SHUBIN
Who am I ?
● Hacker
● Config Mgmt. Architect @ Red Hat
● Technical Blogger: The Technical Blog of James
https://ttboj.wordpress.com/
● Physiologist (Cardiology Specialization)
● DevOps believer
30. 30 JAMES SHUBIN
Distributed topology: demo
● N+ nodes: h1, h2, h3…
● Each creates a random string to export
● Each collects all available strings
● Note how fast this converges…
31. 31 JAMES SHUBIN
An ideal language allows us to express easily
what is useful for the programming task, and
at the same time makes it difficult to write
what leads to incomprehensible or incorrect
programs.
– Nico Habermann
33. 33 JAMES SHUBIN
Language
Safe
◦ Declarative (immutable), Typed, Functional
◦ Written in a memory-safe language (golang)
Powerful
◦ Reactive
◦ Resource Primitives (send->recv)
Reasonalizable (Reason-able)
◦ Domain specific (DSL)
◦ Expressive (distributed systems)
34. 34 JAMES SHUBIN
Reactive: demo
$y1 = datetime() + $ayear
# note the order of the assignment (year can come later in the code)
$ayear = 60 * 60 * 24 * 365 # is a year in seconds (31536000)
$tmpl {str: variant} = {"year" => $y1, "load" => $load, "vu" => $vu, }
$load = load()
$vu = vumeter("======", 10, 0.9) # symbol, multiplier, peak
$f = "Now + 1 year is: {{ .year }} seconds, aka: {{ .year }}nn
load average: {{ .load }}nn
vu: {{ .vu }}n”
file "/tmp/mgmt/datetime" {
content => template($f, $tmpl),
}
35. 35 JAMES SHUBIN
History: demo
$dt = datetime() # this outputs a stream of values
$ix0 = $dt{0} # this is the most current value...
$ix1 = $dt{1}
$ix2 = $dt{2}
$ix3 = $dt{3} # we can look up an older value here!
file "/tmp/mgmt/history" {
content => ...,
}
39. 39 JAMES SHUBIN
Interesting Properties
The lang/engine separation means
that runtime-errors are virtually as
safe as compile-time errors!
(We aim to eliminate these entirely.)
40. 40 JAMES SHUBIN
Interesting Properties
Code is actually a graph, so ordering
is actually resolved cleverly.
(if you write out of order code, you’re
insane)
41. 41 JAMES SHUBIN
Interesting Properties
Variables are immutable, which helps
create safer programs.
(The functional aspects will also help
out here.)
42. 42 JAMES SHUBIN
Interesting Properties
Hysteresis will help us model real-life
decision making and complex,
distributed systems.
Both sequence-based and time-based
hysteresis is possible.
43. 43 JAMES SHUBIN
Interesting Properties
Reactive variables can help us model
local, real time systems, but also to
handle events in the distributed
system.
(Error scenarios too!)
52. 52 JAMES SHUBIN
Learn more
● The Technical Blog of James:
https://ttboj.wordpress.com/
● Mgmt:
https://github.com/purpleidea/mgmt/
● Engine presentation (OSDC):
https://youtube.com/watch?v=LkEtBVLfygE
● Technical articles and screencasts about this:
https://ttboj.wordpress.com/?s=mgmtconfig
● Contact me if you have any other questions:
purpleidea @ { irc, twitter, github, gmail, redhat.com }