在 terraform destroy 期间删除文本文件

delete text file during terraform destroy

我正在尝试在执行 terraform destroy.

时从我的本地计算机删除生成的 Ansible 清单 hosts 文件

当我 运行 terraform apply 我使用 provisioner "local-exec" 创建 hosts 文件,该文件稍后由部署期间调用的 ansible 剧本使用。

provisioner "local-exec" {
    command = "echo master ansible_host=${element((aws_instance.kubeadm-node.*.public_ip),0)} >> hosts"
  }

在删除terraform destroy的所有资源时,是否可以确保删除hosts文件? 执行 terraform destroy 时删除 hosts 文件的最简单方法是什么?

感谢您的帮助,如果我的解释不够清楚,请告诉我。

我建议使用 local_file resource 来处理库存文件。这样当 applydestroy 为 运行.

时,我们可以轻松地按预期管理文件

示例:

resource "local_file" "ansible_inventory" {
  filename              = "./hosts"
  file_permission       = "0664"
  directory_permission  = "0755"
  content               = <<-EOT
    master ansible_host=${element((aws_instance.kubeadm-node.*.public_ip),0)}
  EOT
}

您可以添加另一个 local-exec provisioner 并将其设置为仅在 terraform destroy 为 运行 时使用,例如:

  provisioner "local-exec" {
    command = "rm -f /path/to/file"
    when    = destroy
  }

有关使用销毁时间供应器的更多信息,请点击此处 [1]。


[1] https://www.terraform.io/language/resources/provisioners/syntax#destroy-time-provisioners