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