【发布时间】:2018-05-10 23:21:34
【问题描述】:
给定一个项目的源代码,我需要确定它是否使用 Ansible。为此,我考虑搜索源代码层次结构中的所有 YAML 文件并检查它们是否是 Ansible 剧本。
是否有 Ansible playbook 独有的标签或某些结构可以将它们与其他 YAML 文件区分开来?
或者有没有更好的方法来检查项目是否使用 Ansible,仅通过分析其源代码?
【问题讨论】:
给定一个项目的源代码,我需要确定它是否使用 Ansible。为此,我考虑搜索源代码层次结构中的所有 YAML 文件并检查它们是否是 Ansible 剧本。
是否有 Ansible playbook 独有的标签或某些结构可以将它们与其他 YAML 文件区分开来?
或者有没有更好的方法来检查项目是否使用 Ansible,仅通过分析其源代码?
【问题讨论】:
项目需要做什么才能成为使用 ansible 的项目?它需要包含一个剧本吗?它是否需要实际调用ansible?项目有一些关于将项目与 ansible 一起使用的文档就足够了吗?您的问题的答案很大程度上取决于您对这个问题的回答。
是否有 Ansible playbook 独有的标签或某些结构可以将它们与其他 YAML 文件区分开来?
检查 YAML 文件是否是有效的 ansible playbook 的最简单方法是执行类似的操作
ansible-playbook file.yaml --syntax-check --list-tasks
并检查其返回值。但是,这只是一种启发式方法。不能保证某个项目中的某个人的 YAML 文件恰好是有效的 ansible playbook,但用于完全不同的目的。
或者有没有更好的方法来检查项目是否使用 Ansible,仅通过分析其源代码?
搜索ansible(不包括文档文件)可能已经足够启发式了。你当然可以检查代码是否调用了一些 ansible 二进制文件,但是你需要解析代码的 AST,遍历它并理解它——即使那样,它仍然只是一个启发式,因为你不能确定有人没有将某些可执行文件命名为 ansible 可执行文件(虽然不太可能)。我想说,与 grepping 和/或搜索 playbook 相比,精度的提高并不能证明开发这种检查的成本是合理的。完全没有。
【讨论】: