首页 > 解决方案 > 以编程方式识别 Ansible 剧本

问题描述

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

Ansible playbook 是否有任何标签或一些独特的结构来将它们与其他 YAML 文件区分开来?

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

标签: ansibleyaml

解决方案


一个项目需要做什么才能使用 ansible成为一个项目?它需要包含一个剧本吗?它是否需要实际调用ansible?项目有一些关于将项目与 ansible 一起使用的文档就足够了吗?你的问题的答案很大程度上取决于你对这个问题的回答。

Ansible playbook 是否有任何标签或一些独特的结构来将它们与其他 YAML 文件区分开来?

检查 YAML 文件是否是有效的 ansible playbook 的最简单方法是执行类似的操作

ansible-playbook file.yaml --syntax-check --list-tasks

并检查其返回值。但是,这只是一种启发式方法。不能保证某个项目中的某个人的 YAML 文件恰好是有效的 ansible playbook,但用于完全不同的目的。

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

Grepping for ansible,不包括文档文件,可能是足够的启发式。你当然可以检查代码是否调用了一些 ansible 二进制文件,但是你需要解析代码的 AST,遍历并理解它——即使这样,它仍然只是一个启发式,因为你不能确定有人没有命名一些可执行文件,如 ansible 可执行文件(虽然不太可能)。我想说,与 grepping 和/或搜索 playbook 相比,精度的提高并不能证明开发这种检查的成本是合理的。完全没有。


推荐阅读