diff --git a/aci_access_policies.tf b/aci_access_policies.tf
index 25d6a289..a48095d0 100644
--- a/aci_access_policies.tf
+++ b/aci_access_policies.tf
@@ -912,6 +912,23 @@ module "aci_infra_dhcp_relay_policy" {
providers_ = each.value.providers_
}
+locals {
+ infra_monitoring_policies = flatten([
+ for policy in try(local.access_policies.monitoring_policies, []) : {
+ name = "${policy.name}${local.defaults.apic.access_policies.monitoring_policies.name_suffix}"
+ description = try(policy.description, "")
+ }
+ ])
+}
+
+module "aci_infra_monitoring_policy" {
+ source = "./modules/terraform-aci-infra-monitoring-policy"
+
+ for_each = { for policy in local.infra_monitoring_policies : policy.name => policy if local.modules.aci_infra_monitoring_policy && var.manage_access_policies }
+ name = each.value.name
+ description = each.value.description
+}
+
module "aci_netflow_exporter" {
source = "./modules/terraform-aci-netflow-exporter"
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/.terraform-docs.yml b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/.terraform-docs.yml
new file mode 100644
index 00000000..da16cc33
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/.terraform-docs.yml
@@ -0,0 +1,34 @@
+version: '>= 0.14.0'
+
+formatter: markdown table
+
+content: |-
+ # Terraform ACI Monitoring Policy Module
+
+ Manages ACI Monitoring Policy
+
+ Location in GUI:
+ `Fabric` » `Access Policies` » `Policies` » `Monitoring`
+
+ ## Examples
+
+ ```hcl
+ {{ include "./examples/complete/main.tf" }}
+ ```
+
+ {{ .Requirements }}
+
+ {{ .Providers }}
+
+ {{ .Inputs }}
+
+ {{ .Outputs }}
+
+ {{ .Resources }}
+
+output:
+ file: README.md
+ mode: replace
+
+sort:
+ enabled: false
\ No newline at end of file
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/README.md b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/README.md
new file mode 100644
index 00000000..168b5f04
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/README.md
@@ -0,0 +1,53 @@
+
+# Terraform ACI Monitoring Policy Module
+
+Manages ACI Monitoring Policy
+
+Location in GUI:
+`Fabric` » `Access Policies` » `Policies` » `Monitoring`
+
+## Examples
+
+```hcl
+module "aci_infra_monitoring_policy" {
+ source = "netascode/nac-aci/aci//modules/terraform-aci-access-monitoring-policy"
+ version = ">= 0.8.0"
+
+ name = "INFRA-MONITORING-POL"
+ description = "My Description"
+}
+```
+
+## Requirements
+
+| Name | Version |
+|------|---------|
+| [terraform](#requirement\_terraform) | >= 1.3.0 |
+| [aci](#requirement\_aci) | >= 2.0.0 |
+
+## Providers
+
+| Name | Version |
+|------|---------|
+| [aci](#provider\_aci) | >= 2.0.0 |
+
+## Inputs
+
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| [name](#input\_name) | Monitoring policy name. | `string` | n/a | yes |
+| description | Description. | string | "" | no |
+
+## Outputs
+
+| Name | Description |
+|------|-------------|
+| [dn](#output\_dn) | Distinguished name of `monInfraPol` object. |
+| [name](#output\_name) | Monitoring policy name. |
+
+## Resources
+
+| Name | Type |
+|------|------|
+| [aci_rest_managed.monInfraPol](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
+
\ No newline at end of file
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/.terraform-docs.yml b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/.terraform-docs.yml
new file mode 100644
index 00000000..a601d9eb
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/.terraform-docs.yml
@@ -0,0 +1,24 @@
+version: '>= 0.14.0'
+
+formatter: markdown table
+
+content: |-
+ # Monitoring Policy Example
+
+ To run this example you need to execute:
+
+ ```bash
+ $ terraform init
+ $ terraform plan
+ $ terraform apply
+ ```
+
+ Note that this example will create resources. Resources can be destroyed with `terraform destroy`.
+
+ ```hcl
+ {{ include "./main.tf" }}
+ ```
+
+output:
+ file: README.md
+ mode: replace
\ No newline at end of file
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/README.md b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/README.md
new file mode 100644
index 00000000..fb22ffc9
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/README.md
@@ -0,0 +1,22 @@
+
+# Monitoring Policy Example
+
+To run this example you need to execute:
+
+```bash
+$ terraform init
+$ terraform plan
+$ terraform apply
+```
+
+Note that this example will create resources. Resources can be destroyed with `terraform destroy`.
+
+```hcl
+module "aci_infra_monitoring_policy" {
+ source = "netascode/nac-aci/aci//modules/terraform-aci-access-monitoring-policy"
+ version = ">= 0.8.0"
+ name = "INFRA-MONITORING-POL"
+ description = "My Description"
+}
+```
+
\ No newline at end of file
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/main.tf b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/main.tf
new file mode 100644
index 00000000..ee237792
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/main.tf
@@ -0,0 +1,7 @@
+module "aci_infra_monitoring_policy" {
+ source = "netascode/nac-aci/aci//modules/terraform-aci-access-monitoring-policy"
+ version = ">= 0.8.0"
+
+ name = "INFRA-MONITORING-POL"
+ description = "My Description"
+}
\ No newline at end of file
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/versions.tf b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/versions.tf
new file mode 100644
index 00000000..9299fb61
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/examples/complete/versions.tf
@@ -0,0 +1,11 @@
+
+terraform {
+ required_version = ">= 1.3.0"
+
+ required_providers {
+ aci = {
+ source = "CiscoDevNet/aci"
+ version = ">= 2.0.0"
+ }
+ }
+}
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/main.tf b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/main.tf
new file mode 100644
index 00000000..759031bc
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/main.tf
@@ -0,0 +1,8 @@
+resource "aci_rest_managed" "monInfraPol" {
+ dn = "uni/infra/moninfra-${var.name}"
+ class_name = "monInfraPol"
+ content = {
+ name = var.name
+ descr = var.description
+ }
+}
\ No newline at end of file
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/outputs.tf b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/outputs.tf
new file mode 100644
index 00000000..fa20b6ab
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/outputs.tf
@@ -0,0 +1,9 @@
+output "dn" {
+ value = aci_rest_managed.monInfraPol.id
+ description = "Distinguished name of `monInfraPol` object."
+}
+
+output "name" {
+ value = aci_rest_managed.monInfraPol.content.name
+ description = "Monitoring policy name."
+}
\ No newline at end of file
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/variables.tf b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/variables.tf
new file mode 100644
index 00000000..faa6cd97
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/variables.tf
@@ -0,0 +1,20 @@
+variable "name" {
+ description = "Monitoring policy name."
+ type = string
+
+ validation {
+ condition = can(regex("^[a-zA-Z0-9_.:-]{0,64}$", var.name))
+ error_message = "Allowed characters: `a`-`z`, `A`-`Z`, `0`-`9`, `_`, `.`, `:`, `-`. Maximum characters: 64."
+ }
+}
+
+variable "description" {
+ description = "Description."
+ type = string
+ default = ""
+
+ validation {
+ condition = can(regex("^[a-zA-Z0-9\\!#$%()*,-./:;@ _{|}~?&+]{0,128}$", var.description))
+ error_message = "Allowed characters: `a`-`z`, `A`-`Z`, `0`-`9`, `\\`, `!`, `#`, `$`, `%`, `(`, `)`, `*`, `,`, `-`, `.`, `/`, `:`, `;`, `@`, ` `, `_`, `{`, `|`, }`, `~`, `?`, `&`, `+`. Maximum characters: 128."
+ }
+}
\ No newline at end of file
diff --git a/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/versions.tf b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/versions.tf
new file mode 100644
index 00000000..1cf00624
--- /dev/null
+++ b/modules/terraform-aci-access-monitoring-policy/terraform-aci-dhcp-relay-policy/versions.tf
@@ -0,0 +1,11 @@
+
+terraform {
+ required_version = ">= 1.3.0"
+
+ required_providers {
+ aci = {
+ source = "CiscoDevNet/aci"
+ version = ">= 2.0.0"
+ }
+ }
+}
\ No newline at end of file