Rechercher

5.3. Personnalisations d'images prises en charge

download PDF

Vous pouvez personnaliser votre image en ajoutant à votre plan un paquetage RPM supplémentaire, en activant un service ou en personnalisant un paramètre de la ligne de commande du noyau. Vous pouvez utiliser plusieurs personnalisations d'image dans les blueprints. Pour utiliser ces options, vous devez configurer les personnalisations dans le blueprint et l'importer (push) dans le constructeur d'images.

Note

Ces personnalisations ne sont pas prises en charge lors de l'utilisation du constructeur d'images dans la console web.

Sélectionner un groupe de paquets
[[packages]]
name = "package_group_name"

Remplacez "package_group_name" par le nom du groupe. Par exemple, "@server with gui".

Définir le nom d'hôte de l'image
[customizations]
hostname = "baseimage"
Spécifications utilisateur pour l'image système résultante
[[customizations.user]]
name = "USER-NAME"
description = "USER-DESCRIPTION"
password = "PASSWORD-HASH"
key = "PUBLIC-SSH-KEY"
home = "/home/USER-NAME/"
shell = "/usr/bin/bash"
groups = ["users", "wheel"]
uid = NUMBER
gid = NUMBER

Le GID est facultatif et doit déjà exister dans l'image. Il peut être créé par un paquet ou par le plan directeur à l'aide de l'entrée [[customizations.group]].

Important

Pour générer le fichier password hash, vous devez installer python3 sur votre système.

# dnf install python3

Remplacez PASSWORD-HASH par l'actuel password hash. Pour générer password hash, utilisez une commande telle que :

$ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

Remplacez PUBLIC-SSH-KEY par la clé publique réelle.

Remplacez les autres espaces réservés par des valeurs appropriées.

Vous devez saisir l'adresse name. Vous pouvez omettre toutes les lignes dont vous n'avez pas besoin.

Répétez ce bloc pour chaque utilisateur à inclure.

Spécifications du groupe pour l'image système résultante
[[customizations.group]]
name = "GROUP-NAME"
gid = NUMBER

Répétez ce bloc pour chaque groupe à inclure.

Définir la clé SSH d'un utilisateur existant
[[customizations.sshkey]]
user = "root"
key = "PUBLIC-SSH-KEY"
Note

La personnalisation "Définir la clé SSH d'un utilisateur existant" ne s'applique qu'aux utilisateurs existants. Pour créer un utilisateur et définir une clé SSH, voir la personnalisation User specifications for the resulting system image.

Ajouter une option de paramètre de démarrage du noyau aux valeurs par défaut
[customizations.kernel]
append = "KERNEL-OPTION"
Par défaut, le constructeur d'images intègre un noyau par défaut dans l'image. Mais vous pouvez personnaliser le noyau avec la configuration suivante dans le blueprint
[customizations.kernel]
name = "KERNEL-rt"
Définir un nom de noyau à utiliser dans une image
[customizations.kernel.name]
name = "KERNEL-NAME"
Définir le fuseau horaire et les serveurs Network Time Protocol (NTP) pour l'image système résultante
[customizations.timezone]
timezone = "TIMEZONE"
ntpservers = "NTP_SERVER"

Si vous ne définissez pas de fuseau horaire, le système utilise par défaut Universal Time, Coordinated (UTC) . La définition de serveurs NTP est facultative.

Définir les paramètres linguistiques de l'image système résultante
[customizations.locale]
languages = ["LANGUAGE"]
keyboard = "KEYBOARD"

Le paramétrage de la langue et des options du clavier est obligatoire. Vous pouvez ajouter de nombreuses autres langues. La première langue que vous ajoutez sera la langue principale et les autres langues seront secondaires. Par exemple, la première langue ajoutée sera la langue principale et les autres langues seront secondaires :

[customizations.locale]
languages = ["en_US.UTF-8"]
keyboard = "us"

Pour dresser la liste des valeurs prises en charge par les langues, exécutez la commande suivante :

$ localectl list-locales

Pour dresser la liste des valeurs prises en charge par le clavier, exécutez la commande suivante :

$ localectl list-keymaps
Définir le pare-feu pour l'image système résultante
[customizations.firewall]
port = ["PORTS"]

Pour activer les listes, vous pouvez utiliser des ports numériques ou leurs noms dans le fichier /etc/services.

Personnaliser les services de pare-feu

Examinez les services de pare-feu disponibles.

$ firewall-cmd --get-services

Dans le plan, sous la section customizations.firewall.service, indiquez les services de pare-feu que vous souhaitez personnaliser.

[customizations.firewall.services]
enabled = ["SERVICES"]
disabled = ["SERVICES"]

