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


11.10.34 Guix-Dienste

Build Farm Front-End (BFFE)

Das Build Farm Front-End zum Bedienen von Erstellungsfarmen hilft, große Mengen von Guix-Paketen erstellen zu lassen. Damit werden Erstellungen angenommen und der Status der Erstellungsfarmen angezeigt.

Variable: bffe-service-type

Diensttyp für das Build Farm Front-End zum Bedienen von Erstellungsfarmen. Sein Wert muss ein bffe-configuration-Objekt sein.

Datentyp: bffe-configuration

Dieser Datentyp repräsentiert die Konfiguration des Build Farm Front-End.

package (Vorgabe: bffe)

Welches Paket für das Build Farm Front-End benutzt werden soll.

user (Vorgabe: "bffe")

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

group (Vorgabe: "bffe")

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

arguments

Eine Liste von Argumenten, die ans Build Farm Front-End übergeben werden sollen. Dabei handelt es sich um die Argumente an die Prozedur run-bffe-service, mit der der Dienst gestartet wird.

Zum Beispiel kann mit folgendem Wert das Build Farm Front-End dazu gebracht werden, die auf data.guix.gnu.org zur Verfügung gestellten Ableitungen an der Erstellungskoordinator-Instanz einzureichen, wobei angenommen wird, dass der Koordinator auf derselben Maschine läuft.

(list
 #:build
 (list
  (build-from-guix-data-service
   (data-service-url "https://data.guix.gnu.org")
   (build-coordinator-url "http://127.0.0.1:8746")
   (branches '("master"))
   (systems '("x86_64-linux" "i686-linux"))
   (systems-and-targets
    (map (lambda (target)
           (cons "x86_64-linux" target))
         '("aarch64-linux-gnu"
           "i586-pc-gnu")))
   (build-priority (const 0))))
 #:web-server-args
 '(#:event-source "https://example.com"
   #:controller-args
   (#:title "example.com build farm")))
extra-environment-variables (Vorgabe: ’())

Zusätzliche Umgebungsvariable, die mit dem Shepherd-Dienst festgelegt werden.

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: 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.

extra-environment-variables (Vorgabe: ’())

Zusätzliche Umgebungsvariable, die mit dem Shepherd-Dienst festgelegt werden.

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-parallel-uploads (Vorgabe: 1)

Die Anzahl, wie viele parallel hochgeladen 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.

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: 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.

Guix-Home-Dienst

Der Guix-Home-Dienst ermöglicht es, von Guix System aus die Persönlichen Umgebungen eines oder mehrerer Benutzer aufzuspielen (siehe Persönliche Konfiguration für mehr zu Guix Home). Auf diese Weise werden die Deklarationen der Persönlichen Umgebung der angegebenen Benutzerkonten in die Systemkonfiguration eingebettet und im Einklang mit dieser zur selben Zeit ausgerollt, was den Benutzerinnen und Benutzern die Mühe erspart, jeweils selbst guix home reconfigure auszulösen.

Variable: guix-home-service-type

Diensttyp für den Guix-Home-Dienst. Sein Wert muss eine Liste von Listen aus jeweils dem Benutzerkonto und der zugehörigen Persönlichen Umgebung sein. In jedem solchen Paar wird das Benutzerkonto als Zeichenkette angegeben, die den Schlüssel angibt, für welchen Benutzer die Umgebung aufgespielt wird, und der Wert ist die Konfiguration der Persönlichen Umgebung.

(use-modules (gnu home))

(define my-home
  (home-environment
    ))

(operating-system
  (services (append (list (service guix-home-service-type
                                   `(("alice" ,my-home))))
                    %base-services)))

Dieser Dienst kann durch andere Dienste mit weiteren Persönlichen Umgebungen erweitert werden, wie in diesem Beispiel:

(simple-service 'my-extra-home home-service-type
                `(("bob" ,my-extra-home))))

Nar Herder

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

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.

new-ttl (Vorgabe: #f)

If specified, this will override the ttl setting when used for the Cache-Control headers, but this value will be used when scheduling the removal of nars.

Use this setting when the TTL is being reduced to avoid removing nars while clients still have cached narinfos.

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.

cached-compressions (Vorgabe: '())

Aktiviert das Befüllen eines Zwischenspeichers für Nars mit anderen Kompressionsmethoden als bei den gespeicherten Nars. Geben Sie dazu eine Liste von nar-herder-cached-compression-configuration-Verbundsobjekten an.

min-uses (Vorgabe: 3)

Wenn cached-compressions aktiviert sind, werden Nars zwischengespeichert, sobald die hier genannte Anzahl von Anfragen nach dem Nar eingegangen ist.

workers (Vorgabe: 2)

Wie viele zwischengespeicherte Nars auf einmal erzeugt werden.

nar-source (Vorgabe: #f)

Woher Nars bezogen werden, um zwischengespeicherte komprimierte Nars zu berechnen. Für den Vorgabewert wird der Speicherort benutzt.

extra-environment-variables (Vorgabe: '())

Zusätzliche Umgebungsvariable, die mit dem Shepherd-Dienst festgelegt werden.

Datentyp: nar-herder-cached-compression-configuration

Der Datentyp repräsentiert die Konfiguration für zwischengespeicherte komprimierte Nars.

type

Welche Kompressionsmethode benutzt wird, z.B. 'zstd.

workers (Vorgabe: #f)

Das zu benutzende Kompressionsniveau.

directory (Vorgabe: #f)

An welchem Ort zwischengespeicherte Nars abgelegt werden. Wenn nichts angegeben wird, dann werden sie in /var/cache/nar-herder/nar/type gespeichert.

directory-max-size (Vorgabe: #f)

Die Maximalgröße in Bytes für dieses Verzeichnis.

unused-removal-duration (Vorgabe: #f)

If a cached nar isn’t used for unused-removal-duration, it will be scheduled for removal.

unused-removal-duration muss eine Dauer angeben: 5d bedeutet 5 Tage, 1m bedeutet 1 Monat und so weiter.

ttl (Vorgabe: #f)

If specified this overrides the ttl used for narinfos when this cached compression is available.

new-ttl (Vorgabe: #f)

As with the new-ttl option for nar-herder-configuration, this value will override the ttl when used for narinfo requests.


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