# samu3l-mnzs/projeto-devops-vagrant-ansible architecture

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

- Interactive diagram: https://gitdiagram.com/samu3l-mnzs/projeto-devops-vagrant-ansible
- Repository: https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible

## Overview

This repository provisions a four-VM Debian lab with Vagrant and configures it using Ansible. The principal workflow is `vagrant up`: Vagrant creates the VMs in order and runs each VM’s playbook; the `arq` VM provides DHCP, DNS and shared NFS storage, which the other machines use alongside their individual services. The graph follows capabilities and relationships documented in the README; no source excerpts were available, so it does not infer implementation details beyond that documentation.

Main entry points: [`Vagrantfile`](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/Vagrantfile) (Vagrant orchestration), [`playbooks/arq.yml`](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arq.yml) (Arq playbook), [`playbooks/autofs.yml`](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/autofs.yml) (NFS automount), [`playbooks/db.yml`](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/db.yml) (DB playbook)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_provision["VM provisioning"]
  node_vagrant["Vagrant orchestration"]
  node_arq_playbook["Arq playbook<br/>[arq.yml]"]
  node_db_playbook["DB playbook<br/>[db.yml]"]
  node_app_playbook["App playbook<br/>[app.yml]"]
  node_cli_playbook["CLI playbook<br/>[cli.yml]"]
end

subgraph group_shared["Shared configuration"]
  node_common["Base configuration<br/>[comum.yml]"]
  node_autofs["NFS automount<br/>[autofs.yml]"]
end

subgraph group_infra["Network and storage"]
  node_dhcp["DHCP service<br/>[arq.yml]"]
  node_dhcp_config["DHCP settings<br/>[dhcpd.conf]"]
  node_dns["Authoritative DNS<br/>[arq.yml]"]
  node_dns_config["DNS zone data"]
  node_dns_reverse["Reverse zone data<br/>[db.192.168.56]"]
  node_lvm_nfs["LVM and NFS<br/>[arq.yml]"]
end

subgraph group_services["VM services"]
  node_db_service["MariaDB<br/>[db.yml]"]
  node_app_service["Apache site<br/>[app.yml]"]
  node_web_page["Project page<br/>[index.html]"]
  node_cli_service["Desktop client<br/>[cli.yml]"]
  node_network_clients["DB, app and CLI VMs"]
end

node_operator(("Operator"))

node_operator -->|"runs up"| node_vagrant
node_vagrant -->|"runs first"| node_arq_playbook
node_vagrant -->|"provisions DB"| node_db_playbook
node_vagrant -->|"provisions app"| node_app_playbook
node_vagrant -->|"provisions CLI"| node_cli_playbook
node_arq_playbook -->|"imports"| node_common
node_db_playbook -->|"imports"| node_common
node_app_playbook -->|"imports"| node_common
node_cli_playbook -->|"imports"| node_common
node_db_playbook -->|"imports"| node_autofs
node_app_playbook -->|"imports"| node_autofs
node_cli_playbook -->|"imports"| node_autofs
node_arq_playbook -->|"configures"| node_dhcp
node_arq_playbook -->|"configures"| node_dns
node_arq_playbook -->|"configures"| node_lvm_nfs
node_dhcp -->|"uses settings"| node_dhcp_config
node_dns -->|"serves zone"| node_dns_config
node_dns -->|"serves reverse zone"| node_dns_reverse
node_db_playbook -->|"installs"| node_db_service
node_app_playbook -->|"installs"| node_app_service
node_app_service -->|"serves page"| node_web_page
node_cli_playbook -->|"installs"| node_cli_service
node_autofs -->|"mounts export"| node_lvm_nfs
node_network_clients -->|"uses automount"| node_autofs

