4.5 Variables de modèles¶
- 4.5 Variables de modèles
- Introduction
- Types de variables
- Variables d'actions exécutables
- Evénements
- Valeurs de variables
- Modifier les valeurs
- Modifier une valeur en ligne de commandes
- Modifier une valeur en éditant le fichier de configuration
- Utiliser les variables
- Insérer une valeur dans le fichier modèle
- Passer la valeur à une fonction
- Conditions dans les en-têtes
- Blocs conditionnels
Introduction¶
Les Utilitaires Calculate contiennent des variables qui peuvent être utilisées dans les modèles. Chaque paquet d'Utilitaires dispose de son ensemble de variables. Bien qu'appartenant à des paquets différents, les variables ont toutes des noms uniques. Pour visualiser les variables qui appartiennent à un paquet (calculate-install
dans l'exemple ci-dessous), aussi que leurs valeurs, lancez :
# cl-install -v
Cette commande retournera la liste des variables de type library
:
------------------------------ ------ ---------- Nom de variable Mode Valeur ------------------------------ ------ ---------- cl_autoupdate_set [r] off cl_chroot_path [w] / ...
aussi que la liste des variables de type install
:
------------------------------ ------ ---------- Nom de variable Mode Valeur ------------------------------ ------ ---------- ac_install_flash [r] ac_install_merge [r] up ac_install_system [r] up cl_distfiles_path [w] /var/calculate/remote/distfiles cl_image [r] /var/calculate/remote/linux/cld-13.6-x86_64.iso ...
On voit que l'utilitaire affiche les variables du paquet calculate-install
aussi bien que celles appartenant à calculate-lib
et qui peuvent être utilisées par d'autres paquets.
Types de variables¶
Par convention, les noms de variables contiennent le type de la variable, plus, souvent, le nom du paquet, plus, parfois, le type de la valeur renvoyée.
Il existe sept types de variables :
ac
, actions exécutablescl
, paramètres généraux des Utilitaireshr
, réglages du matérielld
, attributs LDAPos
, variables relatives au système d'exploitationsr
, paramètres de servicesur
, données utilisateur
Par exemple, la variable cl_install_autoupdate_set
fait partie des paramètres généraux, appartient au paquet calculate-install
et sa valeur peut être on ou off.
Variables d'actions exécutables¶
Les paquets d'Utilitaires contiennent les modèles de configuration regroupés autour des actions, telles que configurer le profil utilisateur, configurer les paquets lors de l'installation, etc. Les variables d'actions exécutables se chargent de faire savoir au système quel(s) modèle(s) appliquer.
calculate-installac_install_flash
configure la clé d'installation.ac_install_merge
configure les paquets.ac_install_system
configure le système à installer sur le disque dur ou un disque dur externe.
ac_desktop_desktop
configure les paramètres indépendants des réglages système dans le profil utilisateur.ac_desktop_live
configure les paramètres du profil utilisateur qui dépendent des réglages système.ac_desktop_install
configure le paquetcalculate-desktop
.ac_desktop_merge
configure un paquet.
ac_client_domain
configure un système client pour le mettre dans le domaine.ac_client_merge
configure un paquet.
ac_builder_iso
configure l'image ISO.ac_builder_squash
configure l'image Squash.
ac_assemble_prepare
assure la configuration préalable du système à construire.ac_assemble_setup
configure le système pendant sa construction.
Evénements¶
Les Utilitaires affectent des valeurs à des variables d'actions et appliquent des modèles en fonction des événements (cela peut être, par exemple, l'installation d'un paquet).
Vous trouverez ci-dessous la liste des événements aussi que les valeurs correspondantes des variables d'action. Ces valeurs sont notées avec un signe égal accolé, utilisé par convention dans les blocs conditionnels des modèles.
Configuration système
Cet événement est exécuté la première fois que vous lancez le système, aussi bien que lors de l'amorçage d'un LiveCD, d'une clé d'installation ou encore d'un disque dur externe. Les commandes cl-install --startup et cl-template -l all le déclenchent.ac_client_domain==up/down
ac_client_merge==up
ac_install_merge==up
ac_desktop_install==up
ac_desktop_merge==up
Installation sur le disque dur
Exécuté quand vous installez le système avec cl-install.ac_install_merge==up
ac_install_system==up
Installation sur une clé USB
Exécuté lors de l'installation système, si vous utilisez une clé USB pour installer avec cl-install.ac_install_flash==up
Installation en mode builder
Exécuté au lancement de cl-install --build.ac_install_merge==up
ac_install_system==up
Installation d'un paquet
Exécuté lors de l'installation d'un logiciel avec la commande emerge _nom_de_paquet.ac_install_merge==up
ac_desktop_merge==up
ac_desktop_install==up
ac_desktop_desktop==up
ac_desktop_live==up
ac_client_domain==up/down
ac_client_merge==up
Configuration d'un profil utilisateur
Exécuté au lancement de cl-desktop identifiant_d'utilisateur, quand on entre dans la session.ac_desktop_desktop==up
ac_desktop_live==up
ac_desktop_live==up
Préparation de l'image Squash
Exécuté avant de créer l'image Squash, avec cl-image iso ou cl-image squash.ac_builder_squash==up
Préparation de l'image ISO
Exécuté avant de créer l'image ISO avec cl-image iso.ac_builder_iso==up
Ajout à un domaine
Exécuté quand la machine est ajoutée à un domaine, avec la commande cl-client hôte.ac_client_domain==up
ac_client_merge==up
Sortie du domaine
Exécuté quand vous faites sortir la machine du domaine, avec la commande cl-client -r.ac_client_domain==down
ac_client_merge==up
Préparation de l'environnement de construction
Exécuté avec cl-assemble après le dépaquetage de l'image Stage, pour préparer à la construction d'un nouveau système.ac_assemble_prepare==up
Configuration du système lors de la construction
Exécuté avec cl-assemble après l'ajout de l'overlaycalculate
, pour préparer à la construction d'un nouveau système.
ac_assemble_setup==up
Mise à jour du système lors de la construction
Exécuté avec cl-make -u ou cl-make -U avant de compiler les paquets en construisant un nouveau système.ac_assemble_prepare==up
ac_assemble_setup==up
Installation du paquet calculate-desktop
Exécuté quand vous installez le paquetcalculate-desktop
avec la commande cl-desktop --install.
ac_desktop_install==up
ac_desktop_merge==up
Installation du paquet calculate-client
Exécuté quand vous installez le paquetcalculate-client
avec cl-client --install.
ac_client_domain==up/down
ac_client_merge==up
Suppression du paquet calculate-desktop
Exécuté quand vous supprimez le paquetcalculate-desktop
avec cl-desktop --uninstall.
ac_desktop_install==down
ac_desktop_merge==up
Suppression du paquet calculate-client
Exécuté quand vous supprimez le paquetcalculate-client
avec cl-client --uninstall.
ac_client_domain==down
ac_client_merge==up
Valeurs de variables¶
Les variables peuvent contenir des valeurs de plusieurs types :
- valeur de substitution, qui sert à insérer une valeur dans le fichier modèle.
Exemple :os_locale_locale [r] fr_FR.UTF-8 os_net_allow [r] 10.0.0.0/24 os_net_ip [r] 10.0.0.131 os_x11_video_drv [r] radeon
- valeur de condition, utilisée dans des blocs conditionnels.
Exemple :cl_uuid_set [r] on hr_video [r] ati os_install_linux_system [r] desktop os_install_locale_language [r] fr
- info, qui affiche les paramètres système courants.
Exemple :os_net_interfaces_info [r] eth0 (DHCP)
- tableau de valeurs, utilisé par d'autres variables ou fonctions.
Exemple :cl_migrate_user [r] ['root', 'guest'] os_install_disk_format [r] ['swap', 'reiserfs', 'reiserfs', '', 'reiserfs'] os_install_disk_id [r] ['82', '83', '83', '5', '83'] os_install_disk_mount [r] ['swap', '/', '', '', '/var/calculate']
Ces types sont évidemment conventionnels, une valeur peut d'ailleurs correspondre à plusieurs types à la fois.
Modifier les valeurs¶
Quand vous adressez une variable, sa valeur est déterminée par le programme en fonction des paramètres système, tout en tenant compte d'autres valeurs de variables. Vous pouvez modifier la valeur de certaines variables, marquées avec la lettre w
. D'autres, qui ne sont autorisées qu'à la lecture, sont marquées avec r
. Exemple :
cl_ver [r] 2.2.11 os_install_x11_composite [w] off
Il existe deux manières de modifier la valeur d'une variable : soit depuis la ligne de commandes, en lançant l'utilitaire avec les options correspondantes, soit en éditant manuellement le fichier de configuration. La console est prioritaire sur les modifications faites des deux façons à la fois.
Modifier une valeur en ligne de commandes¶
Pour modifier la valeur d'une variable, utilisez la syntaxe suivante : --set _variable_=_valeur_
.
Exemple :
# cl-install -v --filter os_install_net_hostname --set os_install_net_hostname=mylinux
La liste des variables install
résultante sera affichée :
----------------------- ------ ---------- Nom de variable Mode Valeur ----------------------- ------ ---------- os_install_net_hostname [w] mylinux
Modifier une valeur en éditant le fichier de configuration¶
Vous pouvez redéfinir les valeurs de variables dans le fichier calculate.env
. Les chemins sont stockés dans la variable cl_env_path
:
cl_env_path [r] ['/etc/calculate/calculate.env', '/var/calculate/calculate.env', '/var/calculate/remote/calculate.env']
L'ordre de priorité va croissant du premier au dernier chemin spécifié. Autrement dit, une valeur modifiée dans /var/calculate/remote/calculate.env
sera préférée à d'autres.
Exemple de fichier calculate.env
:
[install] os_install_ntp = ntp0.zenon.net
Il est à noter que la variable os_install_ntp
se trouve dans la section [install]
, i.e. est visible par les variables du paquet calculate-install
.
Utiliser les variables¶
Les variables sont les piliers des modèles : leurs valeurs configurent le système compte tenu de l'état courant du matériel et déterminent la logique. Nous allons décrire ci-dessous toutes les utilisations possibles des variables avec les modèles Calculate.
Insérer une valeur dans le fichier modèle¶
Pour insérer une valeur de variable dans le modèle, utilisez la syntaxe suivante : #-_nom_de_variable_-#
.
Exemple de configuration du serveur Xorg :
Modes "#-os_install_x11_resolution-#"
Passer la valeur à une fonction¶
La valeur de la variable spécifiée entre les #--#
sera calculée et insérée dans le modèle en premier lieu. Si la variable figure dans les paramètres d'une fonction, le calcul de cette dernière sera basé sur la valeur de la variable déjà calculée.
Exemple :
<entry name="paned_size" type="int" value="#-sum(ysize,,#-os_x11_height-# / 3)-#"/>
Dans l'exemple, la fonction sum
recevra trois valeurs : le paramètre ysize
, une valeur vide et la formule pour calculer le contenu de la variable os_x11_height
(résolution écran verticale) divisé par 3.
Conditions dans les en-têtes¶
L'en-tête d'un fichier modèle peut contenir des blocs conditionnels. Suivant si la condition est remplie, le modèle sera ou ne sera pas appliqué lors de la configuration du votre système.
Exemple d'en-tête contenant une condition à vérifier :
# Calculate os_install_linux_system==server
Blocs conditionnels¶
La syntaxe simple de blocs conditionnels est supportée actuellement. Tout bloc conditionnel constitué par une ou deux variables (ou fonctions) commence avec #?
et se termine avec #
. Un bloc texte suit, et la première variable de la condition, mise entre les signes dièse #
, clot le tout. Exemple :
#?hr_laptop==# numlock on #hr_laptop#
ou encore :
#?os_locale_language==fr&&pkg(media-gfx/cldx-themes)!=# current_theme calculate_fr #os_locale_language#
Dans le second exemple, la fonction pkg()
fait partie du bloc conditionnel : sa valeur est comparée à un vide. La condition sera remplie si le français est utilisé comme langue système et que le paquet media-gfx/cldx-themes
est installé.