如何将目录与Terraform同步?

如何将目录与Terraform同步?,terraform,Terraform,我有一个本地目录,我想同步到远程服务器上。我有一个供应商: resource "null_resource" "test" { connection { type = "ssh" user = "deploy" host = "${MYHOST}" port = 22 private_key = "${MYKEY}" } provisioner "local-exec" { co

我有一个本地目录,我想同步到远程服务器上。我有一个供应商:

resource "null_resource" "test" {
  connection {
    type        = "ssh"
    user        = "deploy"
    host        = "${MYHOST}"
    port        = 22
    private_key = "${MYKEY}"
  }

  provisioner "local-exec" {
    command = "mkdir -p /tmp/hello && touch /tmp/hello/world"
  }

  provisioner "remote-exec" {
    inline = ["mkdir -p /tmp/mytest"]
  }

  provisioner "file" {
    source      = "/tmp/hello"
    destination = "/tmp/mytest/hello"
  }
}
这是第一次。该目录现在存在于远程服务器上

$ find /tmp/mytest
/tmp/mytest
/tmp/mytest/hello
/tmp/mytest/hello/world
但是,如果我污染并重新应用资源,则第二轮远程目录存在,并且目录在内部同步:

我可以通过在同步之前远程删除整个目录树来解决这个问题,但这似乎不雅观,可能效率低下,而且可能容易出错


是否有重复同步目录的标准解决方案?

这在文件供应器文档中有说明:

接下来,源路径上是否存在尾随斜杠将决定目录名是否将嵌入到目标中,或者是否将创建目标。一个例子最好地解释了这一点:

如果源是/foo(无尾随斜杠),目标是/tmp,则本地计算机上的/foo的内容将上载到远程计算机上的/tmp/foo。远程计算机上的foo目录将由Terraform创建

但是,如果源是/foo/(存在一个尾随斜杠),目标是/tmp,那么/foo的内容将直接上传到/tmp中


谢谢,不过我的示例中没有后面的斜杠。据我所知,这些文件与实际发生的情况不符。
$ find /tmp/mytest
/tmp/mytest
/tmp/mytest/hello
/tmp/mytest/hello/hello
/tmp/mytest/hello/hello/world
/tmp/mytest/hello/world