
在代码部署期间,存在服务/系统故障的风险。网络运营中心监控来自服务器的警报。如果警报是代码部署的结果,那么可能没有什么可担心的。然而,如果没有人在服务器上工作,那么显然警报值得关注。
目前,当我们在服务器上工作时,我们会通知 NOC。我想知道是否已经存在一个脚本/程序,可以监听给定服务器上的输入,并在收到特定输入时将收到的输入与服务器一起广播到指定的服务器上。
假设我在服务器‘x’上工作并运行 puppet 代理
是否可以配置一个在后台运行的进程来使用“puppet agent”在终端上监听用户输入,然后在该输入存在时向给定的服务器广播消息?
这个想法是添加部署团队使用的常用命令列表,这个过程将监听这些命令并为所有命令发送广播。
如果它可以在预定义位置(例如该命令的日志(在本例中为 puppet 代理))搜索退出消息(例如“puppet 成功完成..”),并且在找到退出消息时向给定的服务器发送额外的广播,那么它也很有用。
我相信只要付出足够的努力就能创造出来,只是好奇是否已经存在可以根据我们的需要进行配置的东西。
谢谢
答案1
可能没有真正的工具可以满足您的需求,因为拥有特殊的雪花并可以通过 ssh/rdp 连接的模式正在逐渐消失,因为它无法扩展。您应该将服务器视为牲畜,而不是宠物。
不要通过 ssh 进入你的机器并运行puppet apply
;最好使用 puppet 服务器,并利用参数化类来定义应该发布哪个版本。
理想情况下,您应该有两到四台几乎相同的服务器,每台服务器的配置都相同。(生产 + 阶段 + 质量保证 + 开发)。这样,您可以在将部署推送到生产之前测试您的部署是否在机器上正常运行。
如果您的部署需要多个步骤,而这些步骤无法封装在您的模块中(例如从负载均衡器中删除、修改数据库等...)。那么您将需要使用可以按顺序执行这些步骤的工具来增强您的 puppet 运行。
云语编排管理
卡皮斯特拉诺部署自动化
RunDeck定义作业/任务的 GUI
其他可以帮助部署过程的工具。
领事服务发现 + 报告
最后,听起来你想要一个反馈循环来告诉你部署是否成功。Puppet Master 和领班都可以做到这一点。你还可以将状态报告给 REST 基础数据库。
然后使用仪表板样式工具显示最后 x 个结果。
或者,你可以直接进入聊天室,例如松弛。
您提到查看日志以查找命令的输出。您可以设置日志监控,它可以在仪表板中显示消息,甚至在记录特定行时发送警报。
这是有关设置 ELK Stack(Elasticsearch、Logstash、Kibana)的文档
其他资源
https://sysadmincasts.com/episodes/47-zero-downtime-deployments-with-ansible-part-4-4