如何将目录与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