https://github.com/netapp/azure-netapp-files-storage
ARM, Terraform, and PowerShell templates for Azure NetApp Files Storage deployments including NFS volumes, Linux VMs, and enterprise workloads
https://github.com/netapp/azure-netapp-files-storage
Last synced: 3 days ago
JSON representation
ARM, Terraform, and PowerShell templates for Azure NetApp Files Storage deployments including NFS volumes, Linux VMs, and enterprise workloads
- Host: GitHub
- URL: https://github.com/netapp/azure-netapp-files-storage
- Owner: NetApp
- License: mit
- Created: 2025-05-29T16:45:40.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-12-02T17:03:13.000Z (7 months ago)
- Last Synced: 2025-12-05T15:53:27.112Z (7 months ago)
- Language: PowerShell
- Size: 161 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Azure NetApp Files Storage Templates
A collection of Infrastructure as Code templates for deploying Azure NetApp Files solutions using ARM Templates, Terraform, and PowerShell.
## Repository Structure
```
azure-netapp-files-storage/
├── arm-templates/
│ ├── nfs-volume/
│ ├── linux-vm-with-nfs/
│ ├── multi-linux-vms-with-nfs/
│ └── db/
│ └── postgresql-vm-anf/
├── terraform/
│ ├── nfs-volume/
│ ├── linux-vm-with-nfs/
│ ├── multi-linux-vms-with-nfs/
│ └── db/
│ └── postgresql-vm-anf/
├── powershell/
│ ├── nfs-volume/
│ ├── linux-vm-with-nfs/
│ ├── multi-linux-vms-with-nfs/
│ └── db/
│ └── postgresql-vm-anf/
├── docs/
│ ├── architecture-diagrams/
│ ├── deployment-guides/
│ └── troubleshooting/
└── examples/
├── parameter-files/
└── sample-configurations/
```
## Available Templates
| Template | ARM Templates | Terraform | PowerShell |
|----------|---------------|-----------|------------|
| NFS Volume | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| Linux VM with NFS | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| Multi Linux VMs with NFS | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| PostgreSQL on VM + ANF | :white_check_mark: | :white_check_mark: | :white_check_mark: |
## Coming Soon
- workload templates
## Prerequisites
### Azure Requirements
- Active Azure subscription
- Contributor or Owner permissions on target resource group
- Azure NetApp Files enabled in your subscription
- Appropriate regional availability for services
### Tools Required
**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+
- Required modules: Az.Compute, Az.Network, Az.NetAppFiles, Az.Resources (for PostgreSQL VM + ANF)
## Deployment Options
### Option 1: Deploy with GitHub Actions (Recommended)
[](../../actions/workflows/deploy.yml)
1. **Fork/Clone this repository**
2. **Set up Azure service principal credentials:**
```bash
az ad sp create-for-rbac --name "GitHubActions" --role Contributor --scope /subscriptions/YOUR-SUBSCRIPTION-ID --sdk-auth
```
3. **Add the JSON output as a GitHub secret named `AZURE_CREDENTIALS`**
4. **Go to Actions tab and run the "Deploy ANF & VM Infrastructure" workflow**
### Option 2: Deploy to Azure
Choose your deployment scenario and click the button to deploy directly to Azure Portal:
#### 📁 Basic NFS Volume
Deploy only Azure NetApp Files infrastructure (account, pool, volume)
**Includes:** NetApp Account, Capacity Pool, NFS Volume, Virtual Network with delegated subnet
#### 🖥️ Single Linux VM with NFS
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
#### 🏢 Multiple Linux VMs with NFS
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
#### 🖥️ PostgreSQL on VM with ANF
Deploy PostgreSQL on Linux VM with Azure NetApp Files storage
**Includes:** Ubuntu 22.04-LTS VM, PostgreSQL installed and configured, Azure NetApp Files volume for data storage, Network Security Group, PostgreSQL data directory on ANF volume
**💡 How it works:**
1. **Click any "Deploy to Azure" button above**
2. **Sign in with your Azure credentials**
3. **Fill in the required parameters**
4. **Click "Review + Create" to deploy**
### Option 3: Manual Deployment
1. **Clone this repository:**
```bash
git clone https://github.com/NetApp/azure-netapp-files-storage.git
cd azure-netapp-files-storage
```
2. **Choose your preferred tool:**
```bash
cd arm-templates/ # for ARM Templates
cd terraform/ # for Terraform
cd powershell/ # for PowerShell
```
3. **Start with the basic NFS volume:**
```bash
cd nfs-volume/
```
4. **Follow the README** in each template folder for specific deployment instructions.
## Template Descriptions
### NFS Volume
Creates a basic Azure NetApp Files setup including:
- NetApp account
- Capacity pool
- NFS volume with specified size and service level
### Linux VM with NFS
Deploys a complete solution with:
- Virtual network and subnet
- Linux virtual machine
- NFS volume mounted to the VM
- Network security group configuration
### Multi Linux VMs with NFS
Enterprise scenario including:
- Multiple Linux virtual machines
- Shared NFS volumes across VMs
- Load balancing configuration
- High availability setup
### PostgreSQL on VM with ANF
Deploys PostgreSQL on a Linux VM with Azure NetApp Files storage:
- Linux virtual machine (Ubuntu 22.04-LTS)
- PostgreSQL installed and configured on the VM
- Azure NetApp Files volume (NFS) for PostgreSQL data storage
- PostgreSQL data directory mounted on ANF volume
- Network security group with PostgreSQL and SSH access
- Public IP for remote access (optional)
- Full control over PostgreSQL configuration and extensions
## Security Best Practices
> [!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
## Documentation
- [Deployment Guides](docs/deployment-guides/) - Step-by-step deployment instructions
- [Architecture Diagrams](docs/architecture-diagrams/) - Visual solution designs
- [Troubleshooting](docs/troubleshooting/) - Common issues and solutions
- [Azure NetApp Files Official Documentation](https://docs.microsoft.com/azure/azure-netapp-files/)
## Support
- **Issues**: Report problems or request features using GitHub Issues
- **Questions**: Ask questions in GitHub Discussions
- **Documentation**: Check the docs/ folder for detailed guides
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
**Maintained by:** Prabu Arjunan
**Last Updated:** 10/8/25