ansible - 以编程方式识别 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,仅通过分析其源代码?
Grepping for ansible
,不包括文档文件,可能是足够的启发式。你当然可以检查代码是否调用了一些 ansible 二进制文件,但是你需要解析代码的 AST,遍历并理解它——即使这样,它仍然只是一个启发式,因为你不能确定有人没有命名一些可执行文件,如 ansible 可执行文件(虽然不太可能)。我想说,与 grepping 和/或搜索 playbook 相比,精度的提高并不能证明开发这种检查的成本是合理的。完全没有。
推荐阅读
- perl - 如何判断一个对象是否有特定的重载方法?
- reactjs - wepack5 的 DEV 和 PROD 的单独配置不起作用
- spring - spring-boot 依赖覆盖:依赖升级最佳实践?
- twilio - 如何从 Twilio 号码接收和发送语音邮件?
- reactjs - React:如何在回调中更改状态?
- python - 如何根据长度 Python 在多行上打印字符串?
- cognos-11 - 用于故事、仪表板和报告的 cognos 缓存
- session - 是否可以从我的后端注销 wso2is?
- javascript - 有没有办法将带有文件的多个对象发送到服务器
- keyboard - 如何使用组有效地控制键人键盘中的规范化?