使用Terraform的azurerm_storage_share_directory创建NFS文件共享目录失败
Azure NFS文件共享Terraform创建目录问题解答
核心结论
azurerm_storage_share_directory资源仅支持SMB协议的Azure文件共享,无法直接用于NFS类型的文件共享,这是你遇到连接重置错误的根本原因。该资源底层通过SMB相关的存储API进行操作,而NFS共享未开放SMB对应的端口与API接口,导致请求被拒绝。
替代解决方案
若要通过Terraform在NFS文件共享上创建目录,可通过以下方式实现:
- 利用已挂载NFS共享的Linux VM执行本地命令
借助Terraform的remote-execprovisioner,在同虚拟网络的Linux VM上执行目录创建命令。示例代码如下:
注:需确保VM与存储账户私有端点处于同一虚拟网络,且已配置好NFS挂载所需的网络权限。resource "azurerm_linux_virtual_machine" "example" { # 已有的VM配置项 name = "example-vm" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location size = "Standard_D2s_v3" admin_username = "adminuser" admin_ssh_key { username = "adminuser" public_key = file("~/.ssh/id_rsa.pub") } os_disk { caching = "ReadWrite" storage_account_type = "Premium_LRS" } source_image_reference { publisher = "Canonical" offer = "0001-com-ubuntu-server-jammy" sku = "22_04-lts" version = "latest" } network_interface_ids = [azurerm_network_interface.example.id] } resource "azurerm_storage_share" "nfs_share" { name = "nfs-share" storage_account_name = azurerm_storage_account.example.name protocol_type = "NFS" quota = 100 } # 先挂载NFS共享,再创建目录 provisioner "remote-exec" { inline = [ "sudo mkdir -p /mnt/nfs-share", "sudo mount -t nfs4 ${azurerm_storage_account.example.private_endpoint_fqdn}:/${azurerm_storage_account.example.name}/${azurerm_storage_share.nfs_share.name} /mnt/nfs-share", "sudo mkdir -p /mnt/nfs-share/d1", "sudo mkdir -p /mnt/nfs-share/d2/subdir" ] connection { type = "ssh" host = azurerm_linux_virtual_machine.example.private_ip_address user = "adminuser" private_key = file("~/.ssh/id_rsa") } }
内容的提问来源于stack exchange,提问作者yogimogi
相关产品推荐
相关产品推荐

