是否可以使用 terraform 将文件上传到 Azure Share?
Is it possible to upload files to Azure Share using terraform?
我使用 Terraform 配置存储帐户、容器、共享。
出现了一个问题 - 我可以使用 terraform 将文件上传到 Azure 存储帐户文件共享吗?我找不到相应的资源。
编辑 1
一个想法是使用null_resource
。我想知道它如何与使用 terraform 的好处相适应,在我看来是这样的:
- 它也可以被视为您的基础架构的文档。
- 它可以在你做之前告诉你它要做什么。
- (2) 的变体 - 它使您能够自动检查计划并执行策略。
- 它的状态可用于回答关于发布管道到底配置了什么的审计问题。
- 它有一个非常简单的声明性语言。
其他潜在的好处可能是强制执行所需的状态,但是,这更有可能在未来发生,而不是当前发生。实际上,尝试删除 terraform 之外的资源。理论上和未来它可以识别它并重新创建,今天它只是失败了。但潜力是有的。
所有这些好处都足以证明使用它是合理的,尽管有时我想用头撞墙试图用它做点什么。
现在,所有这些好处如何融入 运行 null_resource
中的自定义脚本?当然,检查计划对资源中的通用脚本没有帮助。我想知道它与其他好处相比如何?
不确定我是否理解您的所有要求。但是,可以肯定的是,可以使用 terraform 将文件上传到 Azure Share。
is a similar question about copying local files to Azure file share for your reference. The local-exec provisioner allow you invoke a local executable PowerShell scripts after a resource is created. The null_resource 资源实现标准资源生命周期,但不采取进一步行动。
示例,
resource "azurerm_storage_share" "example" {
name = "sharename"
storage_account_name = azurerm_storage_account.example.name
quota = 50
}
resource "null_resource" "uploadfile" {
provisioner "local-exec" {
command = <<-EOT
$storageAcct = Get-AzStorageAccount -ResourceGroupName "${azurerm_resource_group.example.name}" -Name "${azurerm_storage_account.example.name}"
Set-AzStorageFileContent `
-Context $storageAcct.Context `
-ShareName "${azurerm_storage_share.example.name}" `
-Source "C:\Users\xxx\terraform\test.txt" `
-Path "test.txt"
EOT
interpreter = ["PowerShell", "-Command"]
}
}
对于来自 Google 的任何人,值得指出的是您现在应该可以使用 azurerm_storage_share_file。这对我上传单个文件非常有用。要上传多个文件,您似乎需要多个资源
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_share_file
resource "azurerm_storage_share_file" "example" {
name = "test.txt"
storage_share_id = azurerm_storage_share.example.id
source = "${path.root}/TestFile/test.txt"
}
我使用 Terraform 配置存储帐户、容器、共享。
出现了一个问题 - 我可以使用 terraform 将文件上传到 Azure 存储帐户文件共享吗?我找不到相应的资源。
编辑 1
一个想法是使用null_resource
。我想知道它如何与使用 terraform 的好处相适应,在我看来是这样的:
- 它也可以被视为您的基础架构的文档。
- 它可以在你做之前告诉你它要做什么。
- (2) 的变体 - 它使您能够自动检查计划并执行策略。
- 它的状态可用于回答关于发布管道到底配置了什么的审计问题。
- 它有一个非常简单的声明性语言。
其他潜在的好处可能是强制执行所需的状态,但是,这更有可能在未来发生,而不是当前发生。实际上,尝试删除 terraform 之外的资源。理论上和未来它可以识别它并重新创建,今天它只是失败了。但潜力是有的。
所有这些好处都足以证明使用它是合理的,尽管有时我想用头撞墙试图用它做点什么。
现在,所有这些好处如何融入 运行 null_resource
中的自定义脚本?当然,检查计划对资源中的通用脚本没有帮助。我想知道它与其他好处相比如何?
不确定我是否理解您的所有要求。但是,可以肯定的是,可以使用 terraform 将文件上传到 Azure Share。
示例,
resource "azurerm_storage_share" "example" {
name = "sharename"
storage_account_name = azurerm_storage_account.example.name
quota = 50
}
resource "null_resource" "uploadfile" {
provisioner "local-exec" {
command = <<-EOT
$storageAcct = Get-AzStorageAccount -ResourceGroupName "${azurerm_resource_group.example.name}" -Name "${azurerm_storage_account.example.name}"
Set-AzStorageFileContent `
-Context $storageAcct.Context `
-ShareName "${azurerm_storage_share.example.name}" `
-Source "C:\Users\xxx\terraform\test.txt" `
-Path "test.txt"
EOT
interpreter = ["PowerShell", "-Command"]
}
}
对于来自 Google 的任何人,值得指出的是您现在应该可以使用 azurerm_storage_share_file。这对我上传单个文件非常有用。要上传多个文件,您似乎需要多个资源
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_share_file
resource "azurerm_storage_share_file" "example" {
name = "test.txt"
storage_share_id = azurerm_storage_share.example.id
source = "${path.root}/TestFile/test.txt"
}