我正在尝试确定是对项目使用Ansible还是Terraform。该项目正在云服务器上进行科学计算。我希望能够说“这是一个输入文件,去一台拥有16个vCPU的计算机。完成所有操作后,将输出文件复制回去并销毁资源”。 我是否可以告诉terraform“当您检测到命令已完成或某些api被点击时对此资源进行销毁/采取行动”?
答案 0 :(得分:1)
有没有办法让我告诉terraform“破坏/对此采取行动 资源,当您检测到命令已完成或某些api被点击时?”
如果通过API命中可以检测到它,则可以使用local-exec Provisioner并使用curl循环(在包装外壳脚本中)命中api端点,轮询API的状态以推断任务是否完成或不。如果这样做,请确保为该供应者提供适当的超时值。
对于清理序列(post API状态是肯定的),声明dependency explicitly以确保Terraform能够相应地跟踪执行。
已经解释了所有这些,您的端到端目标最适合与IaC + Config mgmt工具结合使用。如果必须这样做,我宁愿在以下轮廓中使用Terraform + Ansible组合
我进一步建议将其捆绑在jenkins工作流程中(如果您已经在使用jenkins),将控制权交给其他用户,并且仍然具有完全的可见性和审计功能。