BAMS initial project structure
This commit is contained in:
132
README.md
Normal file
132
README.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# BAMS - Backup Appliance Management System
|
||||
|
||||
A comprehensive management system for backup appliances, providing unified control over disk repositories, tape libraries, iSCSI targets, and Bacula integration.
|
||||
|
||||
## Features
|
||||
|
||||
- **Dashboard**: Real-time monitoring of storage, tape library, iSCSI sessions, and Bacula status
|
||||
- **Disk Repository Management**: Create and manage LVM and ZFS repositories
|
||||
- **Tape Library Management**: Inventory, load/unload operations for LTO-8 libraries
|
||||
- **iSCSI Target Management**: Configure SCST targets with portal and initiator ACL
|
||||
- **Bacula Integration**: Status monitoring, config generation, and inventory operations
|
||||
- **Logs & Diagnostics**: Live log viewing and support bundle generation
|
||||
|
||||
## Architecture
|
||||
|
||||
- **Backend**: Go-based REST API service running as systemd service
|
||||
- **Frontend**: Cockpit plugin providing web-based UI
|
||||
- **Storage**: LVM and ZFS support for disk repositories
|
||||
- **iSCSI**: SCST framework for iSCSI target management
|
||||
- **Tape**: Support for LTO-8 SAS/FC tape libraries
|
||||
|
||||
## Requirements
|
||||
|
||||
- Ubuntu Server 24.04 LTS
|
||||
- Go 1.21+
|
||||
- Cockpit 300+
|
||||
- SCST (stable)
|
||||
- Bacula Community/Enterprise
|
||||
- LTO-8 compatible tape library
|
||||
|
||||
## Installation
|
||||
|
||||
### 1. Build Backend
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
go mod download
|
||||
go build -o bams-backend .
|
||||
sudo cp bams-backend /usr/local/bin/
|
||||
```
|
||||
|
||||
### 2. Install Cockpit Plugin
|
||||
|
||||
```bash
|
||||
sudo cp -r cockpit /usr/share/cockpit/bams
|
||||
sudo systemctl restart cockpit
|
||||
```
|
||||
|
||||
### 3. Configure System
|
||||
|
||||
```bash
|
||||
# Create user and group
|
||||
sudo useradd -r -s /bin/false bams
|
||||
sudo groupadd bams-admin
|
||||
sudo groupadd bams-operator
|
||||
|
||||
# Create directories
|
||||
sudo mkdir -p /var/lib/bams
|
||||
sudo mkdir -p /etc/bams
|
||||
sudo mkdir -p /var/log/bams
|
||||
|
||||
# Copy configuration
|
||||
sudo cp configs/config.yaml.example /etc/bams/config.yaml
|
||||
sudo cp configs/bams.service /etc/systemd/system/
|
||||
|
||||
# Install polkit rules
|
||||
sudo cp configs/polkit.rules /etc/polkit-1/rules.d/50-bams.rules
|
||||
|
||||
# Set permissions
|
||||
sudo chown -R bams:bams /var/lib/bams
|
||||
sudo chown -R bams:bams /var/log/bams
|
||||
sudo chmod 640 /etc/bams/config.yaml
|
||||
```
|
||||
|
||||
### 4. Start Service
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable bams.service
|
||||
sudo systemctl start bams.service
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Edit `/etc/bams/config.yaml` to customize:
|
||||
|
||||
- Port number (default: 8080)
|
||||
- Log level (debug, info, warn, error)
|
||||
- Data directory
|
||||
- SCST and Bacula config paths
|
||||
- Security settings
|
||||
|
||||
## Usage
|
||||
|
||||
1. Access Cockpit web interface
|
||||
2. Navigate to "BAMS" in the tools menu
|
||||
3. Use the dashboard to monitor system status
|
||||
4. Manage storage repositories, tape library, and iSCSI targets through the UI
|
||||
|
||||
## API Endpoints
|
||||
|
||||
The backend provides a REST API at `http://localhost:8080/api/v1/`:
|
||||
|
||||
- `GET /dashboard` - Dashboard summary
|
||||
- `GET /disk/repositories` - List repositories
|
||||
- `POST /disk/repositories` - Create repository
|
||||
- `GET /tape/library` - Library status
|
||||
- `POST /tape/inventory` - Run inventory
|
||||
- `GET /iscsi/targets` - List iSCSI targets
|
||||
- `POST /iscsi/targets` - Create target
|
||||
- `GET /bacula/status` - Bacula SD status
|
||||
- `GET /logs/{service}` - Get logs
|
||||
- `GET /diagnostics/bundle` - Download support bundle
|
||||
|
||||
## Security
|
||||
|
||||
- Privileged operations require polkit authorization
|
||||
- Users must be in `bams-admin` or `bams-operator` groups
|
||||
- HTTPS/TLS recommended for production
|
||||
- Audit logging for configuration changes
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Check service status: `sudo systemctl status bams`
|
||||
- View logs: `sudo journalctl -u bams -f`
|
||||
- Verify Cockpit plugin: Check `/usr/share/cockpit/bams` exists
|
||||
- Test API: `curl http://localhost:8080/api/v1/health`
|
||||
|
||||
## License
|
||||
|
||||
GPL-3.0
|
||||
|
||||
Reference in New Issue
Block a user