O Ansible tem um componente semelhante ao PuppetDB?


7

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.


Curioso: como você espera que uma ferramenta como Puppet (ou Chef ou CFEngine) seja capaz de fazer o que faz sem funcionar como 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.
— Gaius

@ Gaio Por um lado, conheço alguém que não possui rootdireitos 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 como root, mas usam sudomais moderadamente.
— Drux

Eles ainda precisam executar comandos como root então. Se o agente em execução é um desastre para você, você está aplicando mal a ferramenta #
— Gaius

Respostas:


5

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_factcom cacheableopção para colocá-los em cache externo.


11
Valeu. Eu não entendo o "porque" no seu segundo parágrafo: o Puppet também afirmaria que "deve ser executado por diferentes operadores de computadores diferentes e seu objetivo é garantir que os sistemas de destino estejam no estado exato" ( apenas que falaria de manifestos em vez de playbooks), mas usa um banco de dados.
— Drux

Eu quis dizer "sem nenhum componente central / compartilhado". Portanto, no Ansible, você não possui nenhum componente com estado, exceto o sistema de destino.
— Konstantin Suvorov

Entendo, isso faz sentido.
— Drux
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.