NFS And SMB Volumes That Keep Their Backups
Amazon FSx for NetApp ONTAP: a file system, one storage virtual machine and its volumes. The provider defaults daily volume backups to OFF where the AWS API keeps 30 days, and AWS attaches the VPC's default security group when none is given. This module sets 30 days, builds the security group from AWS's port table per protocol, and writes throughput to the field that updates in place.
Verification
Static-verifiedPassed: validated and lint-clean (provider-schema-validated for AWS/Azure/GCP; Terraform-language lint elsewhere).
Conformance
- Static validation (fmt · validate · tflint)
- Security scan clean (Checkov)
- Plan tests (mocked: validation rules · outputs)
Provenance
- SHA-256 checksum
- Signature (pending)
Functional
- Live test pending (no cloud run yet)
Last verified 2026-09-17 · how we verify
Use it from the registry
terraform · opentofumodule "fsx_ontap" {
source = "www.iac-bazaar.com/iac-bazaar/aws-fsx-ontap/aws"
version = "1.0.0"
}Needs a registry token from /account/tokens. The module itself is free; the account is what identifies you. Full setup: registry docs.
Inputs & outputs
Create a free account to read this module's contract
The declared contract - every input name, type, default and description, plus every output - is shown to signed-in accounts, not to anonymous visitors.
A free account sees the contract of every module in the catalogue. There is no subscription and nothing to buy - the modules are free to download, and they run under Vizier.
Documentation
aws-fsx-ontap
Amazon FSx for NetApp ONTAP: a file system, one storage virtual machine (SVM)
and its volumes. Works with Terraform and OpenTofu (>= 1.6), aws provider
>= 6.0, < 7.0.
Backups are off unless you turn them on. The provider's
automatic_backup_retention_days defaults to 0, which disables daily volume
backups; the AWS API's default is 30 days. This module sets 30, copies tags to
backups and takes a final backup of each volume it deletes. Setting the
retention to 0 later also deletes every automatic backup already taken. A backup
fails when its snapshot would take the volume past 98 percent full.
No VPC default security group. When no security group is given, AWS attaches
the VPC's default one. This module creates its own and opens the NFS, SMB or
iSCSI rows of AWS's port table (protocols, NFS by default) to the clients you
name. The ONTAP CLI and REST API (TCP 22, 443) and SnapMirror (TCP 10000, 11104,
11105) stay closed until you name networks for them. Outbound traffic goes to the
VPC's primary CIDR block (or the ranges you name) rather than everywhere. SNMP, Kerberos admin (TCP 749) and ICMP
from AWS's table are not opened.
Throughput changes do not replace the file system. The provider replaces a
first-generation file system (SINGLE_AZ_1, MULTI_AZ_1) when
throughput_capacity_per_ha_pair goes up, but updates throughput_capacity in
place. This module writes your value to the field that updates in place for each
generation. Second-generation file systems wait six hours between throughput
changes, and take 384 or 768 MBps only with one HA pair.
Nothing is kept in state that logs in. The fsxadmin and SVM administrator
passwords are not set, so no one can log in to the ONTAP CLI or REST API until
you set one outside Terraform:
aws fsx update-file-system --file-system-id <id> \
--ontap-configuration FsxAdminPassword=<password>
SMB needs the SVM joined to Active Directory, which takes a service account
password; join it with aws fsx update-storage-virtual-machine or the console.
The module ignores that setting afterwards, so a plan does not undo the join.
Multi-AZ needs your route tables. FSx otherwise updates only the VPC's
default route table, and clients in subnets with other route tables lose the file
system at failover. Without endpoint_ip_address_range, FSx picks a
198.19.x.0/24 range, which WorkSpaces and AppStream 2.0 also use for their
management interfaces.
Some changes replace things. deployment_type, subnet_ids, kms_key_arn,
endpoint_ip_address_range and additional_security_group_ids replace the file
system. name and root_volume_security_style replace the SVM and therefore
every volume in it. Renaming a volume or changing its volume_style replaces
that volume. Each replaced volume leaves a final backup unless
skip_final_backup is set.
Verification
Static validation runs tofu fmt, init, validate, tflint and checkov.
This module has not yet had a live test, so it is published as statically
validated with its live test pending and does not carry the live-tested mark.
Usage code & full reference need an account
The complete copy-paste usage, the full input/output reference, and operational notes are free with an account - shown here and bundled in the download. Sign in and this section fills in.
- Usage
Related modules
aws-datasync
preserve_deleted_files = REMOVE deletes files at the DESTINATION that are absent from the source, so an unmounted share or a renamed path empties the destination on schedule and the task reports success. PRESERVE here, with verification on, a bandwidth ceiling so it cannot take the whole Direct Connect, and a per-file report of what failed.
aws-s3-bucket
Private S3 bucket with encryption, versioning, public-access block, and TLS-only policy.
aws-backup
A vault, its plans and what they protect, with the service role that can restore as well as back up. Vault Lock is stated rather than defaulted: COMPLIANCE mode cannot be removed by anybody once its window elapses, which is the point and is irreversible.
aws-efs
An EFS file system with mount targets, a least-privilege NFS security group, lifecycle tiering, automatic backups, and a resource policy that enforces encryption in transit.
aws-ebs-volume
Volumes that are always encrypted, optional attachment, and a DLM snapshot schedule in the same module - because a volume with no schedule is one copy of your data on hardware that can fail, and leaving snapshots to somebody else usually means nobody.
aws-fsx-lustre
A Lustre file system with the S3 link, root squash and compression set deliberately. SCRATCH deployments are not replicated - a lost file server loses the data - so this defaults to PERSISTENT_2 and refuses the combinations FSx accepts quietly.