Nächste: , Vorige: , Nach oben: Dienste   [Inhalt][Index]


12.9.33 Guix-Dienste

Guix-Erstellungskoordinator

Der Guix-Erstellungskoordinator („Guix Build Coordinator“) hilft dabei, Erstellungen von Ableitungen auf Maschinen zu verteilen, auf denen ein Agent läuft. Der Erstellungs-Daemon wird weiterhin benutzt, um die Ableitungen zu erstellen, der Guix-Erstellungskoordinator verwaltet nur die Zuteilung der Erstellungen und den Umgang mit den Ergebnissen.

Der Guix-Erstellungskoordinator setzt sich aus einem Koordinator und mindestens einem verbundenen Agentenprozess zusammen. Der Koordinatorprozess kümmert sich um Clients, die Erstellungen einreichen, und teilt Erstellungen den Agenten zu. Die Agentenprozesse kommunizieren mit einem Erstellungs-Daemon, welcher die Erstellungen eigentlich durchführt und die Ergebnisse an den Koordinator zurückgibt.

Es gibt ein Skript, um die Koordinatorkomponente des Guix-Erstellungskoordinators auszuführen, aber der Dienst für Guix benutzt stattdessen sein eigenes Guile-Skript, was in der Konfiguration benutzte G-Ausdrücke besser integriert.

Variable: Scheme-Variable guix-build-coordinator-service-type

Diensttyp für den Guix-Erstellungskoordinator. Sein Wert muss ein guix-build-coordinator-configuration-Objekt sein.

Datentyp: guix-build-coordinator-configuration

Der Datentyp, der die Konfiguration des Guix-Erstellungskoordinators repräsentiert.

package (Vorgabe: guix-build-coordinator)

Das zu verwendende Guix-Erstellungskoordinator-Paket.

user (Vorgabe: "guix-build-coordinator")

Das Systembenutzerkonto, mit dem der Dienst ausgeführt wird.

group (Vorgabe: "guix-build-coordinator")

Die Systembenutzergruppe, mit der der Dienst ausgeführt wird.

database-uri-string (Vorgabe: "sqlite:///var/lib/guix-build-coordinator/guix_build_coordinator.db")

Die URI für die Datenbank.

agent-communication-uri (Vorgabe: "http://0.0.0.0:8745")

Die URI, die beschreibt, wie auf Anfragen von Agentenprozessen gelauscht wird.

client-communication-uri (Vorgabe: "http://127.0.0.1:8746")

Die URI, die beschreibt, wie auf Anfragen von Clients gelauscht wird. Mit der Client-API können Erstellungen eingereicht werden und derzeit findet dabei keine Authentifizierung statt. Das sollten Sie bedenken, wenn Sie hieran Einstellungen vornehmen.

