You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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-exec provisioner,在同虚拟网络的Linux VM上执行目录创建命令。示例代码如下:
    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")
      }
    }
    
    注:需确保VM与存储账户私有端点处于同一虚拟网络,且已配置好NFS挂载所需的网络权限。

内容的提问来源于stack exchange,提问作者yogimogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:20:33