datacenter = (string) Datacenter::query()->active()->orderBy('name')->value('code'); } #[Validate('required|ip|unique:hosts,public_ip')] public string $public_ip = ''; #[Validate('required|string|min:8')] public string $root_password = ''; public function save(StartHostOnboarding $action) { $this->authorize('hosts.manage'); $data = $this->validate(); $host = $action->run($data); // Der Einmal-Code und das Schlüsselpaar entstehen weiterhin: dieselbe // Methode legt auch die Tunneladresse und den öffentlichen Schlüssel am // Host an, und der Code trägt den Bootstrap-Weg, der über // Admin\ReissueTakeover erreichbar bleibt. // // Die BEFEHLSZEILE daraus zeigt diese Seite nicht mehr. Sie gehört zum // Rettungssystem-Weg, und das Speichern hier startet die // Provisionierungs-Pipeline: `EstablishSshTrust` meldet sich mit dem // Root-Passwort an einer laufenden Debian-Maschine an, danach kommt // Proxmox per Paket dazu. Es gibt für den Betreiber nichts zu kopieren. HostEnrolment::issueWithKeys($host); $this->createdUuid = $host->uuid; $this->createdName = $host->name; } public function render() { // Ein Name, der ohne Ankündigung entsteht, ist eine Überraschung. Die // Seite zeigt ihn, sobald ein Rechenzentrum gewählt ist — gelesen, nicht // reserviert (siehe HostName::preview). $preview = $this->datacenter === '' ? null : HostName::preview($this->datacenter); return view('livewire.admin.host-create', [ 'datacenters' => Datacenter::query()->active()->orderBy('name')->get(), 'previewName' => $preview, 'previewFqdn' => $preview === null ? null : HostName::fqdn($preview), // `archiveUrl` fiel weg: er war der Hinweis, woher die Bootstrap- // Zeile ihr Skript holt, und die Zeile zeigt diese Seite nicht mehr. // Die fehlenden Tunnel-Einstellungen bleiben — ohne sie kommt auch // die Pipeline nicht in den Tunnel. 'missingSettings' => HostTakeoverCommand::missingSettings(), ]); } }