281 lines
10 KiB
Plaintext
281 lines
10 KiB
Plaintext
I've just released version 1.0.0 of mgmt!
|
|
|
|
> 614 files changed, 30199 insertions(+), 11916 deletions(-)
|
|
|
|
This is very important and large release. It's been 10 years since I first
|
|
publicly released this project, and I might as well stop confusing new users.
|
|
I'm happily using it in production for some time now, and I love writing `mcl`
|
|
every day! I am doing customer work in mgmt, and I have happy users.
|
|
|
|
With that, here are a few highlights from the release:
|
|
|
|
* There is a new function engine which is significantly faster on large graphs.
|
|
It could be improved further, but the optimizations aren't needed for now.
|
|
|
|
* The "automatic embedded etcd clustering" should be considered deprecated. You
|
|
can run with --no-magic to ensure it's off. It was buggy and we will possibly
|
|
write it with mcl anyways. Expect it to be removed soon.
|
|
|
|
* Type unification errors have context and line numbers! Many other error
|
|
scenarios have this too! This isn't perfect, and there are still some remaining
|
|
places when you don't get this information. Please help us find and expand
|
|
these.
|
|
|
|
* The function API has been overhauled which now makes writing most functions
|
|
significantly easier and simpler. They'll also use less memory. This is a
|
|
benefit of the new function engine.
|
|
|
|
* We have added *declarative* for and forkv statements to the language.
|
|
|
|
* Exported resources are merged and gorgeous! They work how I've always wanted.
|
|
You can actually see my experiment in the very first demo of mgmt, and I finally
|
|
wrote them to work with the language how I've always wanted.
|
|
|
|
* There's an http:server:ui set of resources that have been added. Check out:
|
|
https://www.youtube.com/watch?v=8vz1MMGkuik for some examples of that in action
|
|
and more!
|
|
|
|
And much more...
|
|
|
|
|
|
SPONSORS
|
|
|
|
The `mgmt` project is generously sponsored by:
|
|
|
|
m9rx corporation - https://m9rx.com/
|
|
|
|
Please reach out if you'd like to sponsor!
|
|
|
|
|
|
DOWNLOAD
|
|
|
|
Prebuilt binaries are available here for this release:
|
|
https://github.com/purpleidea/mgmt/releases/tag/1.0.0
|
|
|
|
They can also be found on the Fedora mirror:
|
|
https://dl.fedoraproject.org/pub/alt/purpleidea/mgmt/releases/1.0.0/
|
|
|
|
|
|
NEWS
|
|
|
|
* A bunch of misc mcl code has been added to modules/ for you to see.
|
|
|
|
* The user resource has been improved following feedback from cloudflare.
|
|
|
|
* Detect self-referential frags when building files that way.
|
|
|
|
* Added a new function for URL parsing.
|
|
|
|
* Type unification errors have context and line numbers!
|
|
|
|
* There's a "baddev" feature branch which gets rebased which you can use if you
|
|
don't want to install the tools to compiler the lexer/parser stuff. We do the
|
|
ugly commit for you if that's easier for development.
|
|
|
|
* We have added *declarative* for and forkv statements to the language. If you
|
|
know of a better name that "forkv" we're happy to hear it, but a small poll
|
|
didn't produce a more convincing suggestion.
|
|
|
|
* Waiting for a deploy just happens automatically with the "empty" frontend.
|
|
|
|
* Waiting to run a deploy just waits automatically until etcd is online.
|
|
|
|
* Automatic mgmt deploying after virt provisioning works with a seeds field.
|
|
|
|
* There's a global flag to skip autoedges to improve performance.
|
|
|
|
* The docker resource has been modernized and supports running on a docker host
|
|
that we're bootstrapping.
|
|
|
|
* Docker ports were built backwards and these have been corrected.
|
|
|
|
* The "world" interface has been cleaned up dramatically. This will make life
|
|
easier for someone who wants to add a new backend there. Filesystem, scheduler,
|
|
deployer, and more are all split.
|
|
|
|
* We can run our etcd connection over SSH. That's one of the new backends.
|
|
There's actually a reconnect issue, but it's an easy fix and it should likely
|
|
come out in the next release.
|
|
|
|
* We have an is_virtual function to detect where mgmt is running!
|
|
|
|
* Virtualization modules moved to qcow2 by default. It's solid.
|
|
|
|
* Improved a lot of user-facing logging so it's clearer what's happening.
|
|
|
|
* Exported resources have been implemented ... and they're glorious. They work
|
|
how I've always dreamed, and are such a breath of fresh air from the Puppet
|
|
days. There's an export/collect system. Export works by metaparam, not a special
|
|
language feature, and collect works with core functions. It runs when the
|
|
resource in the graph actually runs, as opposed to "all at once, even if you
|
|
fail" like the old days. Yay!
|
|
|
|
* fmt.printf handles more cases!
|
|
|
|
* The file resource now has a symlink param. Someone test it and find issues.
|
|
|
|
* We have an iter.range function which is helpful with `for` statements.
|
|
|
|
* We do some speculation which drastically reduces the shape of the function
|
|
graphs in a lot of constant scenarios. This also reduces the need to change the
|
|
shape, which brings a huge performance boost.
|
|
|
|
* Don't reuse fact pointers. There was a bug around those. In fact get rid of
|
|
the fact API since it's pointless really.
|
|
|
|
* There's some new stuff in the convert package.
|
|
|
|
* We added an http:server:ui resource. This is kind of a prototype, but you can
|
|
see it in action here: https://www.youtube.com/watch?v=8vz1MMGkuik
|
|
|
|
* Fix some send/recv corner cases. I wish I had more tests for this. Hint!
|
|
|
|
* There's an os.readfilewait() function in temporarily. This will go away when
|
|
we get the <|> operator.
|
|
|
|
* A WatchFiles field was added to the exec resource. Very handy.
|
|
|
|
* We have a new "line" resource. It supports "trim"-ing too.
|
|
|
|
* There are some new functions that have been added.
|
|
|
|
* The modules/ directory got some ssh key things.
|
|
|
|
* Automatic grouping logic improved, thanks to http:server:ui stuff.
|
|
|
|
* Hierarchical grouping works very reliably as far as I can tell.
|
|
|
|
* A bunch of ctx's were added all over where they never were. Legacy code!
|
|
|
|
* A bunch of network/NetworkManager/networkd and related mcl code was added. The
|
|
interfaces are really ugly, what is the correct upstream network config thing?
|
|
|
|
* We have a modinfo function.
|
|
|
|
* We built in some ulimit settings for modern machines.
|
|
|
|
* We have an mcl class for copr setup.
|
|
|
|
* We added SSH hostkey logic into our core etcd ssh connection tooling.
|
|
|
|
* The provisioner supports exec handoff. It can also handle more scenarios, eg
|
|
booting from an ipxe usb key and not installing on it.
|
|
|
|
* The provisioner supports encrypting machines with LUKS. It does this in a very
|
|
clever way to allow creation of secure passwords after first boot. Many kudos to
|
|
the systemd and other authors who built all the needed pieces for this to just
|
|
work fairly well.
|
|
|
|
* We improved a graph function from O(n) to O(1). Woops =D
|
|
|
|
* We removed the secret channels from the function graphs. This is much simpler
|
|
now!
|
|
|
|
* ExprIf and StmtIf both do the more correct thing. I guess the bigger graph was
|
|
eventually going to need to get killed. This was a good choice that I didn't
|
|
make soon enough.
|
|
|
|
* A ton of races were killed. We're building by default with the race checker.
|
|
I don't know why I didn't do this ten years ago. Performance is not so terrible
|
|
these days, and it catches so much. Woops. Good lesson to share with others.
|
|
|
|
* The language has a nil type, but don't worry, this is only for internal
|
|
plumbing, and we will NOT let it be user facing!
|
|
|
|
* The langpuppet stuff had to be removed again for now. If it's used, patch in.
|
|
|
|
* The GAPI stuff got a major cleanup. It was early code that was bad. Now it's a
|
|
lot better.
|
|
|
|
* The new function engine is the really big story. Have a look if you're an
|
|
algorithmist. We'd love to have people work on improving it further. It's most
|
|
likely glitch free now too!
|
|
|
|
* The virt resource code a big cleanup. It runs hotplug again which had rotted
|
|
due to libvirt api changes I think.
|
|
|
|
* The qemu guest agent works automatically again.
|
|
|
|
* The svc resource (one of the earliest) has been overhauled since it had old
|
|
buggy code which has now been fixed.
|
|
|
|
* We're looking for help writing Amazon, Google, DigitalOcean, Hetzner, etc,
|
|
resources if anyone is interested, reach out to us. Particularly if there is
|
|
support from those organizations as well.
|
|
|
|
* Many other bug fixes, changes, etc...
|
|
|
|
* See the git log for more NEWS, and for anything notable I left out!
|
|
|
|
|
|
BUGS/TODO
|
|
|
|
* Function values getting _passed_ to resources doesn't work yet, but it's not a
|
|
blocker, but it would definitely be useful. We're looking into it.
|
|
|
|
* The arm64 version doesn't support augeas, so it was built with:
|
|
GOTAGS='noaugeas' to get the build out.
|
|
|
|
* We don't have the <|> operator merged yet. Expect that when we do this, we'll
|
|
consider removing the || (default) operator. This is the only pending language
|
|
change that I know of, and these cases are easily caught by the compiler and can
|
|
be easily patched.
|
|
|
|
* Autoedge performance isn't great. It can easily be disabled. Most of the time
|
|
I just specify my edges, so this is really a convenience feature, but it should
|
|
be looked into when we have a chance.
|
|
|
|
* There's a subtle ssh reconnect issue which can occur. It should be easy to
|
|
fix and I have a patch in testing.
|
|
|
|
* Our wasm code input fields grew tick marks, but I think this disturbed the
|
|
buggy wasm code. If someone is an expert here, please have at it.
|
|
|
|
|
|
TALKS
|
|
|
|
After FOSDEM/CfgMgmtCamp 2026, I don't have anything planned until CfgMgmtCamp
|
|
2027. If you'd like to book me for a private event, or sponsor my travel for
|
|
your conference, please let me know.
|
|
|
|
|
|
MISC
|
|
|
|
Our mailing list host (Red Hat) is no longer letting non-Red Hat employees use
|
|
their infrastructure. We're looking for a new home. I've opened a ticket with
|
|
Freedesktop. If you have any sway with them or other recommendations, please let
|
|
me know:
|
|
https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/1082
|
|
|
|
We're still looking for new contributors, and while there are easy, medium and
|
|
hard issues available! You're also welcome to suggest your own! Please join us
|
|
in #mgmtconfig on Libera IRC or Matrix (preferred) and ping us if you'd like
|
|
help getting started! For details please see:
|
|
|
|
https://github.com/purpleidea/mgmt/blob/master/docs/faq.md#how-do-i-contribute-to-the-project-if-i-dont-know-golang
|
|
|
|
Many tagged #mgmtlove issues exist:
|
|
https://github.com/purpleidea/mgmt/issues?q=is%3Aissue+is%3Aopen+label%3Amgmtlove
|
|
|
|
Although asking in matrix is the best way to find something to work on.
|
|
|
|
|
|
MENTORING
|
|
|
|
We offer mentoring for new golang/mgmt hackers who want to get involved. This is
|
|
fun and friendly! You get to improve your skills, and we get some patches in
|
|
return. Ping me off-list for details.
|
|
|
|
|
|
THANKS
|
|
|
|
Thanks (alphabetically) to everyone who contributed to the latest release:
|
|
Ahmad Abuziad, Edward Toroshchyn, Felix Frank, hades, James Shubin, Karpfen, Lourenço, Lourenço Vales, Samuel Gélineau
|
|
We had 10 unique committers since 0.0.27, and have had 103 overall.
|
|
run 'git log 0.0.27..1.0.0' to see what has changed since 0.0.27
|
|
|
|
|
|
Happy hacking,
|
|
James
|
|
@purpleidea
|