Les services répertoriés dans firewall.services sont différents des noms de services disponibles dans le fichier /etc/services.

Note

Si vous ne souhaitez pas personnaliser les services de pare-feu, omettez les sections [customizations.firewall] et [customizations.firewall.services] du plan.

Définir les services à activer pendant le démarrage
[customizations.services]
enabled = ["SERVICES"]
disabled = ["SERVICES"]

Vous pouvez contrôler les services à activer pendant le démarrage. Certains types d'images ont déjà des services activés ou désactivés pour s'assurer que l'image fonctionne correctement et cette configuration ne peut pas être remplacée. La personnalisation de [customizations.services] dans le blueprint ne remplace pas ces services, mais les ajoute à la liste des services déjà présents dans les modèles d'image.

Note

Chaque fois qu'une compilation démarre, elle clone le référentiel du système hôte. Si vous vous référez à un référentiel avec un historique important, le clonage peut prendre un certain temps et utiliser une quantité importante d'espace disque. De plus, le clone est temporaire et la compilation le supprime après avoir créé le paquetage RPM.

Spécifier une configuration personnalisée du système de fichiers

Vous pouvez spécifier une configuration de système de fichiers personnalisée dans vos blueprints et créer ainsi des images avec une disposition de disque spécifique, au lieu de la configuration par défaut. L'utilisation d'une configuration différente de la configuration par défaut dans vos blueprints vous permet de bénéficier des avantages suivants

  • sécurité benchmark conformité
  • protection contre les erreurs hors disque
  • amélioration des performances
  • cohérence avec les installations existantes

    Pour personnaliser la configuration du système de fichiers dans votre projet :

    [[customizations.filesystem]]
    mountpoint = "MOUNTPOINT"
    size = MINIMUM-PARTITION-SIZE

    Le plan directeur prend en charge les mountpoints suivants et leurs sous-répertoires :

    • / - le point de montage racine
    • /var
    • /home
    • /opt
    • /srv
    • /usr
    • /app
    • /data
    • /boot - Pris en charge à partir de RHEL 8.7 et RHEL 9.1.

      Note

      La personnalisation des points de montage n'est prise en charge qu'à partir des distributions RHEL 8.5 et RHEL 9.0, à l'aide de la CLI. Dans les distributions antérieures, vous pouvez uniquement spécifier la partition root comme point de montage et spécifier l'argument size comme alias pour la taille de l'image.

      Si vous avez plus d'une partition dans l'image personnalisée, vous pouvez créer des images avec une partition de système de fichiers personnalisé sur LVM et redimensionner ces partitions au moment de l'exécution. Pour ce faire, vous pouvez spécifier une configuration de système de fichiers personnalisée dans votre plan et créer ainsi des images avec l'agencement de disque souhaité. La configuration par défaut du système de fichiers reste inchangée si vous utilisez des images simples sans personnalisation du système de fichiers, et cloud-init redimensionne la partition racine.

      Note

      À partir de la version 8.6, pour le RPM osbuild-composer-46.1-1.el8 et les versions ultérieures, les partitions physiques ne sont plus disponibles et les personnalisations du système de fichiers créent des volumes logiques.

      Le schéma directeur convertit automatiquement la personnalisation du système de fichiers en une partition LVM.

      La valeur MINIMUM-PARTITION-SIZE n'a pas de format de taille par défaut. La personnalisation du plan directeur prend en charge les valeurs et unités suivantes : kB à TB et KiB à TiB. Par exemple, vous pouvez définir la taille du point de montage en octets :

      [[customizations.filesystem]]
      mountpoint = "/var"
      size = 1073741824

      Vous pouvez également définir la taille du point de montage en utilisant des unités.

      Note

      Vous ne pouvez définir la taille du point de montage qu'en utilisant les unités de la version du paquetage fournie pour les distributions RHEL 8.6 et RHEL 9.0.

      Par exemple :

      [[customizations.filesystem]]
      mountpoint = "/opt"
      size = "20 GiB"
      
      or
      
      [[customizations.filesystem]]
      mountpoint = "/boot"
      size = "1 GiB"
Créez des répertoires et des fichiers personnalisés pour votre image dans le répertoire /etc

Pour créer des fichiers et des répertoires personnalisés dans votre image, utilisez les personnalisations [[customizations.files]] et [[customizations.directories]]. Actuellement, vous ne pouvez utiliser ces personnalisations que dans le répertoire /etc.

Note

Ces personnalisations du plan directeur sont prises en charge par tous les types d'images, à l'exception des types d'images qui déploient des commits OSTree, tels que edge-raw-image, edge-installer, et edge-simplified-installer.

Create a custom directory blueprint customization

Avec la personnalisation de [[customizations.directories]] blueprint, vous pouvez créer des répertoires personnalisés dans le répertoire /etc de votre image.

