好的,所以在我们的AWS环境中,我们通过AWS OpsWorks运行Chef-Automate。节点通过AWS用户数据中的代码自动注册和下载Chef客户端。我们有另一个EC2实例充当Chef工作站。这一切都运作良好。但是,在这个特定的非生产环境中,EC2节点经常出现。为了清理内容,我们在Automate服务器上运行以下cron作业:
automate-ctl node-summary | grep missing | awk '{print $2}' | while read var; do automate-ctl delete-node --force -d -u $var; done
一旦显示为"缺少",它将删除任何节点。这也很好。但是,当我们在工作站上运行刀节点列表或刀状态时,我们会得到数百个死节点,其中一些已经消失了数千小时。
显然, knife 没有从与 automate-ctl 相同的数据库中获取节点数据。最理想的是,我可以通过Automate服务器上的cron运行一些命令来保持这些同步,但我在文档中看不到明显的解决方案。我假设 knife 正在连接到Automate服务器以获取其列表,所以我更喜欢在那里运行的一些解决方案,而不是在工作站上。
任何想法???
答案 0 :(得分:0)
您可以使用knife node bulk delete
和knife client bulk delete
运行类似的内容。还有Lambda任务将监视实例关闭事件并清理Chef服务器。
Chef Server和Automate进行通信,但每个都有自己的数据库,因为即使从Chef服务器中删除节点以进行审计或合规性跟踪,Automate也会保留历史记录。