Difference between revisions of "configuration management"

From Noah.org
Jump to: navigation, search
m (Created page with 'Category: Engineering == Shell scripts == == Ansible ==')
 
m
 
Line 1: Line 1:
 
[[Category: Engineering]]
 
[[Category: Engineering]]
  
== Shell scripts ==
+
== 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 ==
 
== 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.

Latest revision as of 17:02, 1 April 2014


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.