有没有更好的方法进行环境验证?Usecase 是一个由其他人创建的接近 300 台服务器的虚拟化环境,需要在接受它们之前进行验证(即在我安装自定义软件并事后发现问题之前)。
目前,这些都是通过纸质清单手动完成的
- ssh 到 Linux 服务器 [这样下面的测试就可以从服务器上运行了]
- 对于与其通信的每台服务器:
- ping -c 20 X Linux 服务器预计通信的目标服务器,检查数据包丢失和 RTT 平均值/最大值/偏差
- telnet 目标服务器,以确保其提供的服务相应的端口已打开且可访问(例如 1433 sql server、3306 mysql、80 webservice、25 smtp)
- nslookup 以确保服务器在 DNS 上设置。
有没有更好的方法进行系统验证?
目前,这些都是通过纸质清单手动完成的
- ssh 到 Linux 服务器
cat /proc/cpuinfo
检查 CPU 核心数和时钟速度是否符合要求df
检查分配的磁盘空间free -m
检查内存量
有没有更好方法的例子,例如在检查中设置预期值或范围,然后简单地运行“所有”测试来检查通过/失败?
答案1
几年后,我找到了我一直在寻找的答案:
gather_facts:是
由于 ansible 通过 ssh 本身无需代理,因此这已经解决了 ssh 访问需求。
gather_facts 功能已经获得了目标系统所需的大量数据,只需对其进行评估(磁盘空间示例:https://stackoverflow.com/questions/26981907/using-ansible-to-manage-disk-space)。
我还没有评估目标系统的网络/防火墙要求,但看起来非常可行!
答案2
简短的回答:编写脚本。
较长的回答:上面提到的所有测试都可以通过简单的操作系统工具自动完成。例如,ping
可以运行命令,然后检查返回代码并用于确定通过/失败状态。创建脚本需要更多时间,但可以节省大量时间,因为需要测试所有 300 台机器。
答案3
除了您列出的内容之外,我还建议将以下检查纳入最低限度:
- 开放端口列表:确保只开放必要的端口,不开放其他端口
- 已安装软件包列表应与预定义列表匹配,无额外内容
- 用户帐户列表应符合您的预定义列表,无额外内容
- 群组列表和他们的成员应该符合你的预定义列表,没有额外的
有没有更好方法的例子,例如在检查中设置预期值或范围,然后简单地运行“所有”测试来检查通过/失败?
某些检查可能需要定义可接受的故障率。例如,在检查可用磁盘空间时,所有服务器上的值很可能不完全相同,因此您的检查将需要一个可接受水平的阈值。同样,一些丢失的 ping 可能是可以接受的,因此验证 > 95% 可能更实际,而不是要求 100% 返回 ping。另一方面,对于某些事情,您应该有零容忍度,例如开放端口列表。
有 300 台服务器需要检查,纸质方法行不通。等你检查完所有机器时,有些机器可能已经悄悄出故障了。所以,是的,你必须编写脚本。把它拼凑起来应该不难。创建一些能用的东西,如果你遇到困难,可以询问UNIX 系统或者堆栈溢出寻求帮助。一旦您完全正常工作,您就可以代码审查进行进一步优化和清理。
投资编写这个脚本绝对是值得的,这样您就可以轻松地重新运行测试来检查服务器场的运行状况。
答案4
如果您有权访问 Linux 服务器,我会尝试使用 nmap 来扫描网络,然后它可以向您报告哪些服务器正在响应以及哪些服务正在运行。请记住,此扫描可能会导致一些潜在问题(取决于您正在扫描的服务器上运行的服务),您应该在运行它之前获得服务器所有者的同意。