Suivant: , Précédent: , Monter: Services   [Table des matières][Index]


8.8.24 services de virtualisation

Le module (gnu services virtualization) fournit des services pour les démons libvirt et virtlog, ainsi que d’autres services liés à la virtualisation.

démon libvirt

libvirtd est le démon côté serveur du système de gestion de virtualisation libvirt. Ce démon tourne sur des serveurs hôtes et effectue les taches de gestion requises pour les clients virtualisés.

Variable Scheme : libvirt-service-type

C’est le type du démon libvirt. Sa valeur doit être un libvirt-configuration.

(service libvirt-service-type
         (libvirt-configuration
          (unix-sock-group "libvirt")
          (tls-port "16555")))

Les champs de libvirt-configuration disponibles sont :

paramètre de libvirt-configuration : package libvirt

Paquet libvirt.

paramètre de libvirt-configuration : boolean listen-tls?

Indique s’il faut écouter des connexions TLS sécurisées sur le port TCP/IP public. Vous devez remplir le champ listen pour que cela ait un effet.

Il est nécessaire de mettre en place une CA et de créer un certificat serveur avant d’utiliser cette fonctionnalité.

La valeur par défaut est ‘#t’.

paramètre de libvirt-configuration : boolean listen-tcp?

Écoute des connexions non-chiffrées sur le port TCP/IP public. Vous devez remplir le champ listen pour que cela ait un effet.

L’utilisation des sockets TCP requiert une authentification SASL par défaut. Seuls les mécanismes SASL qui supportent le chiffrement des données sont permis. Il s’agit de DIGEST_MD5 et GSSAPI (Kerberos5).

La valeur par défaut est ‘#f’.

paramètre de libvirt-configuration : string tls-port

Port pour accepter les connexions TLS sécurisées. Il peut s’agir d’un numéro de port ou d’un nom de service

La valeur par défaut est ‘"16514"’.

paramètre de libvirt-configuration : string tcp-port

Port sur lequel accepter les connexions TCP non sécurisées. Cela peut être un numéro de port ou un nom de service

La valeur par défaut est ‘"16509"’.

paramètre de libvirt-configuration : string listen-addr

Adresse IP ou nom d’hôte utilisé pour les connexions des clients.

La valeur par défaut est ‘"0.0.0.0"’.

paramètre de libvirt-configuration : boolean mdns-adv?

Indique s’il faut publier le service libvirt en mDNS.

Autrement, vous pouvez désactiver cela pour tous les services en stoppant le démon Avahi.

La valeur par défaut est ‘#f’.

paramètre de libvirt-configuration : string mdns-name

Nom publié par défaut sur mDNS. Cela doit être unique sur le réseau local.

La valeur par défaut est ‘"Virtualization Host <hostname>"’.

paramètre de libvirt-configuration : string unix-sock-group

Groupe propriétaire du socket Unix domain. Cela peut être utilisé pour permettre à un ensemble d’utilisateurs « de confiance » de gérer les fonctionnalités sans devenir root.

La valeur par défaut est ‘"root"’.

paramètre de libvirt-configuration : string unix-sock-ro-perms

Permission Unix pour le socket en lecture seule. Il est utilisé pour surveiller le statut des VM uniquement.

La valeur par défaut est ‘"0777"’.

paramètre de libvirt-configuration : string unix-sock-rw-perms

Permission Unix pour le socket en lecture-écriture. La valeur par défaut n’autorise que root. Si PolicyKit est activé sur le socket, la valeur par défaut change et permet tout le monde (c.-à-d. 0777).

La valeur par défaut est ‘"0770"’.

paramètre de libvirt-configuration : string unix-sock-admin-perms

Permissions Unix pour le socket d’administration. La valeur par défaut ne permet que le propriétaire (root), ne la changez pas à moins que vous ne soyez sûr de savoir à qui vous exposez cet accès.

La valeur par défaut est ‘"0777"’.

