我创建了一组漂亮的 Makefile,用于重复配置和维护许多 AWS 集群的步骤。
make 的好处有:
- 执行的大部分是各种 shell 命令,这些命令在 make 中指定明确且易于维护。
- 如果任何单个步骤失败,整个过程都会失败(与 bash 不同)
- 我可以将参数化命令嵌入到 make 配方中(使用 hackery)
- 我可以指定这些命令的依赖项(使用 hackery)
但是,通过这些,我一直觉得 make 不适合这个任务。参数化命令是一种糟糕的黑客行为,通过调用 make 并使用新参数再次调用自身来实现。make 中的条件执行很糟糕。简单的任务,如 if CHECK_SERVER_STARTED(params) then START_SERVER(params); COLLECT_DATA_FILES(params) if server_was_stopped_at_the_start(params) then STOP_SERVER(params);
此外,使用文件进行依赖跟踪是一个糟糕的想法。
一定有更好的方法。有没有一种好的语言可以让我拥有:
- shell 命令可以轻松运行(理想情况下是语言的一部分)(即不是 Python、Perl)
- 条件、分支、故障案例处理等……均已内置
- 循环
- 局部变量(或者至少像堆栈这样的东西,这样我就可以调用一个函数,而不会让任何东西弄乱我的全局变量)。
答案1
这读起来很痛苦...太复杂了!
是的,当然有更好的方法。赞成正在紧跟技术的变化。配置管理正是您正在寻找的,并且已经存在多年。您的大多数问题都已得到解决。