【问题标题】:Programmatically identifying Ansible playbooks以编程方式识别 Ansible 剧本
【发布时间】:2018-05-10 23:21:34
【问题描述】:

给定一个项目的源代码,我需要确定它是否使用 Ansible。为此,我考虑搜索源代码层次结构中的所有 YAML 文件并检查它们是否是 Ansible 剧本。

是否有 Ansible playbook 独有的标签或某些结构可以将它们与其他 YAML 文件区分开来?

或者有没有更好的方法来检查项目是否使用 Ansible,仅通过分析其源代码?

【问题讨论】:

    标签: ansible yaml


    【解决方案1】:

    项目需要做什么才能成为使用 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 相比,精度的提高并不能证明开发这种检查的成本是合理的。完全没有。

    【讨论】:

    • 我将使用 ansible-playbook file.yaml --syntax-check 方法。在这种情况下,我们认为,要成为使用 ansible 的项目,它只需要包含至少一个有效的 playbook。
    猜你喜欢
    • 2018-11-05
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多