一方面,我知道Ansible不需要代理,因为它使
ssh
的智能使用。 另一方面,这些功能与Puppet相似:
通过REST API访问系统范围的配置状态和历史记录(PuppetDB)
可以保留覆盖文件(文件桶)的备份的功能
可以加密Hiera配置的一部分(
.eyaml
)的功能其中,PuppetDB在我看来最重要和有用例如与其他工具集成)。因此,我的问题是这样的:Ansible是否具有类似于PuppetDB的东西,即在可能的情况下提供API的组件。询问“主机x上安装了哪些软件包?”还是“在哪个主机上安装了软件包?”(
(此问题已从StackOverflow迁移过来)。
UPDATE到目前为止,我对Puppet的重大缺点是:不是它需要一个代理的事实(从我所看到的,Ansible对Python的使用还引入了一种以Python解释器形式的代理;-),但是它希望其代理仅且始终充当
root
。 #1 楼
直接答案是“否”。Ansible没有任何数据库,因为它应该由来自不同计算机的不同操作员运行,并且目的是确保目标系统准确无误。状态,如剧本中所述。
有一个选项可以将外部事实缓存后端附加到Ansible。因此,您可以将redis设置为缓存,Ansible将在运行Playbook时将收集的事实填充到Redis中,然后您可以为它们查询Redis。但这是非常有限的解决方案,因为Ansible不会收集太多的事实,例如,没有有关已安装软件包的信息-您必须自己使用
set_fact
和cacheable
选项收集它们,以将其放入外部缓存。评论
谢谢。我不理解您的第二段中的“原因”:Puppet会同时要求IMO声称“它应该由不同计算机上的不同操作员运行,目的是确保目标系统处于准确状态”(只是说清单而不是剧本),但它使用的是数据库。
– Drux
17年12月8日在8:36
我的意思是“没有任何中央/共享组件”。因此,在Ansible中,除了目标系统之外,您没有任何有状态的组件。
–康斯坦丁·苏沃洛夫(Konstantin Suvorov)
17年12月8日在8:40
我知道,这很有意义。
– Drux
17 Dec 8'在8:40
评论
好奇:您如何期望像Puppet(或Chef,或CFEngine)这样的工具能够在不以root用户身份运行的情况下完成其工作?它取代了SA登录和手动执行操作的需要,因此它必须能够执行SA可以执行的任何操作。@Gaius一方面,我知道一个没有服务器群集上的root访问权限,但仍然可以使用Ansible在此处管理大型Web应用程序的人。此外,有些SA并非以root用户身份登录,而是更稀疏地使用sudo。
他们仍然确实需要以root用户身份运行命令。如果正在运行的代理适合您,那么您是错误地使用了该工具