A collection of Infrastructure as Code templates for deploying Azure NetApp Files solutions using ARM Templates, Terraform, and PowerShell.
azure-netapp-files-storage/
├── arm-templates/
│   ├── nfs-volume/
│   ├── linux-vm-with-nfs/
│   └── multi-linux-vms-with-nfs/
├── terraform/
│   ├── nfs-volume/
│   ├── linux-vm-with-nfs/
│   └── multi-linux-vms-with-nfs/
├── powershell/
│   ├── nfs-volume/
│   ├── linux-vm-with-nfs/
│   └── multi-linux-vms-with-nfs/
├── docs/
│   ├── architecture-diagrams/
│   ├── deployment-guides/
│   └── troubleshooting/
└── examples/
    ├── parameter-files/
    └── sample-configurations/
| Template | ARM Templates | Terraform | PowerShell | 
|---|---|---|---|
| NFS Volume | ✅ | ✅ | ✅ | 
| Linux VM with NFS | ✅ | ✅ | ✅ | 
| Multi Linux VMs with NFS | ✅ | ✅ | ✅ | 
- workload templates
 
- Active Azure subscription
 - Contributor or Owner permissions on target resource group
 - Azure NetApp Files enabled in your subscription
 - Appropriate regional availability for Azure NetApp Files
 
For ARM Templates:
- Azure CLI 2.30.0+ or Azure PowerShell 6.0+
 - Visual Studio Code with Azure Resource Manager Tools extension (recommended)
 
For Terraform:
- Terraform 1.0+
 - Azure CLI for authentication
 - AzureRM Provider 3.0+
 
For PowerShell:
- PowerShell 7.0+ (cross-platform)
 - Az PowerShell module 8.0+
 
- Fork/Clone this repository
 - Set up Azure service principal credentials:
az ad sp create-for-rbac --name "GitHubActions" --role Contributor --scope /subscriptions/YOUR-SUBSCRIPTION-ID --sdk-auth - Add the JSON output as a GitHub secret named 
AZURE_CREDENTIALS - Go to Actions tab and run the "Deploy ANF & VM Infrastructure" workflow
 
Choose your deployment scenario and click the button to deploy directly to Azure Portal:
Deploy only Azure NetApp Files infrastructure (account, pool, volume)
Includes: NetApp Account, Capacity Pool, NFS Volume, Virtual Network with delegated subnet
Deploy Linux VM with mounted NFS volume and network configuration
Includes: Ubuntu 22.04-LTS VM, Mounted NFS volume, Network Security Group, Public IP for SSH access
Deploy multiple VMs with shared NFS storage and load balancing
Includes: Multiple Ubuntu VMs (configurable count), Shared NFS volume across all VMs, Load Balancer for high availability, Network Security Groups
💡 How it works:
- Click any "Deploy to Azure" button above
 - Sign in with your Azure credentials
 - Fill in the required parameters
 - Click "Review + Create" to deploy
 
- 
Clone this repository:
git clone https://github.com/NetApp/azure-netapp-files-storage.git cd azure-netapp-files-storage - 
Choose your preferred tool:
cd arm-templates/ # for ARM Templates cd terraform/ # for Terraform cd powershell/ # for PowerShell
 - 
Start with the basic NFS volume:
cd nfs-volume/ - 
Follow the README in each template folder for specific deployment instructions.
 
Creates a basic Azure NetApp Files setup including:
- NetApp account
 - Capacity pool
 - NFS volume with specified size and service level
 
Deploys a complete solution with:
- Virtual network and subnet
 - Linux virtual machine
 - NFS volume mounted to the VM
 - Network security group configuration
 
Enterprise scenario including:
- Multiple Linux virtual machines
 - Shared NFS volumes across VMs
 - Load balancing configuration
 - High availability setup
 
Warning
Never commit secrets to the repository
- Use Azure Key Vault for storing sensitive data
 - Keep environment-specific parameter files separate and secure
 - Implement proper network security groups and subnet delegation
 - Use managed identities and RBAC for access control
 - Enable encryption in transit and at rest
 - Use environment variables for passwords (e.g., 
ADMIN_PASSWORD) - Replace placeholder passwords with secure values before deployment
 
- Deployment Guides - Step-by-step deployment instructions
 - Architecture Diagrams - Visual solution designs
 - Troubleshooting - Common issues and solutions
 - Azure NetApp Files Official Documentation
 
- Issues: Report problems or request features using GitHub Issues
 - Questions: Ask questions in GitHub Discussions
 - Documentation: Check the docs/ folder for detailed guides
 
This project is licensed under the MIT License - see the LICENSE file for details.
Maintained by: Prabu Arjunan
Last Updated: 10/8/25