我有一个厨房-ansible测试,它将serverspec作为验证器运行。测试在两个容器上运行。一个在Amazon Linux 1上运行,另一个在Amazon Linux 2上运行。Ansible代码安装了一个侦听端口8080和8443的Keycloak服务器。
在Amazon Linux 1容器中,一切正常,serverspec报告端口正在侦听。
在Amazon Linux 2容器中,安装也会结束,没有任何错误,但serverspec无法报告端口未被侦听。因为我发现Serverspec是错的。登录到运行netstat -tulpen |grep LISTEN的容器后,它会显示正在侦听的端口。Serverspec正在使用ss命令:/bin/sh -c ss\ -tunl\ \|\ grep\ -E\ --\ :8443\\\进行检查,所以我登录到Amazon Linux1容器来检查ss命令的输出,结果显示在两个端口上都没有侦听。
那么,有没有人知道为什么在Amazon Linux 1上serverspec成功,而在Amazon Linux 2上失败,尽管在这两个容器中ss命令都报告没有端口被监听?
发布于 2020-06-15 20:47:26
根本原因是端口绑定得不够快。当服务尚未完全启动时,Serverspec开始检查。登录容器需要更多的时间,因此服务启动成功,端口被绑定。
https://stackoverflow.com/questions/62264036
复制相似问题