click node_vagrant "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/Vagrantfile"
click node_arq_playbook "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arq.yml"
click node_db_playbook "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/db.yml"
click node_app_playbook "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/app.yml"
click node_cli_playbook "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/cli.yml"
click node_common "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/comum.yml"
click node_autofs "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/autofs.yml"
click node_dhcp "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arq.yml"
click node_dhcp_config "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arquivos/dhcpd.conf"
click node_dns "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arq.yml"
click node_dns_config "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arquivos/db.samuel.vinicius.devops"
click node_dns_reverse "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arquivos/db.192.168.56"
click node_lvm_nfs "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arq.yml"
click node_db_service "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/db.yml"
click node_app_service "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/app.yml"
click node_web_page "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arquivos/index.html"
click node_cli_service "https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/cli.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_vagrant,node_arq_playbook,node_db_playbook,node_app_playbook,node_cli_playbook toneBlue
class node_common,node_autofs toneAmber
class node_dhcp,node_dhcp_config,node_dns,node_dns_config,node_dns_reverse,node_lvm_nfs toneMint
class node_db_service,node_app_service,node_web_page,node_cli_service,node_network_clients toneRose
class node_operator toneIndigo
```

## Components

### VM provisioning

- [Vagrant orchestration](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/Vagrantfile): `Vagrantfile`
- [Arq playbook](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arq.yml): `playbooks/arq.yml`
- [DB playbook](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/db.yml): `playbooks/db.yml`
- [App playbook](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/app.yml): `playbooks/app.yml`
- [CLI playbook](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/cli.yml): `playbooks/cli.yml`

### Shared configuration

- [Base configuration](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/comum.yml): `playbooks/comum.yml`
- [NFS automount](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/autofs.yml): `playbooks/autofs.yml`

### Network and storage

- [DHCP service](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arq.yml): `playbooks/arq.yml`
- [DHCP settings](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arquivos/dhcpd.conf): `playbooks/arquivos/dhcpd.conf`
- [Authoritative DNS](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arq.yml): `playbooks/arq.yml`
- [DNS zone data](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arquivos/db.samuel.vinicius.devops): `playbooks/arquivos/db.samuel.vinicius.devops`
- [Reverse zone data](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arquivos/db.192.168.56): `playbooks/arquivos/db.192.168.56`
- [LVM and NFS](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arq.yml): `playbooks/arq.yml`

### VM services

- [MariaDB](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/db.yml): `playbooks/db.yml`
- [Apache site](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/app.yml): `playbooks/app.yml`
- [Project page](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/arquivos/index.html): `playbooks/arquivos/index.html`
- [Desktop client](https://github.com/samu3l-mnzs/projeto-devops-vagrant-ansible/blob/main/playbooks/cli.yml): `playbooks/cli.yml`
- **DB, app and CLI VMs**

### Other components

- **Operator**

## Connections

- Operator → Vagrant orchestration: runs up (evidence: `README.md`)
- Vagrant orchestration → Arq playbook: runs first (evidence: `README.md`)
- Vagrant orchestration → DB playbook: provisions DB (evidence: `README.md`)
- Vagrant orchestration → App playbook: provisions app (evidence: `README.md`)
- Vagrant orchestration → CLI playbook: provisions CLI (evidence: `README.md`)
- Arq playbook → Base configuration: imports (evidence: `README.md`)
- DB playbook → Base configuration: imports (evidence: `README.md`)
- App playbook → Base configuration: imports (evidence: `README.md`)
- CLI playbook → Base configuration: imports (evidence: `README.md`)
- DB playbook → NFS automount: imports (evidence: `README.md`)
- App playbook → NFS automount: imports (evidence: `README.md`)
- CLI playbook → NFS automount: imports (evidence: `README.md`)
- Arq playbook → DHCP service: configures (evidence: `README.md`)
- Arq playbook → Authoritative DNS: configures (evidence: `README.md`)
- Arq playbook → LVM and NFS: configures (evidence: `README.md`)
- DHCP service → DHCP settings: uses settings (evidence: `README.md`)
- Authoritative DNS → DNS zone data: serves zone (evidence: `README.md`)
- Authoritative DNS → Reverse zone data: serves reverse zone (evidence: `README.md`)
- DB playbook → MariaDB: installs (evidence: `README.md`)
- App playbook → Apache site: installs (evidence: `README.md`)
- Apache site → Project page: serves page (evidence: `README.md`)
- CLI playbook → Desktop client: installs (evidence: `README.md`)
- NFS automount → LVM and NFS: mounts export (evidence: `README.md`)
- DB, app and CLI VMs → NFS automount: uses automount (evidence: `README.md`)
