# imperva/ansible-role-imperva-appliance architecture

> Architecture diagram of the GitHub repository imperva/ansible-role-imperva-appliance, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/imperva/ansible-role-imperva-appliance
- Repository: https://github.com/imperva/ansible-role-imperva-appliance

## Overview

This repository is an Ansible automation project for upgrading Imperva MX appliances and Gateways from a central workstation. The documented user workflow is to select appliance hosts in the inventory and run the site playbook; the role tree names information-gathering and patching stages. Source excerpts were unavailable, so links between the playbook and role tasks are omitted rather than inferred from filenames.

Main entry points: [`site.yml`](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/site.yml) (Site Playbook), [`inventories/default/hosts`](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/inventories/default/hosts) (Host Inventory)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Execution"]
  node_ansible["Ansible Runner"]
  node_inventory["Host Inventory"]
  node_site["Site Playbook<br/>[site.yml]"]
  node_common["Common Playbook<br/>[common.yml]"]
end

subgraph group_imperva["Imperva Upgrade"]
  node_role_main["Role Tasks<br/>[main.yml]"]
  node_gather["Gather Information<br/>[gatherinfo.yml]"]
  node_patch["Patch Appliances<br/>[patch.yml]"]
  node_defaults["Role Defaults<br/>[main.yml]"]
  node_vars["Role Variables<br/>[main.yml]"]
  node_packages["Imperva Packages"]
end

node_operator(("Operator"))
node_appliances["Imperva Appliances"]

node_operator -->|"runs playbook"| node_ansible
node_ansible -->|"executes"| node_site
node_ansible -->|"loads hosts"| node_inventory
node_site -->|"upgrades"| node_appliances

click node_inventory "https://github.com/imperva/ansible-role-imperva-appliance/blob/master/inventories/default/hosts"
click node_site "https://github.com/imperva/ansible-role-imperva-appliance/blob/master/site.yml"
click node_common "https://github.com/imperva/ansible-role-imperva-appliance/blob/master/playbooks/common.yml"
click node_role_main "https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/tasks/main.yml"
click node_gather "https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/tasks/gatherinfo.yml"
click node_patch "https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/tasks/patch.yml"
click node_defaults "https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/defaults/main.yml"
click node_vars "https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/vars/main.yml"
click node_packages "https://github.com/imperva/ansible-role-imperva-appliance/tree/master/roles/imperva/files/imperva_packages"

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_ansible,node_inventory,node_site,node_common toneBlue
class node_role_main,node_gather,node_patch,node_defaults,node_vars,node_packages toneAmber
class node_operator,node_appliances toneIndigo
```

## Components

### Execution

- **Ansible Runner**
- [Host Inventory](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/inventories/default/hosts): `inventories/default/hosts`
- [Site Playbook](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/site.yml): `site.yml`
- [Common Playbook](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/playbooks/common.yml): `playbooks/common.yml`

### Imperva Upgrade

- [Role Tasks](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/tasks/main.yml): `roles/imperva/tasks/main.yml`
- [Gather Information](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/tasks/gatherinfo.yml): `roles/imperva/tasks/gatherinfo.yml`
- [Patch Appliances](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/tasks/patch.yml): `roles/imperva/tasks/patch.yml`
- [Role Defaults](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/defaults/main.yml): `roles/imperva/defaults/main.yml`
- [Role Variables](https://github.com/imperva/ansible-role-imperva-appliance/blob/master/roles/imperva/vars/main.yml): `roles/imperva/vars/main.yml`
- [Imperva Packages](https://github.com/imperva/ansible-role-imperva-appliance/tree/master/roles/imperva/files/imperva_packages): `roles/imperva/files/imperva_packages`

### Other components

- **Operator**
- **Imperva Appliances**

## Connections

- Operator → Ansible Runner: runs playbook
- Ansible Runner → Site Playbook: executes
- Ansible Runner → Host Inventory: loads hosts
- Site Playbook → Imperva Appliances: upgrades