Avertissement

Si vous utilisez customizations.directories avec un chemin de répertoire qui existe déjà dans l'image avec mode, user ou group, la construction de l'image échoue pour empêcher la modification de la propriété ou des autorisations du répertoire existant.

Grâce à la personnalisation de [[customizations.directories]] blueprint, vous pouvez :

  • Créer de nouveaux répertoires.
  • Définissez la propriété de l'utilisateur et du groupe pour le répertoire que vous créez.
  • Définit l'autorisation du mode répertoire au format octal.
  • Veillez à ce que les répertoires parents soient créés si nécessaire.

Pour personnaliser la configuration d'un répertoire dans votre plan, créez un fichier avec le contenu suivant, par exemple :

[[customizations.directories]]
path = "/etc/directory_name"
mode = "octal_access_permission"
user = "user_string_or_integer"
group = "group_string_or_integer"
ensure_parents = boolean

Les entrées du plan sont décrites comme suit :

  • path - Obligatoire - indiquez le chemin d'accès au répertoire que vous souhaitez créer. Il doit s'agir d'un chemin absolu sous le répertoire /etc.
  • mode - Facultatif - définit l'autorisation d'accès au répertoire, au format octal. Si vous ne spécifiez pas d'autorisation, la valeur par défaut est 0755. Le zéro initial est facultatif.
  • user - Facultatif - définit un utilisateur comme propriétaire du répertoire. Si vous ne spécifiez pas d'utilisateur, la valeur par défaut est root. Vous pouvez spécifier l'utilisateur sous la forme d'une chaîne de caractères ou d'un nombre entier.
  • group - Facultatif - définit un groupe comme propriétaire du répertoire. Si vous ne spécifiez pas de groupe, la valeur par défaut est root. Vous pouvez spécifier le groupe sous la forme d'une chaîne de caractères ou d'un nombre entier.
  • ensure_parents - Facultatif - Indiquez si vous souhaitez créer des répertoires parents si nécessaire. Si vous ne spécifiez pas de valeur, la valeur par défaut est false.

Create a custom file blueprint customization

Vous pouvez utiliser la personnalisation du plan de fichier pour créer de nouveaux fichiers ou remplacer des fichiers existants. Le répertoire parent du fichier que vous spécifiez doit exister, sinon la construction de l'image échoue. Assurez-vous que le répertoire parent existe en le spécifiant dans la personnalisation [[customizations.directories]].

Avertissement

Si vous combinez les personnalisations de fichiers avec d'autres personnalisations de plans, cela peut affecter le fonctionnement des autres personnalisations ou remplacer les personnalisations de fichiers actuelles. Si vous n'êtes pas sûr des personnalisations, utilisez la personnalisation de modèle appropriée.

Grâce à la personnalisation de [[customizations.files]] blueprint, vous pouvez :

  • Créer de nouveaux fichiers texte.
  • Modifier les fichiers existants. ATTENTION : cette modification peut remplacer le contenu existant.
  • Définissez la propriété de l'utilisateur et du groupe pour le fichier que vous créez.
  • Définit l'autorisation de mode au format octal.

    Note

    Vous ne pouvez pas créer ou remplacer les fichiers suivants :

  • /etc/fstab
  • /etc/shadow
  • /etc/passwd
  • /etc/group

Pour personnaliser un fichier dans votre plan, créez un fichier avec le contenu suivant, par exemple :

[[customizations.files]]
path = "/etc/directory_name"
mode = "octal_access_permission"
user = "user_string_or_integer"
group = "group_string_or_integer"
data = "Hello world!"

Les entrées du plan sont décrites comme suit :

  • path - Obligatoire - indiquez le chemin d'accès au fichier que vous souhaitez créer. Il doit s'agir d'un chemin absolu sous le répertoire /etc.
  • mode Facultatif - définit l'autorisation d'accès au fichier, au format octal. Si vous ne spécifiez pas d'autorisation, la valeur par défaut est 0644. Le zéro initial est facultatif.
  • user - Facultatif - définit un utilisateur comme propriétaire du fichier. Si vous ne spécifiez pas d'utilisateur, la valeur par défaut est root. Vous pouvez spécifier l'utilisateur sous la forme d'une chaîne de caractères ou d'un nombre entier.
  • group - Facultatif - définit un groupe comme propriétaire du fichier. Si vous ne spécifiez pas de groupe, la valeur par défaut est root. Vous pouvez spécifier le groupe sous la forme d'une chaîne de caractères ou d'un nombre entier.
  • data - Facultatif - Spécifiez le contenu d'un fichier de texte brut. Si vous n'indiquez pas de contenu, un fichier vide est créé.
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.