0.24.1 is out
As promised, 0.24.1 is out. Here's the changelog:
- Updated vim filetype detection. (#900 and #963)
- Default resources like schedules no longer conflict with managed resources. (#965)
- Removing the ability to disable http keep-alive, since it didn't really work anyway and it should no longer be necessary.
- Refactored http keep-alive so it actually works again. This should be sufficient enough that we no longer need the ability to disable keep-alive. There is now a central module responsible for managing HTTP instances, along with all certificates in those instances.
- Fixed a backward compatibility issue when running 0.23.x clients against 0.24.0 servers -- relationships would consistently not work. (#967)
- Closing existing http connections when opening a new one, and closing all connections after each run. (#961)
- Removed warning about deprecated explicit plugins mounts.
The main fixes are that http keep-alive works now (meaning you should only have one connection open to your server, not tens or hundreds), the backward compatibility problem is fixed, and default schedules work again.
Fri, 21 Dec 2007 | Tags: puppet, release
New Development and Release Practices
(Posted to the list earlier, duplicated here for easy linking.)
As mentioned, I'm making some changes to how I manage development around releases, since 0.23.2 still had too many bugs but it took me four months to get a release out. This is obviously unacceptable, regardless of how good my excuses are. :)
The major change is that I'm always going to maintain a stable branch, named after the current stable minor release. For example, I created a new branch today called '0.24.x' (yes, with a literal 'x'). We'll do all bug fixes against that branch and all development against the master branch, with frequent merges from the stable branch to the master branch, but never the other direction.
This will guarantee that we'll always have a stable branch that's ready to release, and it will mean that each stable branch will only have bug fixes in it with no new development. It will also likely mean an acceleration in new minor release versions, since we won't be doing new development in that branch (I've traditionally done new small features in the minor-minor releases sometimes).
I'm also hoping to find someone willing to maintain this stable branch, including deciding when to make a new release, so that there's a clear separation in duties between maintaining development and maintaining stable. I've got one potential volunteer for this, but if you're interested, please let me know.
Related to this change, I'm planning to stick to doing any significant development in feature branches which will only be merged with master upon completion -- this was prohibitively difficult with SVN, since merging is so painful with it, but with git it's easy to keep your feature branches up to date with the master branch. I'm not entirely sure how this is going to work yet, whether I'll be publicly publishing all of those branches or what, but we'll see, I guess.
These changes are all based on the recommendations of a community member, and I need more help. If you know of a better way to do things, or just of a couple additional changes I should make, then please, please let me know -- I'm learning a lot about project management all the time, but I'd much rather learn by being told than by making mistakes.
I hope to have a page up describing these practices, but if you're willing to document them and help maintain the page, please do so -- I'd love the help.
Thu, 13 Dec 2007 | Tags: puppet, development, release, projectmanagement
0.24.0 Is Out
(This is a duplicate of the announcement to the list.)
At long last, 0.24.0 has been released. Look for your friendly packagers to package it up in the near future, but in the meantime you can download it.
I'll be walking the different release sites (RubyForge et al) and posting it there, too.
Look for a related announcement later today on changes in development practices in hopes that we don't ever have this kind of lengthy delay again.
The changelog is quite large, but not necessarily for human consumption (and it looks like I wasn't quite as good at maintaining it as I'd thought). Other than bug fixes, this release was mostly about internal development rather than user-exposed features, so you might be surprised at how little is different from the outside. Here is a summary of the major features in this release:
- Added support for an AltSubjectName in certificates (#896), to accomodate the recent update to Ruby that validates the server's certificate name against its DNS name. By default, the server has puppet and puppet.$domain added as aliases in the certificate, and you can use the dnscertnames to create other (replacement, not additional) aliases for any host when signing.
- Refactored interface support significantly.
- Added a k5login type for managing kerberos logins.
- Added a show_diff option to show the differences between files being replaced; this option is enabled by default when running with -- test or --noop.
- Replaced the internal graph library with a much faster one, and started using graphs in more places. This should not be noticeable by users, but I can tell. :)
- Added a dynamic plugins mount akin to the modules mount, making it easy to copy all Ruby code from all modules to your clients. Just enable pluginsync on the clients and your clients will get any custom types, providers, or facts before they start their configuration run.
- Modifying how external node support works. You must now specify the node_terminus setting, which obsoletes the ldapnodes setting. You must use exec as the node_terminus if you are using external nodes, and you must still specify the path to the external nodes command in external_nodes. See the wiki:IndirectionReference for more information.
- Puppet now supports multiple environments. You must specify all valid environments using the environments setting (comma- separated), and the default environment is development. You can provide any environment-specific settings in your puppet.conf (but not the old-style puppetd.conf) by putting the settings in a section named after the environment, but generally speaking only the modulepath, manifest, and templatedir will have much affect at this point. See the wiki:UsingMultipleEnvironments page for more information.
- Added an internal catalog class to manage resource collections. This will be an important internal class going forward, as it encapsulates a lot of the functionality around managing sets of resources, which obviously kind of matters, but again it will likely not be exposed much to users.
- Laid the groundwork for the move to REST -- all the plumbing is there, it's just a question of execution. See you in 0.25.0. :)
Just about everything else had a bug ticket associated with it, so you should be able to look through the changelog or the closed tickets associated with misspiggy to see what's in this release (note that there are 91 closed tickets associated with misspiggy, in case you're wondering what took this release so long).
As always, please wait at least 24 hours before filing any bugs against this release. :)
Also, I've mentioned this on the list, but I fully expect to have a 0.24.1 release out within the next few weeks. I'm not so naive as to think there won't be important bugs in this release, so please don't just upgrade your whole infrastructure without testing, and please do file bugs you find -- just not today.
Again, look for an announcement of changes to development practice today, also.
Thu, 13 Dec 2007 | Tags: puppet, release
0.23.1 Is Out
I've just released 0.23.1. It's mostly a bug-fix release from 0.23.0, but I've added some functionality, with the most notable being that you can specify relationships to classes, e.g., require => Class[puppet].
Now to go update the wiki and push the releases to all of the web sites.