# gettek/terraform-azurerm-policy-as-code architecture

> Architecture diagram of the GitHub repository gettek/terraform-azurerm-policy-as-code, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gettek/terraform-azurerm-policy-as-code
- Repository: https://github.com/gettek/terraform-azurerm-policy-as-code

## Overview

This repository provides Terraform modules and policy JSON for defining, grouping, assigning, and exempting Azure Policies. The documented workflow starts with custom policy definitions, optionally combines definitions into initiatives, assigns definitions or initiatives at a chosen scope, and manages exemptions and assignment-side compliance actions. The README supports these module relationships and describes evaluation scans and role/remediation behavior; source excerpts were unavailable, so implementation-level wiring is not inferred.

Main entry points: [`modules/set_assignment`](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/set_assignment) (Initiative assignment), [`modules/definition`](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/definition) (Definition module), [`modules/initiative`](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/initiative) (Initiative module), [`modules/def_assignment`](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/def_assignment) (Definition assignment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_definition["Policy authoring"]
  node_definition_module["Definition module"]
  node_initiative_module["Initiative module"]
end

subgraph group_assignment["Policy assignment"]
  node_definition_assignment["Definition assignment"]
  node_initiative_assignment["Initiative assignment"]
end

subgraph group_compliance["Compliance operations"]
  node_exemption_module["Exemption module"]
  node_role_assignments["Role assignments"]
  node_remediation_tasks["Remediation tasks"]
  node_evaluation_scan["Evaluation scan"]
end

subgraph group_catalog["Policy catalog"]
  node_policy_library["Policy JSON library"]
end

node_terraform_user(("Terraform user"))
node_azure_policy["Azure Policy"]

node_terraform_user -->|"configures"| node_definition_module
node_definition_module -->|"loads policy JSON"| node_policy_library
node_terraform_user -->|"configures"| node_initiative_module
node_initiative_module -->|"uses definitions"| node_definition_module
node_terraform_user -->|"configures"| node_definition_assignment
node_definition_assignment -->|"creates assignment"| node_azure_policy
node_terraform_user -->|"configures"| node_initiative_assignment
node_initiative_assignment -->|"creates assignment"| node_azure_policy
node_terraform_user -->|"configures"| node_exemption_module
node_exemption_module -->|"creates exemption"| node_azure_policy
node_initiative_assignment -->|"manages roles"| node_role_assignments
node_initiative_assignment -->|"creates remediation"| node_remediation_tasks
node_terraform_user -->|"requests scan"| node_evaluation_scan
node_evaluation_scan -->|"triggers evaluation"| node_azure_policy

click node_definition_module "https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/definition"
click node_policy_library "https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/policies"
click node_initiative_module "https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/initiative"
click node_definition_assignment "https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/def_assignment"
click node_initiative_assignment "https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/set_assignment"
click node_exemption_module "https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/exemption"
click node_role_assignments "https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/set_assignment"
click node_remediation_tasks "https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/set_assignment"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_definition_module,node_initiative_module,node_terraform_user toneBlue
class node_definition_assignment,node_initiative_assignment toneAmber
class node_exemption_module,node_role_assignments,node_remediation_tasks,node_evaluation_scan toneMint
class node_policy_library toneRose
class node_azure_policy toneIndigo
```

## Components

### Policy authoring

- [Definition module](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/definition): `modules/definition`
- [Initiative module](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/initiative): `modules/initiative`

### Policy assignment

- [Definition assignment](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/def_assignment): `modules/def_assignment`
- [Initiative assignment](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/set_assignment): `modules/set_assignment`

### Compliance operations

- [Exemption module](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/exemption): `modules/exemption`
- [Role assignments](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/set_assignment): `modules/set_assignment`
- [Remediation tasks](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/modules/set_assignment): `modules/set_assignment`
- **Evaluation scan**

### Policy catalog

- [Policy JSON library](https://github.com/gettek/terraform-azurerm-policy-as-code/tree/main/policies): `policies`

### Other components

- **Terraform user**
- **Azure Policy**

## Connections

- Terraform user → Definition module: configures
- Definition module → Policy JSON library: loads policy JSON
- Terraform user → Initiative module: configures
- Initiative module → Definition module: uses definitions
- Terraform user → Definition assignment: configures
- Definition assignment → Azure Policy: creates assignment
- Terraform user → Initiative assignment: configures
- Initiative assignment → Azure Policy: creates assignment
- Terraform user → Exemption module: configures
- Exemption module → Azure Policy: creates exemption
- Initiative assignment → Role assignments: manages roles
- Initiative assignment → Remediation tasks: creates remediation
- Terraform user → Evaluation scan: requests scan
- Evaluation scan → Azure Policy: triggers evaluation
