Terraform 破坏触发地形上的资源

Terraform 破坏触发地形上的资源,terraform,Terraform,我正试图决定在项目中使用Ansible还是Terraform。这个项目在云服务器上进行科学计算。我想说“这是一个输入文件,去拿一台装有16vCPUs的计算机。当一切都完成后,把输出文件复制回来,然后销毁资源”我有没有办法告诉terraform“当你检测到一个命令被执行或某个api被命中时,销毁/对这个资源采取行动”? 我有没有办法告诉terraform“摧毁/采取行动” 当您检测到某个命令已完成或某个api已命中时,请使用“资源” 如果可以通过API hit检测到,那么可以使用和使用curl在循

我正试图决定在项目中使用Ansible还是Terraform。这个项目在云服务器上进行科学计算。我想说“这是一个输入文件,去拿一台装有16vCPUs的计算机。当一切都完成后,把输出文件复制回来,然后销毁资源”我有没有办法告诉terraform“当你检测到一个命令被执行或某个api被命中时,销毁/对这个资源采取行动”?

我有没有办法告诉terraform“摧毁/采取行动” 当您检测到某个命令已完成或某个api已命中时,请使用“资源”

如果可以通过API hit检测到,那么可以使用和使用curl在循环中命中API端点(在包装shell脚本中),轮询API的状态以推断任务是否完成。如果这样做,请确保为此provisioner提供适当的超时值

对于清理序列(post API状态为肯定),声明以确保Terraform能够相应地跟踪执行

在解释了所有这些之后,您的端到端目标最适合IaC+配置管理工具的组合。如果我必须这样做,我宁愿在下面的大纲中使用Terraform+Ansible组合

  • 一个调用Terraform的shell脚本,用于为16vCPUs资源提供所有必要的深度
  • 在Terraform中,调用local exec provisioner来启动ansible,以便正确配置实例、复制文件和启动远程执行等
  • 让控件返回shell脚本,该脚本将使用curl根据API轮询开始轮询任务的状态
  • 当shell脚本检测到任务完成时,它会在本地复制远程文件(这一步可以做得更好,但这是另一个讨论的主题)
  • 再次调用Terraform,这次使用destroy,以破坏整个环境

  • 我进一步建议将其绑定到jenkins工作流中(如果您已经使用jenkins),以控制其他用户的操作,并且仍然具有完全的可视性和审核功能。

    据我所知,没有办法做到这一点。Terraform应用程序将始终以特定状态结束,该状态将被记录在您的状态文件中。我对如何实现这一点的第一个猜测是使用lambda函数。该功能可以使用AWS SDK配置EC2实例,管理其状态(启动/终止),以及开始执行作业。您还可以记住在某处启动的实例/正在运行的作业(如在SSM中),因此lambda函数可以在作业完成后处理终止。