clusev/database/seeders/FleetSeeder.php

46 lines
2.3 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\AuditEvent;
use App\Models\Server;
use Illuminate\Database\Seeder;
class FleetSeeder extends Seeder
{
public function run(): void
{
$fleet = [
['name' => 'web-01', 'ip' => '10.10.90.136', 'os' => 'Debian 13', 'status' => 'online', 'cpu' => 34, 'mem' => 61, 'disk' => 71, 'uptime' => '42d'],
['name' => 'db-02', 'ip' => '10.10.90.140', 'os' => 'Debian 12', 'status' => 'warning', 'cpu' => 78, 'mem' => 83, 'disk' => 64, 'uptime' => '11d'],
['name' => 'cache-03', 'ip' => '10.10.90.141', 'os' => 'Alpine 3.20', 'status' => 'offline', 'cpu' => 0, 'mem' => 0, 'disk' => 0, 'uptime' => null],
['name' => 'edge-04', 'ip' => '10.10.90.150', 'os' => 'Ubuntu 24.04', 'status' => 'online', 'cpu' => 12, 'mem' => 39, 'disk' => 28, 'uptime' => '7d'],
];
foreach ($fleet as $s) {
Server::updateOrCreate(['name' => $s['name']], [
...$s,
'hostname' => $s['name'].'.clusev.local',
'specs' => ['cores' => 4, 'ram_gb' => 8, 'disk_gb' => 160, 'arch' => 'x86_64', 'kernel' => '6.12.0', 'virt' => 'KVM'],
'last_seen_at' => $s['status'] === 'offline' ? now()->subHour() : now(),
]);
}
$web = Server::where('name', 'web-01')->first();
$events = [
['actor' => 'admin', 'action' => 'Dienst neu gestartet', 'target' => 'php8.3-fpm.service', 'server_id' => $web?->id, 'created_at' => now()->subMinutes(2)],
['actor' => 'admin', 'action' => 'SSH-Schlüssel hinzugefügt', 'target' => 'web-01', 'server_id' => $web?->id, 'created_at' => now()->subMinutes(18)],
['actor' => 'system', 'action' => 'Server offline', 'target' => 'cache-03', 'server_id' => null, 'created_at' => now()->subHour()],
['actor' => 'admin', 'action' => 'Datei bearbeitet', 'target' => '/etc/nginx/nginx.conf', 'server_id' => $web?->id, 'created_at' => now()->subHours(3)],
];
foreach ($events as $e) {
AuditEvent::updateOrCreate(
['actor' => $e['actor'], 'action' => $e['action'], 'target' => $e['target']],
$e,
);
}
}
}