Enrico Zini: My gripes with Ansible
This is part of a series of posts on ideas for an ansible-like provisioning
system, implemented in Transilience.
Musing about Ansible
I like infrastructure as code.
I like to be able to represent an entire system as text files in a git
repositories, and to be able to use that to recreate the system, from my
Virtual Private Server, to my print server and my stereo,
to build machines,
to other kind of systems I might end up setting up.
I like that the provisioning work I do on a machine can be self-documenting and
replicable at will.
The good
For that I quite like Ansible, in principle: simple (in theory) YAML files
describe a system in (reasonably) high-level steps, and it can be run on
(almost) any machine that happens to have a simple Python interpreter
installed.
I also like many of the modules provided with Ansible: they are convenient,
platform-independent implementations of common provisioning steps. They'd be
fantastic to have in a library that I could use in normal programs.
The bad
Unfortunately, Ansible is slow. Running the playbook on my VPS takes about 3
whole minutes even if I'm just changing a line in a configuration file.
This means that most of the time, instead of changing that line in the
playbook and running it, to then figure out after 3 minutes that it was the
wrong line, or I made a spelling mistake in the playbook, I end up logging into
the server and editing in place.
That defeats the whole purpose, but that level of latency between iterations is
just unacceptable to me.
The ugly
I also think that Ansible has outgrown its original design, and the supposedly
declarative, idempotent YAML has become a full declarative scripting language
in disguise, whose syntax is extremely awkward and verbose.
If I'm writing declarative descriptions, YAML is great. If I'm writing loops
and conditionals, I want to write code, not templated YAML.
I also keep struggling trying to use Ansible to provision
chroots
and nspawn
containers.
A personal experiment: Transilience
There's another thing I like in Ansible: it's written in Python, which is a
language I'm comfortable with. Compared to other platforms, it's one that I'm
more likely to be able to control beyond being a simple user.
What if I can port Ansible modules into a library of high-level provisioning
functions, that I can just run via normal Python scripts?
What if I can find a way to execute those scripts remotely and not just
locally?
I've started writing some prototype code, and the biggest problem is, of
course, finding a name.
Ansible comes from
Ursula K. Le Guin's
Hainish Cycle novels, where it
is a device that allows its users to communicate near-instantaneously over
interstellar distances. Traveling, however, is still constrained by the speed
of light.
Later in the same universe, the novels
A Fisherman of the Inland Sea
and The Shobies' Story,
talk about experiments with instantaneous interstellar travel, as a science
Ursula Le Guin called transilience:
Transilience: n. A leap across or from one thing to another [1913 Webster]Transilience. I like everything about this name. Now that the hardest problem is solved, the rest is just a simple matter of implementation details.

OK, this is not an easy post. I have been maintaining Cinnamon in Debian for quite some time, since around the times version 4 came out. The soon (hahaha) to be released Bullseye will carry the last release of the 4-track, but version 5 is already waiting, After Bullseye, the future of Cinnamon in Debian currently looks bleak.
Since my switch to
Today,
Wrote a quick hack to open chroot in emacs tramp.
Today, Fre(i)e Software GmbH has been contracted for packaging
A while back there was a thread on one of our company mailing lists about
I built my last desktop computer what seems like ages ago. In 2011, I was in a
very different place, both financially and as a person. At the time, I was
earning minimum wage at my school's caf to pay rent. Since the caf was owned
by the school cooperative, I had an employee discount on computer parts. This
gave me a chance to build my first computer from spare parts at a reasonable
price.
After 10 years of service
Welcome to the 33th post in the rigorously raconteuring R recommendations series, or
Continuing with
I'm writing up a
Two TODO items in the margin
Collated TODOs in a list
To start writing about updates regarding my GSoC project, the first obvious thing I need to do is to explain what my project really is. So let s get started.