paramètre de libvirt-configuration : string unix-sock-dir

Le répertoire dans lequel les sockets sont créés.

La valeur par défaut est ‘"/var/run/libvirt"’.

paramètre de libvirt-configuration : string auth-unix-ro

Schéma d’authentification pour les socket Unix en lecture-seule. Par défaut les permissions des socket permettent à n’importe qui de se connecter

La valeur par défaut est ‘"polkit"’.

paramètre de libvirt-configuration : string auth-unix-rw

Schéma d’authentification pour les socket UNIX en lecture-écriture. Par défaut les permissions du socket ne permettent que root. Si le support de PolicyKit a été compilé dans libvirt, la valeur par défaut utilise l’authentification « polkit ».

La valeur par défaut est ‘"polkit"’.

paramètre de libvirt-configuration : string auth-tcp

Schéma d’authentification pour les sockets TCP. Si vous n’avez pas activé SASL, alors tout le trafic TCP est en clair. Ne le faites pas en dehors de scénario de développement ou de test.

La valeur par défaut est ‘"sasl"’.

paramètre de libvirt-configuration : string auth-tls

Schéma d’authentification pour les sockets TLS. Les sockets TLS sont déjà chiffrés par la couche TLS, et une authentification limitée est effectuée avec les certificats.

Il est possible d’utiliser de n’importe quel mécanisme d’authentification SASL en utilisant « sasl » pour cette option

La valeur par défaut est ‘"none"’.

paramètre de libvirt-configuration : optional-list access-drivers

Schéma de contrôle d’accès à l’API.

Par défaut un utilisateur authentifié peut accéder à toutes les API. Les pilotes d’accès peuvent placer des restrictions là-dessus.

La valeur par défaut est ‘()’.

paramètre de libvirt-configuration : string key-file

Chemin de fichier de la clef du serveur. Si la valeur est une chaîne vide, aucune clef privée n’est chargée.

La valeur par défaut est ‘""’.

paramètre de libvirt-configuration : string cert-file

Chemin de fichier de la clef du serveur. Si la chaîne est vide, aucun certificat n’est chargé.

La valeur par défaut est ‘""’.

paramètre de libvirt-configuration : string ca-file

Chemin de fichier de la clef du serveur. Si la chaîne est vide, aucun certificat de CA n’est chargé.

La valeur par défaut est ‘""’.

paramètre de libvirt-configuration : string crl-file

Chemin de la liste de révocation des certificats. Si la chaîne est vide, aucun CRL n’est chargé.

La valeur par défaut est ‘""’.

paramètre de libvirt-configuration : boolean tls-no-sanity-cert

Désactive la vérification de nos propres certificats serveurs.

Lorsque libvirtd démarre il effectue des vérifications de routine sur ses propres certificats.

La valeur par défaut est ‘#f’.

paramètre de libvirt-configuration : boolean tls-no-verify-cert

Désactive la vérification des certificats clients.

La vérification des certificats clients est le mécanisme d’authentification principal. Tout client qui ne présent pas de certificat signé par la CA sera rejeté.

La valeur par défaut est ‘#f’.

paramètre de libvirt-configuration : optional-list tls-allowed-dn-list

Liste blanche des Distinguished Name x509 autorisés.

La valeur par défaut est ‘()’.

paramètre de libvirt-configuration : optional-list sasl-allowed-usernames

Liste blanche des noms d’utilisateur SASL permis. Le format des noms d’utilisateurs dépend du mécanisme d’authentification SASL.

La valeur par défaut est ‘()’.

paramètre de libvirt-configuration : string tls-priority

Modifie la chaîne de priorité TLS par défaut fixée à la compilation. La valeur par défaut est typiquement « NORMAL » à moins qu’elle n’ait été modifiée à la compilation. Ne l’indiquez que si vous voulez que libvirt agisse différemment des paramètres par défaut globaux.

La valeur par défaut est ‘"NORMAL"’.

