5.6. Automatisierte Installation (AutoDeploy)

Das Feature AutoDeploy vereinfacht die automatisierte Installation und Konfiguration von LiveConfig. Beim ersten Start prüft LiveConfig, ob die Datei /etc/liveconfig/autodeploy.json existiert und liest diese ggf. ein. Diese Datei enthält ein JSON-Objekt, folgende Konfigurationsoptionen sind möglich:

Schlüssel Version Wert Beschreibung
version 2.7.0 Zahl: 1 Versionsnummer des Dateiformats. Muss 1 sein.
admin 2.7.0 JSON-Objekt Einstellungen für den admin-Account:
  • password (String): PBKDF2-Passwort-Hash (siehe Beispielcode)

  • change-password (Boolean): erzwinge Passwortänderung durch den Benutzer bei erster Anmeldung

lcdefaults 2.7.0 JSON-Objekt Key/Value-Paare mit Werten, die in die Tabelle LCDEFAULTS eingetragen werden sollen (siehe Abschnitt 5.1, „ LiveConfig-Standardwerte ändern “). WICHTIG: die Werte müssen immer als String (in Anführungszeichen) angegeben werden!
licensekey 2.7.0 String Lizenzcode (zur automatischen Aktivierung der Lizenz)
include 2.7.0 JSON-Objekt Anweisungen zum Nachladen zusätzlicher AutoDeploy-Daten. Diese werden mit den Inhalten der autodeploy.json zusammengeführt, gleichnamige Einstellungen werden durch die nachgeladenen Werte überschrieben:
  • url (String): URL mit AutoDeploy-Daten. Der Content-Type muss application/json sein.

services 2.7.2 JSON object Dienste mit LiveConfig vorkonfigurieren:
  • web (JSON-Objekt): Webserver vorkonfigurieren. Beispiel:

    [...]
    "web": {
        "apache": {
            "ips": "192.168.0.1"
        },
        "nginx": {
            "ips": [ "192.168.0.2", "192.168.0.3" ]
        }
    }
    [...]

    Optional können Sie ips auf "*" setzen, um den jeweiligen Dienst auf allen erkannten IP-Adressen des Servers zu konfigurieren.

Sicherheit

Da die Datei auch sensible Informationen enthalten kann, sollte diese dem Benutzer root:root gehören und nur von diesem lesbar sein (Mode 0600).

Beispiel

{
    "version": 1,
    "admin": {
        "password": "{PBKDF2}32e6$ldzp8GDnr9s=$lfmOwnQ52MQ4bGJZgo6HuQ==",
        "change-password": true
    },
    "lcdefaults": {
        "login.help.url": "https://example.org/cms/help/login",
        "mail.aliases.limit": "20"
    },
    "licensekey": "XXXXX-XXXXX-XXXXX",
    "services": {
        "web": {
            "apache": {
                "ips":  "*"
            }
        }
    }
}

Erzeugen von PBKDF2-Passworthashes

Der folgende Beispielcode zeigt die Erzeugung von PBKDF2-Passworthashes für LiveConfig:

<?php
# Example code for creating PBKDF2 password hashes for LiveConfig

$password = "LiVeCoNfIg";

$iterations = rand(10000,65535);
$salt = openssl_random_pseudo_bytes(8);
$hash = hash_pbkdf2("sha1", $password, $salt, $iterations, 16, true);

$data = '{PBKDF2}' . dechex($iterations) . '$' . base64_encode($salt) . '$' . base64_encode($hash);

print "Hash: $data\n";

?>

Nachladen von AutoDeploy-Einstellungen per HTTP(S)

Über die include-Anweisung können AutoDeploy-Einstellungen von einer URL nachgeladen werden. Die minimalen Einstellungen in der autodeploy.json sehen dann zum Beispiel so aus:

{
    "version": 1,
    "include": {
        "url": "https://intra.example.org/liveconfig/autodeploy.php"
    }
}

Die aufgerufene URL muss die Daten als einzelnes JSON-Objekt mit dem Content-Type application/json zurückliefern. Die Daten von der URL werden mit denen aus der autodeploy.json zusammengeführt.

Über die IP-Adresse des aufrufenden Clients (z.B. PHP: $_SERVER['REMOTE_ADDR']) kann der jeweilige Server identifiziert und somit dynamisch individuell konfiguriert werden (insbes. Lizenzcode und Anmeldepasswort).