# def-sayan/learn-ansible-vulnerable-lab-env architecture

> Architecture diagram of the GitHub repository def-sayan/learn-ansible-vulnerable-lab-env, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/def-sayan/learn-ansible-vulnerable-lab-env
- Repository: https://github.com/def-sayan/learn-ansible-vulnerable-lab-env

## Overview

This repository builds an intentionally vulnerable Active Directory lab in AWS: Terraform provisions isolated hosts and generates Ansible inventory, then Ansible configures the domain, attack paths, and gated flags. The main user journey is operator → provision → configure → connect to the pivot and practice the documented attacks. The graph preserves the README’s major lab capabilities; source excerpts were limited, so role-to-playbook wiring and finer internal call relationships are not asserted.

Main entry points: [`playbooks`](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/playbooks) (Deployment Stages), [`terraform/main.tf`](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/terraform/main.tf) (Terraform Resources), [`inventory/group_vars/all.yml`](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/inventory/group_vars/all.yml) (Lab Variables), [`terraform/outputs.tf`](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/terraform/outputs.tf) (Inventory Generation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_provision["AWS Provisioning"]
  node_terraform["Terraform Resources<br/>[main.tf]"]
  node_bootstrap["Windows Bootstrap"]
  node_inventorygen["Inventory Generation<br/>[outputs.tf]"]
end

subgraph group_configure["Ansible Configuration"]
  node_site["Lab Deployment<br/>[site.yml]"]
  node_playbooks["Deployment Stages"]
end

subgraph group_attacks["Lab Scenarios"]
  node_dc["Domain Controller"]
  node_members["Domain Members"]
  node_content["AD Content"]
  node_acl["ACL DCSync"]
  node_asrep["AS-REP Roasting"]
  node_kerberoast["Kerberoasting"]
  node_adcs["ADCS ESC1"]
  node_ca["Enterprise CA"]
  node_flags["Gated Flags"]
end

subgraph group_access["Access and State"]
  node_inventory["Ansible Inventory<br/>[hosts.ini.example]"]
  node_pivot["Linux Pivot"]
  node_vars["Lab Variables<br/>[all.yml]"]
end

node_operator(("Operator"))
node_aws[("AWS")]
node_attacker(("Lab Learner"))

node_operator -->|"runs provisioning"| node_terraform
node_terraform -->|"creates infrastructure"| node_aws
node_terraform -->|"uses template"| node_bootstrap
node_terraform -->|"generates inventory"| node_inventorygen
node_inventorygen -->|"writes hosts"| node_inventory
node_operator -->|"runs deployment"| node_site
node_site -->|"imports stages"| node_playbooks
node_playbooks -->|"configures domain"| node_dc
node_playbooks -->|"joins hosts"| node_members
node_playbooks -->|"plants AD content"| node_content
node_playbooks -->|"plants weakness"| node_acl
node_playbooks -->|"plants weakness"| node_asrep
node_playbooks -->|"plants weakness"| node_kerberoast
node_playbooks -->|"plants ESC1"| node_adcs
node_playbooks -->|"installs CA"| node_ca
node_playbooks -->|"places flags"| node_flags
node_playbooks -->|"configures pivot"| node_pivot
node_vars -->|"declares lab data"| node_content
node_vars -->|"declares flag values"| node_flags
node_attacker -->|"connects to"| node_pivot
node_attacker -->|"practices attacks"| node_dc

click node_terraform "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/terraform/main.tf"
click node_bootstrap "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/terraform/templates/windows_userdata.ps1.tpl"
click node_inventorygen "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/terraform/outputs.tf"
click node_inventory "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/inventory/hosts.ini.example"
click node_site "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/site.yml"
click node_playbooks "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/playbooks"
click node_dc "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/domain_controller"
click node_members "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/domain_member"
click node_content "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/ad_content"
click node_acl "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/vuln_acl_dcsync"
click node_asrep "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/vuln_asrep"
click node_kerberoast "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/vuln_kerberoast"
click node_adcs "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/vuln_adcs_esc1"
click node_ca "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/adcs_ca"
click node_flags "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/flags"
click node_pivot "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/linux_pivot"
click node_vars "https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/inventory/group_vars/all.yml"

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_terraform,node_bootstrap,node_inventorygen toneBlue
class node_site,node_playbooks,node_aws toneAmber
class node_dc,node_members,node_content,node_acl,node_asrep,node_kerberoast,node_adcs,node_ca,node_flags toneMint
class node_inventory,node_pivot,node_vars toneRose
class node_operator,node_attacker toneIndigo
```

## Components

### AWS Provisioning

- [Terraform Resources](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/terraform/main.tf): `terraform/main.tf`
- [Windows Bootstrap](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/terraform/templates/windows_userdata.ps1.tpl): `terraform/templates/windows_userdata.ps1.tpl`
- [Inventory Generation](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/terraform/outputs.tf): `terraform/outputs.tf`

### Ansible Configuration

- [Lab Deployment](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/site.yml): `site.yml`
- [Deployment Stages](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/playbooks): `playbooks`

### Lab Scenarios

- [Domain Controller](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/domain_controller): `roles/domain_controller`
- [Domain Members](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/domain_member): `roles/domain_member`
- [AD Content](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/ad_content): `roles/ad_content`
- [ACL DCSync](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/vuln_acl_dcsync): `roles/vuln_acl_dcsync`
- [AS-REP Roasting](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/vuln_asrep): `roles/vuln_asrep`
- [Kerberoasting](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/vuln_kerberoast): `roles/vuln_kerberoast`
- [ADCS ESC1](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/vuln_adcs_esc1): `roles/vuln_adcs_esc1`
- [Enterprise CA](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/adcs_ca): `roles/adcs_ca`
- [Gated Flags](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/flags): `roles/flags`

### Access and State

- [Ansible Inventory](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/inventory/hosts.ini.example): `inventory/hosts.ini.example`
- [Linux Pivot](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/tree/claude/jolly-cori-zsb4r0/roles/linux_pivot): `roles/linux_pivot`
- [Lab Variables](https://github.com/def-sayan/learn-ansible-vulnerable-lab-env/blob/claude/jolly-cori-zsb4r0/inventory/group_vars/all.yml): `inventory/group_vars/all.yml`

### Other components

- **Operator**
- **AWS**
- **Lab Learner**

## Connections

- Operator → Terraform Resources: runs provisioning
- Terraform Resources → AWS: creates infrastructure
- Terraform Resources → Windows Bootstrap: uses template
- Terraform Resources → Inventory Generation: generates inventory
- Inventory Generation → Ansible Inventory: writes hosts
- Operator → Lab Deployment: runs deployment
- Lab Deployment → Deployment Stages: imports stages
- Deployment Stages → Domain Controller: configures domain
- Deployment Stages → Domain Members: joins hosts
- Deployment Stages → AD Content: plants AD content
- Deployment Stages → ACL DCSync: plants weakness
- Deployment Stages → AS-REP Roasting: plants weakness
- Deployment Stages → Kerberoasting: plants weakness
- Deployment Stages → ADCS ESC1: plants ESC1
- Deployment Stages → Enterprise CA: installs CA
- Deployment Stages → Gated Flags: places flags
- Deployment Stages → Linux Pivot: configures pivot
- Lab Variables → AD Content: declares lab data
- Lab Variables → Gated Flags: declares flag values
- Lab Learner → Linux Pivot: connects to
- Lab Learner → Domain Controller: practices attacks
