diff --git a/terraform/nfs-provision/main.tf b/terraform/nfs-provision/main.tf index 546e4f4..d0d976f 100644 --- a/terraform/nfs-provision/main.tf +++ b/terraform/nfs-provision/main.tf @@ -8,7 +8,7 @@ terraform { required_providers { netapp-ontap = { source = "NetApp/netapp-ontap" - version = "~> 1.0" + version = "~> 2.5" } } } @@ -25,42 +25,11 @@ provider "netapp-ontap" { ] } -locals { - export_policy_name = "${var.volume_name}_export_policy" -} - -# Step 1 — Create the export policy (before volume so we can reference it) -resource "netapp-ontap_protocols_nfs_export_policy" "vol_policy" { - cx_profile_name = "cluster1" - name = local.export_policy_name - svm = { - name = var.svm_name - } -} - -# Step 2 — Add a client-match rule to the policy -resource "netapp-ontap_protocols_nfs_export_policy_rule" "client_rule" { - cx_profile_name = "cluster1" - export_policy = { - name = netapp-ontap_protocols_nfs_export_policy.vol_policy.name - } - svm = { - name = var.svm_name - } - clients_match = var.client_match - ro_rule = ["any"] - rw_rule = ["any"] - superuser = ["any"] - protocols = ["nfs"] -} - -# Step 3 — Create the FlexVol volume with the export policy assigned -resource "netapp-ontap_storage_volume" "nfs_vol" { +# Step 1 — Create the FlexVol volume with NFS enabled +resource "netapp-ontap_volume" "nfs_vol" { cx_profile_name = "cluster1" name = var.volume_name - svm = { - name = var.svm_name - } + svm_name = var.svm_name aggregates = [ { name = var.aggregate_name }, ] @@ -69,11 +38,22 @@ resource "netapp-ontap_storage_volume" "nfs_vol" { size_unit = var.volume_size_unit } nas = { - path = "/${var.volume_name}" - export_policy = local.export_policy_name + junction_path = "/${var.volume_name}" } +} + +# Step 2 — Add a client-match rule to the default export policy +resource "netapp-ontap_nfs_export_policy_rule" "client_rule" { + cx_profile_name = "cluster1" + svm_name = var.svm_name + export_policy_name = "default" + clients_match = [var.client_match] + ro_rule = ["any"] + rw_rule = ["any"] + superuser = ["any"] + protocols = ["nfs"] depends_on = [ - netapp-ontap_protocols_nfs_export_policy_rule.client_rule, + netapp-ontap_volume.nfs_vol, ] } diff --git a/terraform/nfs-provision/outputs.tf b/terraform/nfs-provision/outputs.tf index 6317e63..0ee17ac 100644 --- a/terraform/nfs-provision/outputs.tf +++ b/terraform/nfs-provision/outputs.tf @@ -1,16 +1,11 @@ output "volume_name" { description = "Name of the created volume" - value = netapp-ontap_storage_volume.nfs_vol.name + value = netapp-ontap_volume.nfs_vol.name } output "mount_path" { description = "NAS junction path for mounting" - value = netapp-ontap_storage_volume.nfs_vol.nas.path -} - -output "export_policy" { - description = "Name of the export policy assigned to the volume" - value = netapp-ontap_protocols_nfs_export_policy.vol_policy.name + value = netapp-ontap_volume.nfs_vol.nas.junction_path } output "client_match" {