pages tagged ansibleyakkinghttp://yakking.branchable.com/tags/ansible/yakkingikiwiki2015-09-30T11:00:15ZOrchestration frameworkshttp://yakking.branchable.com/posts/orchestration/Daniel Silverstone2015-09-30T11:00:15Z2015-09-30T11:00:08Z
<p><a href="https://en.wikipedia.org/wiki/Orchestration_(computing)">Orchestration</a> is, simply, the automated management of software and hardware
systems. It is one of the central tools in the toolbelt of a competent
sysadmin who has been given the time to do their job properly rather than
suffering under a constant deluge of <em>…could you just…</em>s and firefighting the
mess they inherited. Orchestration is also sometimes referred to as
<a href="https://en.wikipedia.org/wiki/Configuration_management">configuration management</a>.</p>
<p>Over the past few years the number of frameworks has increased substantially,
each trying to solve problems perceived in their predecessors. Problems which
might vary from "I can't understand the configuration syntax" through "I do not
like the language this is written in" to "I don't want any special agent on the
target machine."</p>
<p>Here are a few of the currently available and in-use orchestration frameworks.
You are likely to have heard of at least one or two of them:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/CFEngine">CFEngine</a> is written in C and is a
well establised configuration management engine.</li>
<li><a href="https://en.wikipedia.org/wiki/Chef_(software)">Chef</a> is written in Ruby and
Erlang. It is very popular and a lot of projects offer Chef <em>cookbooks</em> to
help people to orchestrate their software.</li>
<li><a href="https://en.wikipedia.org/wiki/Salt_(software)">Salt</a> is written in Python
and is quite popular among adminstrators of large environments which change
regularly, for which rapid configuration deployment is needed.</li>
<li><a href="https://en.wikipedia.org/wiki/Puppet_(software)">Puppet</a> is written in Ruby
and is also often supported by software projects directly.</li>
<li><a href="https://en.wikipedia.org/wiki/Ansible_(software)">Ansible</a> is written in
Python and focusses on use-cases where the systems under management may not
be able to have an agent installed on them. Ansible works directly with SSH
connections or similar access methods and then runs up python code on the
target system.</li>
<li><a href="https://propellor.branchable.com/">Propellor</a> is written in Haskell and
unlike the other options in this list, expects you to write your
configuration in Haskell. Propellor uses the power of Haskell's type system
to ensure that configurations are as consistent as they can be before they
are deployed.</li>
</ul>
<p>There are, of course, <a href="https://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software">many more</a> and you can read all about them on
Wikipedia.</p>
<p>If you're responsible for administering any systems (and lets face it, unless
you're really unlucky, you at least administer your own personal system) then
you should really look into whether you could effectively use an orchestration
framework to manage your systems, allowing you to keep configuration under
revision control in a controlled and reproducible way.</p>