Difference between revisions of "configuration management"
From Noah.org
Jump to navigationJump to searchm (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 18: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.