更好的方式来做系统和环境validation?

有没有更好的方法来进行环境validation? Usecase是一个虚拟化环境,接近300个由其他人创build的服务器,并且在接受它们之前(即,在我安装定制软件并事后发现问题之前)需要validation。

这些目前都是用纸质清单手动完成的

  • SSH到一个Linux服务器[这是这样的下面的testing从框中运行]
  • 对于每个与之通信的服务器:
    • ping -c 20个目标服务器,linux服务器需要进行通信,检查数据包丢失和RTT平均/最大/偏差
    • 远程login目标服务器,以确保适当的端口是开放的,他们提供的服务(即1433的SQL服务器,3306 MySQL的,80 web服务,25 smtp访问)
  • nslookup以确保服务器在DNS上设置。

有没有更好的方法来做系统validation?

这些目前都是用纸质清单手动完成的

  • SSH到Linux服务器
  • cat / proc / cpuinfo来检查CPU核心数量和时钟速度是否是要求的
  • df检查分配的磁盘空间
  • 免费-m来检查内存量

是否有更好的方法的例子,比如在检查中设置期望值或范围,然后简单地运行“全部”testing来进行通过/失败检查?

简短的回答:脚本。

更长的答案:上面提到的所有testing都可以通过简单的操作系统工具自动完成。 例如,可以运行ping命令,然后检查返回码并用于确定通过/失败状态。 创build脚本需要多一点的时间,但是这样可以节省大量的时间来testing300台机器。

除了你列出的内容之外,我还build议你至less包括以下检查:

  • 开放端口列表:确保只有必要的端口是开放的,没有别的
  • 已安装的软件包列表应该与您的预定义列表相匹配
  • 用户帐户列表应该匹配您的预定义列表,没有额外的
  • 组列表及其成员应与您的预定义列表相匹配,无额外function

是否有更好的方法的例子,比如在检查中设置期望值或范围,然后简单地运行“全部”testing来进行通过/失败检查?

某些检查可能需要定义可接受的故障率。 例如,在检查可用磁盘空间时,所有服务器上的值很可能不会完全相同,因此您的检查将需要一个可接受的阈值。 同样地,一些错过的ping可能是可以接受的,所以不需要100%返回的ping,validation> 95%可能更实际。 另一方面,对于一些事情,你应该有零容忍,如开放端口列表。

有300台服务器检查,基于纸张的方法将无法正常工作。 当你检查完所有机器的时候,有的可能已经悄然失败了。 所以是的,你必须编写脚本。 把它拼在一起不应该太难。 创build一些有用的东西,如果遇到困难,请在UNIX SE或Stack Overflow上寻求帮助。 一旦你有一个完整的工作,你可以要求Code Review进一步优化和清理。

绝对值得投资编写脚本,以便您可以轻松地重新运行testing来检查服务器场的运行状况。

如果你有权访问linux服务器,我会尝试使用nmap来扫描networking,然后可以向你报告服务器正在响应什么服务以及服务在哪个服务上运行。 请记住,此扫描可能会导致一些潜在的问题(取决于您正在扫描的服务器上运行的服务),您应该在运行服务器之前获得服务器所有者的同意。