write about why not ansible
This commit is contained in:
parent
8513003388
commit
cc70cdc660
1 changed files with 38 additions and 0 deletions
38
README.md
38
README.md
|
@ -81,6 +81,44 @@ Finally you should see be able to access the production Nomad and Consul by brow
|
||||||
- Nomad: http://localhost:4646
|
- Nomad: http://localhost:4646
|
||||||
|
|
||||||
|
|
||||||
|
## Why not Ansible?
|
||||||
|
|
||||||
|
I often get asked why not use Ansible to deploy to remote machines, as this
|
||||||
|
would look like a typical use case. There are many reasons, which basically
|
||||||
|
boil down to "I really don't like Ansible":
|
||||||
|
|
||||||
|
- Ansible tries to do declarative system configuration, but doesn't do it
|
||||||
|
correctly at all, like Nix does. Example: in NixOS, to undo something you've
|
||||||
|
done, just comment the corresponding lines and redeploy.
|
||||||
|
|
||||||
|
- Ansible is massive overkill for what we're trying to do here, we're just
|
||||||
|
copying a few small files and running some basic commands, leaving the rest
|
||||||
|
to NixOS.
|
||||||
|
|
||||||
|
- YAML is a pain to manipulate as soon as you have more than two or three
|
||||||
|
indentation levels. Also, why in hell would you want to write loops and
|
||||||
|
conditions in YAML when you could use a proper expression language?
|
||||||
|
|
||||||
|
- Ansible's vocabulary is not ours, and it imposes a rigid hierarchy of
|
||||||
|
directories and files which I don't want.
|
||||||
|
|
||||||
|
- Ansible is probably not flexible enough to do what we want, at least not
|
||||||
|
without getting a migraine when trying. For example, it's inventory
|
||||||
|
management is too simple to account for the heterogeneity of our cluster
|
||||||
|
nodes while still retaining a level of organization (some configuration
|
||||||
|
options are defined cluster-wide, some are defined for each site - physical
|
||||||
|
location - we deploy on, and some are specific to each node).
|
||||||
|
|
||||||
|
- I never remember Ansible's command line flags.
|
||||||
|
|
||||||
|
- My distribution's package for Ansible takes almost 400MB once installed,
|
||||||
|
WTF??? By not depending on it, we're reducing the set of tools we need to
|
||||||
|
deploy to a bare minimum: Git, OpenSSH, OpenSSL, socat,
|
||||||
|
[pass](https://www.passwordstore.org/) (and the Consul and Nomad binaries
|
||||||
|
which are, I'll admit, not small).
|
||||||
|
|
||||||
|
|
||||||
## More
|
## More
|
||||||
|
|
||||||
Please read README.more.md for more detailed information
|
Please read README.more.md for more detailed information
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue