rant.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
~~ zoa doesn't pretend ~~
this section is a rant that i'll convert into a blog post tbh
chef & ansible & puppet & salt all pretend to be
fully idempotent & declarative, but leave
actual declarative-ness and idempotence as
an exercise to the user.
zoa doesn't pretend. zoa is not idempotent. zoa
is not declarative. it assumes your state changes
over time, and zoa makes it easy to keep up with those
changes. you won't have to look at horrible doc websites
or commit a week to learning a god
damned
stupid
DSL
other config management systems make their users
feel stupid.
zoa doesn't. zoa uses shell scripts like every
single linux distro has used for millenia. it
has exactly zero dependencies besides zoa itself.
zoa adheres to standards, and uses well-known
distro conventions.
zoa is easy. and simple. and honestly,
quite a smol guy
the other tools want to do a lot - search across
your nodes, deploy via their tooling, automate
testing, manage AWS resources?!?!?
zoa is only concerned with _managing configuration_
_on servers_
and nothing else. forever.
the other tools break constantly because they
try to do everything.
zoa breaks rarely because it does almost nothing.
other tools are slow because they have HUGE runtimes and scopes
zoa is comparatively fast, because it's just running god dang
shell scripts :3
zoa doesn't require:
- ssh
- python
- ruby
- a chef server or salt master
other tools abstract too much
zoa abstracts a few definitely useful functions, but
otherwise gets out of the way and gives you a light
framework to speak shell to your systems.
in zoa, you write plain POSIX shell. Why?
- posix shell is productive!
- posix shell is portable!
- posix shell is the language of system configuration!
- posix shell is easy to remember!
- posix shell rarely changes!