docs: add architecture overview
This commit is contained in:
parent
4dfe48fa1b
commit
d3fd0f5cb1
1 changed files with 206 additions and 0 deletions
206
docs/architecture.md
Normal file
206
docs/architecture.md
Normal file
|
|
@ -0,0 +1,206 @@
|
|||
# 🧠 Update Manager Architecture
|
||||
|
||||
This document describes how Update Manager is structured internally and how data flows through the system.
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Update Manager is a lightweight, SSH-based system for managing updates across multiple Linux hosts.
|
||||
|
||||
It consists of two main layers:
|
||||
|
||||
* **UI layer** – interactive menu (`update-manager-ui.sh`)
|
||||
* **Core engine** – update logic (`update-manager.sh`)
|
||||
|
||||
The system is designed to be simple, transparent, and dependency-light.
|
||||
|
||||
---
|
||||
|
||||
## High-Level Flow
|
||||
|
||||
```text
|
||||
User
|
||||
↓
|
||||
UI (update-manager-ui.sh)
|
||||
↓
|
||||
Core (update-manager.sh)
|
||||
↓
|
||||
SSH → Remote Hosts
|
||||
↓
|
||||
Results
|
||||
↓
|
||||
Logging (/opt/update-manager/log)
|
||||
↓
|
||||
UI / User
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Components
|
||||
|
||||
### UI Layer (`update-manager-ui.sh`)
|
||||
|
||||
Responsible for:
|
||||
|
||||
* Displaying menu (via `dialog`)
|
||||
* Handling user input
|
||||
* Managing hosts (add/remove/edit)
|
||||
* Providing access to logs
|
||||
* Delegating actions to core engine
|
||||
|
||||
The UI does **not perform updates directly**.
|
||||
|
||||
---
|
||||
|
||||
### Core Engine (`update-manager.sh`)
|
||||
|
||||
Responsible for:
|
||||
|
||||
* Reading configuration
|
||||
* Parsing hosts file
|
||||
* Executing SSH commands
|
||||
* Checking for updates (`apt list --upgradable`)
|
||||
* Handling connection errors
|
||||
* Writing structured logs
|
||||
|
||||
This is the **execution layer** of the system.
|
||||
|
||||
---
|
||||
|
||||
### Hosts Configuration
|
||||
|
||||
File:
|
||||
|
||||
```bash
|
||||
/opt/update-manager/hosts.conf
|
||||
```
|
||||
|
||||
Format:
|
||||
|
||||
```text
|
||||
name ip user
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
lanx-www 172.16.5.140 ed
|
||||
lanx-ai 172.16.5.135 ed
|
||||
```
|
||||
|
||||
Each line represents a target system accessed via SSH.
|
||||
|
||||
---
|
||||
|
||||
### Logging System
|
||||
|
||||
Log file:
|
||||
|
||||
```bash
|
||||
/opt/update-manager/log/update-manager.log
|
||||
```
|
||||
|
||||
Log format:
|
||||
|
||||
```text
|
||||
YYYY-MM-DD HH:MM:SS [LEVEL] host - message
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
2026-03-18 20:45:01 [INFO] lanx-www - Checking updates
|
||||
2026-03-18 20:45:03 [OK] lanx-www - 3 updates available
|
||||
2026-03-18 20:45:05 [ERR] lanx-db - Connection failed
|
||||
```
|
||||
|
||||
#### Log Levels
|
||||
|
||||
* `INFO` – informational messages
|
||||
* `OK` – successful operations
|
||||
* `ERR` – errors or failures
|
||||
|
||||
Logging is centralized and written locally.
|
||||
|
||||
---
|
||||
|
||||
## Execution Flow
|
||||
|
||||
For each host:
|
||||
|
||||
1. Read host entry from `hosts.conf`
|
||||
2. Establish SSH connection
|
||||
3. Execute:
|
||||
|
||||
```bash
|
||||
apt list --upgradable
|
||||
```
|
||||
|
||||
4. Parse output
|
||||
5. Determine:
|
||||
|
||||
* Up-to-date
|
||||
* Updates available
|
||||
* Connection failure
|
||||
6. Write result to:
|
||||
|
||||
* terminal output
|
||||
* log file
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
Primary config:
|
||||
|
||||
```bash
|
||||
/etc/update-manager.conf
|
||||
```
|
||||
|
||||
Fallback:
|
||||
|
||||
```bash
|
||||
./update-manager.conf
|
||||
```
|
||||
|
||||
Supported options:
|
||||
|
||||
* `HOSTS_FILE`
|
||||
* `SSH_OPTIONS`
|
||||
|
||||
---
|
||||
|
||||
## Design Principles
|
||||
|
||||
* **No agents** – uses standard SSH only
|
||||
* **Simple over complex** – minimal dependencies
|
||||
* **Transparent behavior** – everything is visible/logged
|
||||
* **CLI-first** – designed for terminal environments
|
||||
* **Modular growth** – prepared for future extensions
|
||||
|
||||
---
|
||||
|
||||
## Future Architecture Direction
|
||||
|
||||
Planned extensions:
|
||||
|
||||
* Plugin system (modular features)
|
||||
* Web interface (optional UI layer)
|
||||
* Notification system (alerts)
|
||||
* Metrics / monitoring
|
||||
* Integration with Lanx AI
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
Update Manager follows a clean separation:
|
||||
|
||||
* UI = interaction
|
||||
* Core = execution
|
||||
* Config = data
|
||||
* Log = output
|
||||
|
||||
This keeps the system predictable, debuggable, and easy to extend.
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue