amazon web services -清理Chef节点/客户端上的Cloudformation堆栈删除



我有一个云形成堆栈,由一个VPC,两个子网(公共和私有),几个EC2 ubuntu实例和所有路由,EIP地址等组成。其中一个EC2实例位于公共子网中。它在启动时作为一个Chef节点引导。

我想找出一种方法来删除chef节点时,cloudformation堆栈被删除。到目前为止,我已经尝试将清理脚本放入EC2实例/etc/rc0.d中

这个脚本在手动运行时应该做什么,但是当我只是删除堆栈时,它似乎不运行。实际上,它可能运行得很好,但我猜当EC2实例关闭时,所有的路由和EIP地址可能已经消失了,所以EC2实例可能无法访问Chef服务器。

我也试过用'DependsOn'属性锁定创建/删除顺序,但也没有成功-我认为不可能让IP和路由依赖于使用上述EIP和路由的实例

是否有办法设置某种监视,以确保Chef清理在其他一切之前运行?

使用模板和chef设置/清理脚本的Gist

是的,很可能你的ip在实例关闭之前被解除关联/删除,使得任何从实例到达Chef服务器的尝试都是徒劳的。您可以随时检查cloudformation操作日志,但在关机前解除IP地址的关联是最有意义的。

我认为一些解决方法是:

  1. 在你的cloudformation创建之上构建一个应用程序,这样每次你删除一个堆栈时,它也会从你的chef服务器上删除你想要的节点。这将是一个完全成熟的应用程序,它有一个数据库来跟踪服务器/堆栈的运行情况。这将要求你的应用程序调用chef服务器API或简单地调用system knife命令。

  2. 从另一个运行knife/chef-client的实例运行清理脚本。您可以对在AWS上被删除的堆栈/服务器进行某种cron/定期作业检查,然后运行适当的knife命令从其中删除服务器。这在本质上与1非常相似。不同之处在于,您不必构建一个完整的应用程序。

希望能有所帮助。

最新更新