从开发背景来看,我习惯于在东西上线之前进行自动化(单元)testing。现在我想用同样的方法来(新的)linux(以及一些windows)服务器和networking设备。
我希望能够定义这些系统在上线之前应该通过的testing/条件,或者对现场主机运行testing来检查它们是否仍然符合我们的标准。
testing我想运行超越networking扫描。 例如:
你知道这样的自动化系统是否存在,哪一个最符合我的要求? 或者我应该build立一个现有的unit testing框架?
这是你使用监视。 有很多的监测系统,有不同的积极和消极的,这不是一个详尽的讨论不同的select的地方。 原则上,您的监控应该代表您对系统的所有断言,包括产出和响应时间。 我鼓励在我的团队中使用“先监控系统pipe理”,并且发展的相似之处应该是显而易见的。
现在,就像有些东西很难unit testing一样,还有一些东西很难监控。 你的SSH例子就是其中之一 – 虽然你当然可以尝试login,如果失败了,那么说你已经完成了,但是很多事情可能会混淆你的testing – “尝试以密码login失败”可能会被某人更改test123密码来test123并开启密码validation – 你不知道密码设置了什么,所以当然你的testinglogin将会失败。
对于这些事情,你需要一个configurationpipe理系统,如厨师或木偶。 这些系统允许您有效地断言系统状态(如“ /etc/ssh/sshd_config的PasswordAuthentication选项应该设置为false ”),configurationpipe理系统将确保每次运行。 良好的系统也可以为你提供exception报告(“嘿,我想你可能想知道PasswordAuthentication设置为true ;没关系,我修好了,但你可能想要打破别人的手指”),所以你可以知道什么时候奇怪的事发生了。
您可能可以使用Serverspec 。 它主要用于在目标主机上运行的testing – 例如。 检查文件的存在/内容,安装的软件包,使用的服务器端口。