5.3. Personnalisations d'images prises en charge
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.
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]]
.ImportantPour 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érerpassword 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"
NoteLa 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
.NoteSi 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.NoteChaque 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.NoteLa 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'argumentsize
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.
NoteVous 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
.NoteCes 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
, etedge-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.
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 estroot
. 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 estroot
. 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 estfalse
.
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]]
.
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.
NoteVous 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 estroot
. 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 estroot
. 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éé.
Ressources supplémentaires