# anhbka/ansible architecture

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

- Interactive diagram: https://gitdiagram.com/anhbka/ansible
- Repository: https://github.com/anhbka/ansible

## Overview

This repository is a collection of Ansible training exercises and answer keys, rather than a shared application or Ansible runtime. Learners progress from YAML, inventories, playbooks, and modules to variables and control-flow exercises, then to multi-host Flask/MySQL deployment, roles, asynchronous tasks, strategies, error handling, templates, and lookups. The sampled Flask example serves simple routes and reads employee rows from MySQL. Playbook contents and most exercise wiring were not sampled, so deployment relationships are not asserted.

Main entry points: [`Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook/Exercise_1/app.py`](https://github.com/anhbka/ansible/blob/main/Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook/Exercise_1/app.py) (Flask Example), [`Ansible-trainning/ansible-training-answer-keys/Section_1_YAML`](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_1_YAML) (YAML Exercises), [`Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook`](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook) (Web Playbooks), [`Ansible-trainning/ansible-training-answer-keys-2/Section_5_Async`](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_5_Async) (Async Exercises)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_fundamentals["Ansible Fundamentals"]
  node_yaml["YAML Exercises"]
  node_inventory["Inventory Exercises"]
  node_playbooks["Playbook Exercises"]
  node_modules["Module Exercises"]
  node_variables["Variable Exercises"]
  node_conditionals["Conditional Exercises"]
  node_loops["Loop Exercises"]
end

subgraph group_deployment["Web Deployment"]
  node_web_examples["Web Playbooks"]
  node_web_app["Flask Example<br/>[app.py]"]
  node_hostvars["Host Variables"]
  node_roles["Role Exercises"]
end

subgraph group_execution["Execution Patterns"]
  node_async["Async Exercises"]
  node_strategy["Strategy Exercises"]
  node_errors["Error Handling"]
end

subgraph group_data["Templating and Data"]
  node_jinja["Jinja Exercises"]
  node_lookups["Lookup Exercises"]
end

node_learner(("Learner"))
node_mysql[("MySQL Database")]

node_learner -.->|"studies"| node_yaml
node_learner -.->|"studies"| node_web_examples
node_learner -.->|"studies"| node_async
node_learner -.->|"studies"| node_jinja
node_web_app -->|"queries"| node_mysql

click node_yaml "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_1_YAML"
click node_inventory "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_2_Inventory"
click node_playbooks "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_3_Playbook"
click node_modules "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_4_Modules"
click node_variables "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_5_Variables"
click node_conditionals "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_6_Conditionals"
click node_loops "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_7_Loops"
click node_web_examples "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook"
click node_web_app "https://github.com/anhbka/ansible/blob/main/Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook/Exercise_1/app.py"
click node_hostvars "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_3_HostVars_Include"
click node_roles "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_4_Roles"
click node_async "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_5_Async"
click node_strategy "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_6_Strategy"
click node_errors "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_7_ErrorHandling"
click node_jinja "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_8_Jinja2"
click node_lookups "https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_9_Lookups"

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_yaml,node_inventory,node_playbooks,node_modules,node_variables,node_conditionals,node_loops toneBlue
class node_web_examples,node_web_app,node_hostvars,node_roles,node_mysql toneAmber
class node_async,node_strategy,node_errors toneMint
class node_jinja,node_lookups toneRose
class node_learner toneIndigo
```

## Components

### Ansible Fundamentals

- [YAML Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_1_YAML): `Ansible-trainning/ansible-training-answer-keys/Section_1_YAML`
- [Inventory Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_2_Inventory): `Ansible-trainning/ansible-training-answer-keys/Section_2_Inventory`
- [Playbook Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_3_Playbook): `Ansible-trainning/ansible-training-answer-keys/Section_3_Playbook`
- [Module Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_4_Modules): `Ansible-trainning/ansible-training-answer-keys/Section_4_Modules`
- [Variable Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_5_Variables): `Ansible-trainning/ansible-training-answer-keys/Section_5_Variables`
- [Conditional Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_6_Conditionals): `Ansible-trainning/ansible-training-answer-keys/Section_6_Conditionals`
- [Loop Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys/Section_7_Loops): `Ansible-trainning/ansible-training-answer-keys/Section_7_Loops`

### Web Deployment

- [Web Playbooks](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook): `Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook`
- [Flask Example](https://github.com/anhbka/ansible/blob/main/Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook/Exercise_1/app.py): `Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook/Exercise_1/app.py`
- [Host Variables](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_3_HostVars_Include): `Ansible-trainning/ansible-training-answer-keys-2/Section_3_HostVars_Include`
- [Role Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_4_Roles): `Ansible-trainning/ansible-training-answer-keys-2/Section_4_Roles`

### Execution Patterns

- [Async Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_5_Async): `Ansible-trainning/ansible-training-answer-keys-2/Section_5_Async`
- [Strategy Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_6_Strategy): `Ansible-trainning/ansible-training-answer-keys-2/Section_6_Strategy`
- [Error Handling](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_7_ErrorHandling): `Ansible-trainning/ansible-training-answer-keys-2/Section_7_ErrorHandling`

### Templating and Data

- [Jinja Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_8_Jinja2): `Ansible-trainning/ansible-training-answer-keys-2/Section_8_Jinja2`
- [Lookup Exercises](https://github.com/anhbka/ansible/tree/main/Ansible-trainning/ansible-training-answer-keys-2/Section_9_Lookups): `Ansible-trainning/ansible-training-answer-keys-2/Section_9_Lookups`

### Other components

- **Learner**
- **MySQL Database**

## Connections

- Learner → YAML Exercises: studies
- Learner → Web Playbooks: studies
- Learner → Async Exercises: studies
- Learner → Jinja Exercises: studies
- Flask Example → MySQL Database: queries (evidence: `Ansible-trainning/ansible-training-answer-keys-2/Section_2_Web_Playbook/Exercise_1/app.py`)
