我有一个云形成堆栈,包括一个VPC,两个子网(公共和私有),几个EC2 ubuntu实例和所有路由,EIP地址等。其中一个EC2实例位于公有子网中。它在启动时作为Chef节点自举。
我想找出一种在删除cloudformation堆栈时删除chef节点的方法。到目前为止,我已经尝试将清理脚本放入EC2实例/etc/rc0.d中。
此脚本在手动运行时执行应有的操作,但是当我刚删除堆栈时,它似乎无法运行。实际上 - 它可能运行得很好,但我猜测,当EC2实例关闭时,所有路由和EIP地址可能已经消失,因此EC2实例可能无法访问Chef服务器。
我还尝试使用' DependsOn'来锁定创建/删除订单。属性,但这也没有成功 - 我不认为IP和路由可能依赖于使用上述EIP和路由的实例
是否有某种方法可以设置某种监控,以确保Chef清理在其他所有操作之前运行?
答案 0 :(得分:0)
是的,很可能在实例关闭之前,您的IP已取消关联/删除,从而尝试从实例无法访问Chef服务器。您可以随时检查您的cloudformation操作日志,但在关机之前取消关联IP地址是最有意义的。
我认为有些解决方法是:
在您创建的云端数据之上构建应用,这样每次删除堆栈时,它都会从您的厨师服务器中删除您想要的节点。这将是一个完整的应用程序与数据库,以跟踪运行的服务器/堆栈。这将要求您的应用程序调用chef服务器API或只是调用系统knife
命令。
从另一个运行knife / chef-client的实例运行清理脚本。您可以对已在AWS上删除的堆栈/服务器进行某种cron /定期作业检查,然后运行相应的knife命令从中删除服务器。这本质上非常类似于1.只是你不一定要构建一个完整的blown.application。
希望它有所帮助。