一些背景:
当我开始在我目前的工作地点(在服务器基础设施中)时,已经有一个 bash、perl 和 python 代码库用于在 linux 系统上远程执行作业,编写和维护这个代码库的人花了数年时间改进它,在我开始之前。
尽管现有的代码库可以做很多事情,但有时由于缺乏文档而很难使用。一些正在执行的脚本也已经过时了。我们非常依赖代码库的作者。(可以添加,只允许作者编辑涉及的脚本)
最近我一直在试验 Ansible 和配置 linux 环境、用户、组、防火墙、安装包和运行检查。我建议开始将基本任务转换为 Ansible,并随着时间的推移将其与 Tower 或 AWX 结合起来,以更好地了解工作及其成功。
今天,其他人对这个想法并不太热衷,尤其是代码库的作者。作者不迁移到 Ansible 的论点是它“太抽象”。
问题是:
我应该尝试推动迁移到 Ansible 吗?
优点,我的看法:
- 许多功能已经通过模块存在。
- 新同事应该更容易上手。
- 可以与前端一起使用,例如 Tower 或 AWX。
- (可能)总体上更安全,因为自定义脚本要求您编写自己的检查。
- 我想 Tower/AWX 可以用于我们组织的其他团队
缺点,我的看法:
- 学习曲线
- 将需要相当多的工作来实施。
- “另一个系统”来维护。
任何人都已经开始使用 Ansible,并且基础设施已经到位,这样做的利弊?
我可以补充一点,我不是工作场所的“最强声音”,代码库作者是我们所有人中“最资深的”。所以涉及到等级制度,我的建议必须有很好的动机才能被听到。
对此感到高兴。
PS。根据您的经验,Ansible 可以是任何自动化工具。我只是碰巧了解了 Ansible。
由于您的情况显然不仅是要从目前的情况中找到一条好的前进道路,而且还涉及工作场所的政治问题,因此看起来纯粹的技术论点并不能一路帮助您。
实际上,我会说你已经有很多“配置即代码”很好,特别是如果你在 git 之类的东西中对其进行版本控制,那么要做的主要因素是可读性和努力摆脱总线因素:
如果重要任务只能由一个人可靠地执行,这对公司来说是不利的:这对个人来说不是真正的工作保障,但对公司来说是单点故障。
要引入新工具,请写下商业案例向您的经理展示:您期望获得什么,这将如何影响他的底线?为您经常执行的某些任务创建概念证明,并展示与命令式脚本语言相比,声明性配置工具如何在实现或可读性或团队成员之间的技能共享方面产生影响。
当然,没有什么说您必须只使用一种工具:shell 脚本不一定会被 Ansible 之类的工具淘汰,但听起来在您的公司管理它们的方式可能会减慢您的速度。
我认为值得与您的前辈交谈并仔细聆听,正如您所说,他既经验丰富又聪明。
对你的下一步有一个很好的理解根本原因是非常重要的,为什么事情会变成现在这样。还要从他的角度询问应该解决的挑战或弱点。很多时候,一个决定背后的根本原因对于刚进入公司的人来说是难以理解的。
根据您收到的信息,您可能需要自己回答这个公司是否适合您的问题,因为您在这里描述它的方式确实引起了一些人的注意。如果您认为这份工作适合您,您应该通过关注已表达的问题来寻求帮助您的上级。如果没有,只需更新您的简历并开始寻找新的机会。
正如其他人在评论中指出的那样,决定性的不是具体工具的名称,而是它是否是最适合具体情况和公司的工具。鉴于具体情况,进化而不是革命可能是正确的答案。
例如,一个进化步骤可能是继续使用现有脚本,但使它们更方便使用,同时扩大能够使用脚本提供的功能的人的范围。也许版本控制和使用像Rundeck这样的工具将是向前迈进的适当方法。
通常,展示简短的 POC 会有所帮助,您可以在其中展示特定工具如何以更智能的方式解决具体任务。这种方法通常比讨论或论文更有效地说服他人。您还应该积极寻求公司内部的一些支持,因为无论选择哪种工具,最重要的是它的接受程度。
说了这么多——我个人也喜欢 Ansible,你已经指出了好处。但是,您提出情况的方式,提出 Ansible 可能在内部被误认为是(消极的)革命性步骤,甚至是反对。
底线是倾听,并以一些机智行事。祝你好运!