configuration management

From Noah.org
Revision as of 18:02, 1 April 2014 by Root (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search


Shell scripts + Version control

I've worked with a couple systems that used Subversion and git for deployment. You can rarely just checkout a bunch of files directly into a root filesystem, so a script for setup, validate, and install the files is usually required. This separates the logic from the config files, which can be good or bad news. Generally, I prefer this, despite the issues. Logic that is spread out over all your config files can turn into a confusing mess where you end up with snippets of logic that are not even clearly used anymore, "Do we even use this anymore? Can I delete this? Will something else break?"

Ansible

Puppet

Gripes about Puppet...

  • While an end-state may be well defined, the path to getting there is non-deterministic.
  • Declarative languages still suck. Most people think imperatively, "Computer, First do this, then do that, then do another thing until done."
  • Can't easily sync large directory trees. WTF? You end up having to rsync or ensure that a tarball exists and then installing files from the tarball. If you update your deployed file tree then you have to update the tarball.