销毁触发器Terraform上的资源

时间:2020-07-04 01:07:03

标签: terraform

我正在尝试确定是对项目使用Ansible还是Terraform。该项目正在云服务器上进行科学计算。我希望能够说“这是一个输入文件,去一台拥有16个vCPU的计算机。完成所有操作后,将输出文件复制回去并销毁资源”。 我是否可以告诉terraform“当您检测到命令已完成或某些api被点击时对此资源进行销毁/采取行动”?

1 个答案:

答案 0 :(得分:1)

有没有办法让我告诉terraform“破坏/对此采取行动 资源,当您检测到命令已完成或某些api被点击时?”

如果通过API命中可以检测到它,则可以使用local-exec Provisioner并使用curl循环(在包装外壳脚本中)命中api端点,轮询API的状态以推断任务是否完成或不。如果这样做,请确保为该供应者提供适当的超时值。

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

已经解释了所有这些,您的端到端目标最适合与IaC + Config mgmt工具结合使用。如果必须这样做,我宁愿在以下轮廓中使用Terraform + Ansible组合

  1. 调用Terraform的shell脚本,以具有所有必要依赖性的方式为16vCPU资源配置
  2. 在Terraform中,调用local-exec提供程序以启动ansible,以正确配置实例,复制文件并启动远程执行等。
  3. 让控件返回到shell脚本,它将开始使用curl使用API​​轮询来轮询任务状态
  4. 当shell脚本检测到任务已完成时,它将在本地复制远程文件(此步骤可以做得更好,但这是另一个讨论的主题)
  5. 再次调用Terraform并破坏一次,以破坏整个环境。

我进一步建议将其捆绑在jenkins工作流程中(如果您已经在使用jenkins),将控制权交给其他用户,并且仍然具有完全的可见性和审计功能。