Conheço o Puppet por experiência (limitada) e notei que no gerenciamento de configurações agora há uma forte tendência em direção ao Ansible.
Por um lado, entendo que o Ansible não requer um agente, porque faz uso inteligente dele ssh
.
Por outro lado, estas são características que gostaram do Puppet:
- acesso ao estado e histórico de configuração em todo o sistema (PuppetDB) via API REST
- capacidade de manter backups de arquivos sobrescritos (filebuckets)
- capacidade de criptografar parte das configurações do Hiera (
.eyaml
)
Entre eles, o PuppetDB me parece o mais importante e útil (por exemplo, para integração com outras ferramentas). Portanto, minha pergunta é a seguinte: O Ansible tem algo parecido com o PuppetDB, isto é, um componente que oferece uma API na qual poderia, por exemplo, ser perguntado "Quais pacotes estão instalados no host x ?" ou "Em quais hosts o pacote y está instalado?"
(Esta questão foi migrada do StackOverflow ).
ATUALIZAÇÃO A desvantagem significativa do Puppet é a minha experiência até agora: não tanto o fato de exigir um agente (pelo que vi, o uso do Ansible no Python também introduz um tipo de agente na forma de um intérprete do Python ;-), mas que deseja que seu agente aja como root
único e sempre.
root
? Ele substitui a necessidade de um SA fazer login e fazer as coisas manualmente, portanto, deve poder fazer tudo o que um SA pode fazer.root
direitos de acesso em um cluster de servidores, mas ainda pode usar o Ansible para gerenciar um aplicativo Web grande lá. Além disso, existem SAs que não efetuam login comoroot
, mas usamsudo
mais moderadamente.Respostas:
A resposta direta é "não".
O Ansible não possui nenhum banco de dados, pois deve ser executado por diferentes operadores de computadores diferentes e seu objetivo é garantir que os sistemas de destino estejam no estado exato, conforme especificado nos manuais.
Há uma opção para anexar back-end de cache de fatos externos ao Ansible. Para que você possa configurar o redis como seu cache, o Ansible o preencherá com fatos reunidos durante a execução do manual e, posteriormente, você poderá consultar os redis. Mas é uma solução muito limitada, porque não há muitos fatos coletados pelo Ansible, por exemplo, não há informações sobre pacotes instalados - você terá que reuni-los pessoalmente e usar uma opção
set_fact
comcacheable
opção para colocá-los em cache externo.fonte