我正在寻找一个非常通用的自动化/任务执行工具的建议。范围有点介于脚本、构建系统(如 make)和编排工具(如 Ansible 或 Puppet)之间。我能做的最好的就是描述我相当模糊的“要求”,并希望提供其他人如何解决这些问题的线索。抱歉,描述太长了,我想我真的不知道我到底想要他的解决方案做什么。我一直从 SO 上的编程答案中获益,但我不完全确定我的开放式问题在这里是否可以接受。
-- 我们在企业环境中担任数据分析师/系统验证员。我们执行一系列不同的任务,并与许多不断变化的系统进行交互。我们所做的每一个小步骤都可以说是平凡/容易的,但只有在重复大量输入或组合略有不同的迭代时才会形成更大的图景。这有点像大海捞针,但具体问题每次都略有不同。这使得很难使用需要更多结构才能工作的普通脚本或自动化工具。但是在没有大团队的情况下半手工做事并不能让我们涵盖我们想要/需要的所有分析/案例。
举一个应用示例:典型任务可能涉及在供应商系统中设置大型计算,从 Web 服务器提取其 ASCII 输出并对其进行解析。然后我们将从一组配置文件和数据库中提取原始输入数据。这通过管道传输到我们使用 C++ 编写的一些本地复制工具/模型中。然后系统的结果和我们的复制都被扫描以寻找有趣的异常值(例如回归测试),并且只有这个子集被上传以供人类分析师进行调查,并在 Excel 表中很好地呈现。
我们可以一次性轻松地手动完成所有这些事情,或者使用临时工具/脚本。我们只是不能在如此细微的不同设置中重复执行此操作。我们似乎需要一个用于“常见任务”的库,该库仅通过一些输入进行专门化(例如,任务它下载时间序列并扫描异常值 - 参数将是 db 访问/登录,也可能是定义异常值在其中的参数语境)。然后我需要将这些任务链接在一起,以使复杂的任务可重复且易于从原子步骤构建。
我还没有发现任何真正做这样的事情。似乎每个利基市场都有专门的脚本或工具,但没有组合我需要执行的所有不同任务的东西。
到目前为止,我一直在玩弄一个极简主义的 sqlite 数据库,它控制着一组 python '脚本'/包装器。这些脚本从数据库中获取输入参数,并基于数据库链接/管道。脚本将它们的结果写回数据库,主要是纯文本和浮点数/整数。这种数据库接口对人类来说非常容易出错和复杂;这个想法是让(模板)脚本将(具体/参数化)脚本写入数据库以供执行,例如在执行之前自行滚动。不确定这是否是一个聪明的主意,但是数据库正在驱动脚本,这些构建块脚本之间没有太多交互;而不是让传统的一堆脚本相互调用并将一些数据转储到数据库中作为事后的想法。
我(显然)对数据/流透明度、可重复性和将小程序链接到更大的单元更感兴趣,而不是速度或扩展到更大的数据集。所有繁重的工作要么在我们与之交互的系统中完成,要么委托给从这些 python 脚本调用的 C++。这不是一个更加稳定和固定目标的生产系统,而是一个灵活的分析/调查助手。
我真的希望这里有人以前遇到过严重限制我们生产力的问题,我们可以捎带您的解决方案或想法。