Amazon web services 在Cloudformation堆栈删除时清除主厨节点/客户端

Amazon web services 在Cloudformation堆栈删除时清除主厨节点/客户端,amazon-web-services,amazon-ec2,chef-infra,amazon-cloudformation,Amazon Web Services,Amazon Ec2,Chef Infra,Amazon Cloudformation,我有一个cloudformation堆栈,由一个VPC、两个子网(公共和私有)、几个EC2 ubuntu实例以及所有路由、EIP地址等组成。其中一个EC2实例位于公共子网中。它在启动时被引导为Chef节点 我想找出一种在删除cloudformation堆栈时删除chef节点的方法。到目前为止,我已经尝试将清理脚本放到EC2实例/etc/rc0.d中 这个脚本在手动运行时执行它应该执行的操作,但是当我刚刚删除堆栈时,它似乎没有运行。事实上,它可能运行得很好,但我猜当EC2实例关闭所有路由和EIP地

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

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

这个脚本在手动运行时执行它应该执行的操作,但是当我刚刚删除堆栈时,它似乎没有运行。事实上,它可能运行得很好,但我猜当EC2实例关闭所有路由和EIP地址时,可能已经没有了,因此EC2实例可能无法访问Chef服务器

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

有没有办法设置某种监控,以确保厨师长清理工作在一切工作之前进行


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

我认为一些解决办法是:

  • 在cloudformation创建的基础上构建一个应用程序,这样每次删除堆栈时,它都会从chef服务器中删除所需的节点。这将是一个具有数据库的完整应用程序,用于跟踪服务器/堆栈的运行情况。这将需要你的应用程序调用chef server API,或者只需调用系统
    knife
    命令

  • 从另一个运行knife/chef客户端的实例运行清理脚本。您可以对AWS上已删除的堆栈/服务器进行某种cron/定期作业检查,然后运行相应的knife命令从中删除服务器。这在本质上与1非常相似。不同的是,您不必构建一个完整的.application


  • 希望有帮助。

    我添加了一个链接,谢谢。谢谢。我最终实现了对每个唯一节点/客户机名称的客户机密钥重用,而不是每次堆栈被销毁时都删除节点/客户机。