paramètre de libvirt-configuration : integer max-clients

Nombre maximum de connexions clientes en même temps sur tous les sockets.

La valeur par défaut est ‘5000’.

paramètre de libvirt-configuration : integer max-queued-clients

Longueur maximum de la queue de connexions en attente d’acceptation du démon. Remarquez que certains protocoles supportant la retransmission peuvent obéir à ce paramètre pour qu’une connexion ultérieure réussisse.

La valeur par défaut est ‘1000’.

paramètre de libvirt-configuration : integer max-anonymous-clients

Longueur maximum de la queue des clients acceptés mais pas authentifiés. Indiquez zéro pour désactiver ce paramètre

La valeur par défaut est ‘20’.

paramètre de libvirt-configuration : integer min-workers

Nombre de processus de travail démarrés initialement.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer max-workers

Nombre maximum de threads de travail.

Si le nombre de clients actifs dépasse min-workers, plus de threads seront démarrés, jusqu’à la limite de max_workers. Typiquement vous voulez que max_workers soit égal au nombre maximum de clients permis.

La valeur par défaut est ‘20’.

paramètre de libvirt-configuration : integer prio-workers

Nombre de travailleurs prioritaires. Si tous les threads de travail du groupe ci-dessus sont bloqués, certains appels marqués comme prioritaires (notamment domainDestroy) peuvent être exécutés par ce groupe.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer max-requests

Limite globale totale sur les appels RPC concurrents.

La valeur par défaut est ‘20’.

paramètre de libvirt-configuration : integer max-client-requests

Limite de requêtes concurrentes depuis une connexion cliente unique. Pour éviter qu’un client ne monopolise le serveur, vous devriez indiquer une petite partie des paramètres global max_requests et max_workers.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer admin-min-workers

Comme min-workers mais pour l’interface d’administration.

La valeur par défaut est ‘1’.

paramètre de libvirt-configuration : integer admin-max-workers

Comme max-workers mais pour l’interface d’administration.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer admin-max-clients

Comme max-clients mais pour l’interface d’administration.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer admin-max-queued-clients

Comme max-queued-clients mais pour l’interface d’administration.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer admin-max-client-requests

Comme max-client-requests mais pour l’interface d’administration.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer log-level

Niveau de journalisation. 4 : erreurs, 3 : avertissements, 2 : information, 1 : débogage.

La valeur par défaut est ‘3’.

paramètre de libvirt-configuration : string log-filters

Filtres de journalisation.

Un filtre qui permet de sélectionner plusieurs niveaux de journalisation pour une catégorie donnée. Le format d’un filtre est :

nom est une chaîne de caractères qui correspond à la catégorie donnée dans VIR_LOG_INIT() au début de chaque fichier source de libvirt, p. ex. « remote », « qemu » ou « util.json » (le nom dans le filtre peut être une sous-chaîne du nom complet de la catégorie, pour pouvoir correspondre à plusieurs catégories similaires), le préfixe facultatif « + » dit à libvirt d’enregistrer les traces de piles pour chaque message qui correspond au nom, et x est le niveau minimal des messages qui devraient être enregistrés :

On peut définir plusieurs filtres dans une seule déclaration de filtres, ils doivent juste être séparés par des espaces.

La valeur par défaut est ‘"3:remote 4:event"’.

paramètre de libvirt-configuration : string log-outputs

Sorties de débogage.

Une sortie est l’un des endroits où les journaux sont enregistrés. Le format d’une sortie peut être :

x:stderr

la sortie va vers stderr

x:syslog:nom

utilise syslog comme sortie et utilise le nom donné comme identifiant

x:file:chemin_fichier

la sortie va vers un fichier, avec le chemin donné

x:journald

la sortie va vers le système de journalisation journald

Dans tous les cas, le préfixe x est le niveau minimal, qui agit comme un filtre

Plusieurs sorties peuvent être définies, elles doivent juste être séparées par des espaces.

