I know Puppet from (limited) experience and have noticed that in configuration management there is now a strong trend towards Ansible.
On the one hand, I understand that Ansible does not require an agent, because it makes intelligent use of ssh
.
On the other hand, these are features have come to like about Puppet:
- access to system-wide configuration state and history (PuppetDB) via REST API
- ability to keep backups of overwritten files (filebuckets)
- ability to encrypt part of the Hiera configurations (
.eyaml
)
Among these, PuppetDB seems to me the most important and useful (e.g. for integration with other tools). Therefore my question is this: Does Ansible have something akin to PuppetDB, i.e. a component that offers an API where it could e.g. be asked "What packages are installed on host x?" or "On which hosts is package y installed?"
(This question was migrated over from StackOverflow).
UPDATE Significant downside of Puppet it my experience so far: Not so much the fact that it requires an agent (from what I have seen, Ansible's use of Python also introduces an agent of sorts in the form of a Python interpreter ;-), but that it wants its agent to act as root
only and always.
root
? It replaces the need for a SA to login and do things manually, therefore it must be able to do anything an SA can do.root
access rights on a server cluster, but still can use Ansible for managing a large web application there. Besides, there are SAs who do not log in asroot
, but usesudo
more sparsingly instead.