allocation-strategy (Vorgabe: #~basic-build-allocation-strategy)

Ein G-Ausdruck für die zu nutzende Zuteilungsstrategie. Angegeben wird eine Prozedur, die den Datenspeicher als Argument nimmt und in den Zuteilungsplan in der Datenbank einfügt.

hooks (Vorgabe: ’())

Eine assoziative Liste mit Hooks. Mit ihnen kann infolge bestimmter Ereignisse beliebiger Code ausgeführt werden, z.B. wenn ein Erstellungsergebnis verarbeitet wird.

parallel-hooks (Vorgabe: ’())

Sie können Hooks so einstellen, dass sie parallel ausgeführt werden. Mit diesem Parameter geben Sie eine assoziative Liste an, welche der Hooks parallel ausgeführt werden sollen. Der Schlüssel ist das Symbol für den Hook und der Wert ist die Anzahl Threads, die ausgeführt werden.

guile (Vorgabe: guile-3.0-latest)

Mit welchem Guile-Paket der Guix-Erstellungskoordinator ausgeführt wird.

Variable: Scheme-Variable guix-build-coordinator-agent-service-type

Diensttyp für einen Guix-Erstellungskoordinator-Agenten. Als Wert muss ein guix-build-coordinator-agent-configuration-Objekt angegeben werden.

Datentyp: guix-build-coordinator-agent-configuration

Der Datentyp, der die Konfiguration eines Guix-Erstellungskoordinator-Agenten repräsentiert.

package (Vorgabe: guix-build-coordinator/agent-only)

Das zu verwendende Guix-Erstellungskoordinator-Paket.

user (Vorgabe: "guix-build-coordinator-agent")

Das Systembenutzerkonto, mit dem der Dienst ausgeführt wird.

coordinator (Vorgabe: "http://localhost:8745")

Das Passwort, das zum Herstellen einer Verbindung mit dem Koordinator verwendet werden soll.

authentication

Ein Verbundsobjekt, das beschreibt, wie sich dieser Agent beim Koordinator authentisiert. Mögliche Verbundsfelder werden im Folgenden beschrieben.

systems (Vorgabe: #f)

Die Systeme, für die dieser Agent Erstellungen übernehmen soll. Voreingestellt verwendet der Agentenprozess den Systemtyp, auf dem er aktuell läuft.

max-parallel-builds (Vorgabe: 1)

Die Anzahl der Erstellungen, die parallel ausgeführt werden sollen.

max-allocated-builds (Vorgabe: #f)

Wie viele Erstellungen diesem Agenten höchstens zugewiesen werden können.

max-1min-load-average (Vorgabe: #f)

Die durchschnittliche Last (Load Average), die bestimmt, ob der Koordinatoragent mit neuen Erstellungen beginnt. Wenn die Load Average über 1 Minute den angegebenen Wert übersteigt, wartet der Agent und beginnt keine zusätzlichen Erstellungen.

Wenn als Wert #f angegeben wird, wird die Einstellung nicht festgelegt und der Agent verwendet die Anzahl der Kerne, die das System meldet, als maximaler Load Average über 1 Minute.

derivation-substitute-urls (Vorgabe: #f)

URLs, von denen versucht werden soll, Substitute für Ableitungen herunterzuladen, wenn die Ableitungen noch nicht vorliegen.

non-derivation-substitute-urls (Vorgabe: #f)

URLs, von denen versucht werden soll, Substitute für Erstellungseingaben herunterzuladen, wenn die Eingabe-Store-Objekte noch nicht vorliegen.

Datentyp: guix-build-coordinator-agent-password-auth

Der Datentyp, der einen Agenten repräsentiert, der sich bei einem Koordinator über eine UUID und ein Passwort authentisiert.

uuid

Die UUID des Agenten. Sie sollte durch den Koordinatorprozess erzeugt worden sein, in der Datenbank des Koordinators eingetragen sein und von dem Agenten benutzt werden, für den sie gedacht ist.

password

Das Passwort, das zum Herstellen einer Verbindung mit dem Koordinator verwendet werden soll.

Datentyp: guix-build-coordinator-agent-password-file-auth

Der Datentyp, der einen Agenten repräsentiert, der sich bei einem Koordinator über eine UUID und ein aus einer Datei gelesenes Passwort authentisiert.

uuid

Die UUID des Agenten. Sie sollte durch den Koordinatorprozess erzeugt worden sein, in der Datenbank des Koordinators eingetragen sein und von dem Agenten benutzt werden, für den sie gedacht ist.

password-file

Eine Datei mit dem Passwort, um sich mit dem Koordinator zu verbinden.

Datentyp: guix-build-coordinator-agent-dynamic-auth

Der Datentyp, der einen Agenten repräsentiert, der sich bei einem Koordinator über einen dynamischen Authentisierungs-Token und den Agentennamen authentisiert.

agent-name

Der Name des Agenten. Er wird benutzt, um den passenden Eintrag in der Datenbank für ihn zu finden. Gibt es noch keinen Eintrag, wird automatisch einer hinzugefügt.

token

Dynamischer Authentisierungs-Token. Er wird in der Datenbank des Koordinators erzeugt und vom Agenten zur Authentisierung benutzt.

Datentyp: guix-build-coordinator-agent-dynamic-auth-with-file

Der Datentyp, der einen Agenten repräsentiert, der sich bei einem Koordinator über einen aus einer Datei gelesenen dynamischen Authentisierungs-Token und den Agentennamen authentisiert.

agent-name

Der Name des Agenten. Er wird benutzt, um den passenden Eintrag in der Datenbank für ihn zu finden. Gibt es noch keinen Eintrag, wird automatisch einer hinzugefügt.

token-file

Eine Datei, in der der dynamische Authentisierungs-Token enthalten ist. Er wird in der Datenbank des Koordinators erzeugt und vom Agenten zur Authentisierung benutzt.

Das Paket des Guix-Erstellungskoordinators enthält ein Skript, mit dem eine Instanz des Guix-Datendienstes („Guix Data Service“) nach zu erstellenden Ableitungen angefragt werden kann, woraufhin Erstellungen für selbige Ableitungen beim Koordinator eingereicht werden. Der folgende Diensttyp hilft dabei, dieses Skript einzusetzen. Es ist ein weiteres Werkzeug, das beim Erstellen von Ableitungen von Nutzen sein kann, die in einer Instanz des Guix-Datendienstes vorhanden sind.

Variable: Scheme-Variable guix-build-coordinator-queue-builds-service-type

Der Diensttyp für das Skript guix-build-coordinator-queue-builds-from-guix-data-service. Als Wert muss ein guix-build-coordinator-queue-builds-configuration-Objekt benutzt werden.

Datentyp: guix-build-coordinator-queue-builds-configuration

Der Datentyp, der die Optionen an das Skript guix-build-coordinator-queue-builds-from-guix-data-service repräsentiert.

package (Vorgabe: guix-build-coordinator)

Das zu verwendende Guix-Erstellungskoordinator-Paket.

user (Vorgabe: "guix-build-coordinator-queue-builds")

Das Systembenutzerkonto, mit dem der Dienst ausgeführt wird.

coordinator (Vorgabe: "http://localhost:8746")

Das Passwort, das zum Herstellen einer Verbindung mit dem Koordinator verwendet werden soll.

systems (Vorgabe: #f)

Für welche Systeme zu erstellende Ableitungen übernommen werden sollen.

systems-and-targets (Vorgabe: #f)

Eine assoziative Liste aus Paaren aus System und Zielplattform, für die zu erstellende Ableitungen übernommen werden sollen.

guix-data-service (Vorgabe: "https://data.guix.gnu.org")

Die Instanz des Guix-Datendienstes, die nach zu erstellenden Ableitungen angefragt werden soll.

guix-data-service-build-server-id (Vorgabe: #f)

Die Server-ID des Erstellungsservers des Guix-Datendienstes, wo die Erstellungen stattfinden. So wird das Einreichen von Erstellungen beschleunigt, weil für bereits erstellte Ableitungen dann keine Erstellungsanfrage an den Koordinator mehr nötig ist.

processed-commits-file (Vorgabe: "/var/cache/guix-build-coordinator-queue-builds/processed-commits")

Eine Datei, in die gespeichert wird, welche Commits bereits verarbeitet wurden, um sie nicht unnötig ein weiteres Mal zu verarbeiten, wenn der Dienst neu gestartet wird.

Guix-Datendienst

Der Guix-Datendienst („Guix Data Service“) verarbeitet und speichert Daten über GNU Guix und stellt diese zur Verfügung. Dazu gehören Informationen über Pakete, Ableitungen sowie durch Linting erkannte Paketfehler.

Die Daten werden in einer PostgreSQL-Datenbank gespeichert und stehen über eine Weboberfläche zur Verfügung.

Variable: Scheme-Variable guix-data-service-type

Diensttyp für den Guix-Datendienst. Sein Wert muss ein guix-data-service-configuration-Objekt sein. Der Dienst kann optional den getmail-Dienst erweitern und die guix-commits-Mailing-Liste benutzen, um bei Änderungen am Guix-Git-Repository auf dem Laufenden zu bleiben.

Datentyp: guix-data-service-configuration

Der Datentyp, der die Konfiguration des Guix-Datendienstes repräsentiert.

package (Vorgabe: guix-data-service)

Das zu verwendende Guix-Datendienst-Paket.

user (Vorgabe: "guix-data-service")

Das Systembenutzerkonto, mit dem der Dienst ausgeführt wird.

group (Vorgabe: "guix-data-service")

Die Systembenutzergruppe, mit der der Dienst ausgeführt wird.

port (Vorgabe: 8765)

Der Port, an den der Webdienst gebunden wird.

host (Vorgabe: "127.0.0.1")

Rechnername oder Netzwerkschnittstelle, an die der Webdienst gebunden wird.

getmail-idle-mailboxes (Vorgabe: #f)

Wenn es festgelegt ist, wird es als Liste der Postfächer („Mailboxes“) eingerichtet, die der getmail-Dienst beobachtet.

commits-getmail-retriever-configuration (Vorgabe: #f)

Wenn es festgelegt ist, bezeichnet dies das getmail-retriever-configuration-Objekt, mit dem getmail eingerichtet wird, um E-Mails von der „guix-commits“-Mailing-Liste zu beziehen.

extra-options (Vorgabe: ’())

Zusätzliche Befehlszeilenoptionen für guix-data-service.

extra-process-jobs-options (Vorgabe: ’())

Zusätzliche Befehlszeilenoptionen für guix-data-service-process-jobs.

Nar Herder

Der Nar Herder ist ein Werkzeug zum Umgang mit einer Menge von Nars.

Variable: Scheme-Variable nar-herder-type

Ein Diensttyp für den Guix-Datendienst. Sein Wert muss ein nar-herder-configuration-Objekt sein. Der Dienst kann optional den getmail-Dienst erweitern und die guix-commits-Mailing-Liste benutzen, um bei Änderungen am Guix-Git-Repository auf dem Laufenden zu bleiben.

Datentyp: nar-herder-configuration

Der Datentyp, der die Konfiguration des Guix-Datendienstes repräsentiert.

package (Vorgabe: nar-herder)

Das zu verwendende Nar-Herder-Paket.

user (Vorgabe: "nar-herder")

Das Systembenutzerkonto, mit dem der Dienst ausgeführt wird.

group (Vorgabe: "nar-herder")

Die Systembenutzergruppe, mit der der Dienst ausgeführt wird.

port (Vorgabe: 8734)

Der Port, an den der Server gebunden wird.

host (Vorgabe: "127.0.0.1")

Rechnername oder Netzwerkschnittstelle, an die der Server gebunden wird.

mirror (Vorgabe: #f)

Optional die URL der anderen Nar-Herder-Instanz, wenn diese gespiegelt werden soll. Das bedeutet, die hiesige Nar-Herder-Instanz wird die Datenbank von dort herunterladen und auf dem aktuellen Stand halten.

database (Vorgabe: "/var/lib/nar-herder/nar_herder.db")

Wo die Datenbank gespeichert wird. Wenn die hiesige Nar-Herder-Instanz eine von anderswo spiegelt, wird die Datenbank von dort heruntergeladen, wenn noch keine existiert. Wenn keine andere Nar-Herder-Instanz gespiegelt wird, wird eine leere Datenbank angelegt.

database-dump (Vorgabe: "/var/lib/nar-herder/nar_herder_dump.db")

Der Ort für das Datenbank-Dump. Es wird erzeugt und regelmäßig aktualisiert, indem eine Kopie der Datenbank gemacht wird. Es handelt sich um die Version der Datenbank, die zum Herunterladen angeboten wird.

storage (Vorgabe: #f)

Optional der Ort, wo Nars gespeichert werden.

storage-limit (Vorgabe: "none")

Wie viele Bytes die am Speicherort hinterlegten Nars höchstens einnehmen. Wenn „none“ angegeben wird, gibt es keine Begrenzung.

Wenn am Speicherort mehr hinterlegt ist als hier angegeben ist, werden Nars gemäß storage-nar-removal-criteria gelöscht.

storage-nar-removal-criteria (Vorgabe: '())

Nach welchen Kriterien Nars aus dem Speicherort gelöscht werden. Sie werden in Verbindung mit storage-limit angewandt.

Wenn die Größe am Speicherort storage-limit überschreitet, werden Nars gemäß der hier angegebenen Löschkriterien überprüft und, wenn irgendein Kriterium erfüllt wird, gelöscht. Das geht so weiter, bis die vom Speicherort eingenommene Größe unterhalb von storage-limit liegt.

Jedes Kriterium wird in Form einer Zeichenkette, dann einem Gleichheitszeichen, dann noch einer Zeichenkette festgelegt. Derzeit wird nur ein Kriterium unterstützt, nämlich ob ein Nar schon auf einer anderen Nar-Herder-Instanz vorliegt.

ttl (Vorgabe: #f)

Cache-Control-HTTP-Kopfzeilen erzeugen, die eine Time-to-live (TTL) von ttl signalisieren. Für ttl muss eine Dauer (mit dem Anfangsbuchstaben der Maßeinheit der Dauer im Englischen) angegeben werden: 5d bedeutet 5 Tage, 1m bedeutet 1 Monat und so weiter.

Das ermöglicht es Guix, Substitutinformationen ttl lang zwischenzuspeichern.

negative-ttl (Vorgabe: #f)

Eben solche Cache-Control-HTTP-Kopfzeilen für erfolglose (negative) Suchen erzeugen, um eine Time-to-live (TTL) zu signalisieren, wenn Store-Objekte fehlen und mit dem HTTP-Status-Code 404 geantwortet wird. Nach Vorgabe wird für negative Antworten keine TTL signalisiert.

log-level (Vorgabe: 'DEBUG)

Die Protokollstufe, etwa 'INFO, um nicht einzelne Anfragen zu protokollieren.


Nächste: Linux-Dienste, Vorige: PAM-Einbindedienst, Nach oben: Dienste   [Inhalt][Index]