La valeur par défaut est ‘"3:stderr"’.

paramètre de libvirt-configuration : integer audit-level

Permet de modifier l’utilisation du sous-système d’audit

La valeur par défaut est ‘1’.

paramètre de libvirt-configuration : boolean audit-logging

Envoie les messages d’audit via l’infrastructure de journalisation de libvirt.

La valeur par défaut est ‘#f’.

paramètre de libvirt-configuration : optional-string host-uuid

UUID de l’hôte. L’UUID ne doit pas avoir tous ses nombres identiques.

La valeur par défaut est ‘""’.

paramètre de libvirt-configuration : string host-uuid-source

Source où lire l’UUID de l’hôte.

Si dmidecode ne fournit pas un UUID valide, un UUID temporaire sera généré.

La valeur par défaut est ‘"smbios"’.

paramètre de libvirt-configuration : integer keepalive-interval

Un message keepalive est envoyé au client après keepalive_interval secondes d’inactivité pour vérifier si le client répond toujours. Si la valeur est -1, libvirtd n’enverra jamais de requête keepalive ; cependant les clients peuvent toujours en envoyer et le démon y répondra.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer keepalive-count

Nombre maximum de messages keepalive qui peuvent être envoyés au client sans réponse avant que la connexion ne soit considérée comme cassée.

En d’autres termes, la connexion est approximativement fermée après keepalive_interval * (keepalive_count + 1) secondes après le dernier message reçu de la part du client. Lorsque keepalive-count est à 0, les connexions seront automatiquement fermées après keepalive-interval secondes d’inactivité sans envoyer le moindre message keepalive.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer admin-keepalive-interval

Comme précédemment, mais pour l’interface d’administration.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer admin-keepalive-count

Comme précédemment, mais pour l’interface d’administration.

La valeur par défaut est ‘5’.

paramètre de libvirt-configuration : integer ovs-timeout

Délai d’attente pour les appels Open vSwitch.

L’utilitaire ovs-vsctl est utilisé pour la configuration et son option de délai d’attente est à 5 secondes pour éviter qu’une attente infinie ne bloque libvirt.

La valeur par défaut est ‘5’.

démon Virrlog

Le service virtlogd est un démon côté serveur qui fait partie de libvirt, utilisé pour gérer les journaux des consoles des machines virtuelles.

Ce démon n’est pas utilisé directement par les clients libvirt, mais il est appelé pour eux par libvirtd. En maintenant les journaux dans un démon séparé, le démon libvirtd principal peut être redémarré sans risque de perte de journaux. Le démon virtlogd a la possibilité de ré-exécuter exec() sur lui-même quand il reçoit SIGUSR1, pour permettre des mises à jour à chaux sans temps mort.

Variable Scheme : virtlog-service-type

Le type de service pour le démon virtlogd. Sa valeur doit être un virtlog-configuration.

(service virtlog-service-type
         (virtlog-configuration
          (max-clients 1000)))
paramètre de virtlog-configuration : integer log-level

Niveau de journalisation. 4 : erreurs, 3 : avertissements, 2 : information, 1 : débogage.

La valeur par défaut est ‘3’.

paramètre de virtlog-configuration : string log-filters

Filtres de journalisation.

Un filtre qui permet de sélectionner plusieurs niveaux de journalisation pour une catégorie donnée. Le format d’un filtre est :

nom est une chaîne de caractères qui correspond à la catégorie donnée dans VIR_LOG_INIT() au début de chaque fichier source de libvirt, p. ex. « remote », « qemu » ou « util.json » (le nom dans le filtre peut être une sous-chaîne du nom complet de la catégorie, pour pouvoir correspondre à plusieurs catégories similaires), le préfixe facultatif « + » dit à libvirt d’enregistrer les traces de piles pour chaque message qui correspond au nom, et x est le niveau minimal des messages qui devraient être enregistrés :

On peut définir plusieurs filtres dans une seule déclaration de filtres, ils doivent juste être séparés par des espaces.

La valeur par défaut est ‘"3:remote 4:event"’.

paramètre de virtlog-configuration : string log-outputs

Sorties de débogage.

Une sortie est l’un des endroits où les journaux sont enregistrés. Le format d’une sortie peut être :

x:stderr

la sortie va vers stderr

x:syslog:nom

utilise syslog comme sortie et utilise le nom donné comme identifiant

x:file:chemin_fichier

la sortie va vers un fichier, avec le chemin donné

x:journald

la sortie va vers le système de journalisation journald

Dans tous les cas, le préfixe x est le niveau minimal, qui agit comme un filtre

Plusieurs sorties peuvent être définies, elles doivent juste être séparées par des espaces.

La valeur par défaut est ‘"3:stderr"’.

paramètre de virtlog-configuration : integer max-clients

Nombre maximum de connexions clientes en même temps sur tous les sockets.

La valeur par défaut est ‘1024’.

paramètre de virtlog-configuration : integer max-size

Taille de fichier maximale avant roulement.

La valeur par défaut est ‘2MB’.

paramètre de virtlog-configuration : integer max-backups

Nombre maximal de fichiers de sauvegardes à garder.

La valeur par défaut est ‘3’.

Émulation transparente avec QEMU

qemu-binfmt-service-type fournit le support de l’émulation transparente de binaires construits pour des architectures différentes — p. ex. il permet d’exécuter de manière transparente des programmes ARMv sur une machine x86_64. Cela se fait en combinant l’émulateur QEMU et la fonctionnalité binfmt_misc du noyau Linux.

Variable Scheme : qemu-binfmt-service-type

Le type du service QEMU/binfmt pour l’émulation transparente. Sa valeur doit être un objet qemu-binfmt-configuration, qui spécifie le paquet QEMU à utiliser ainsi que l’architecture que vous voulez émuler :

Dans cet exemple, on active l’émulation transparente pour les plateformes ARM et aarch64. Lancer herd stop qemu-binfmt l’éteint et lancer herd start qemu-binfmt le rallume (voir the herd command dans The GNU Shepherd Manual).

Type de données : qemu-binfmt-configuration

La configuration du service qemu-binfmt.

platforms (par défaut : '())

La liste des plates-formes émulées par QEMU. Chaque élément doit être un objet platform object tel que renvoyé par lookup-qemu-platforms (voir plus bas).

guix-support? (par défaut : #f)

Lorsque la valeur est vraie, QEMU et toutes ses dépendances sont ajoutés à l’environnement de construction de guix-daemon (voir --chroot-directory option). Cela permet d’utiliser les gestionnaires binfmt_misc dans l’environnement de cosntruction, ce qui signifie que vous pouvez construire des programmes pour d’autres architectures de manière transparente.

Par exemple, supposons que vous soyez sur une machine x86_64 et que vous avez ce services :

Vous pouvez lancer :

guix build -s armhf-linux inkscape

et cela construira Inkscape pour ARMv7 comme s’il s’agissait d’une construction native, de manière transparente avec QEMU pour émuler un CPU ARMv7. Plutôt pratique si vous voulez tester un paquet construit pour une architecture à laquelle vous n’avez pas accès !

qemu (par défaut : qemu)

Le paquet QEMU à utiliser.

Procédure Scheme : lookup-qemu-platforms platforms

Renvoie la liste des objets de plates-formes QEMU correspondant à platforms…. platforms doit être une liste de chaînes de caractères correspondant aux noms de plates-formes, comme "arm", "sparc", "mips64el" etc.

Procédure Scheme : qemu-platform? obj

Renvoie vrai s iobj est un objet de plate-forme.

Procédure Scheme : qemu-platform-name platform

Renvoie le nom de platform — une chaîne comme "arm".


Suivant: , Précédent: , Monter: Services   [Table des matières][Index]