4.5 Variables de modèles

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 :

  1. ac, actions exécutables
  2. cl, paramètres généraux des Utilitaires
  3. hr, réglages du matériel
  4. ld, attributs LDAP
  5. os, variables relatives au système d'exploitation
  6. sr, paramètres de services
  7. ur, 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-install
  • ac_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.
calculate-desktop
  • 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 paquet calculate-desktop.
  • ac_desktop_merge configure un paquet.
calculate-client
  • ac_client_domain configure un système client pour le mettre dans le domaine.
  • ac_client_merge configure un paquet.
calculate-builder
  • ac_builder_iso configure l'image ISO.
  • ac_builder_squash configure l'image Squash.
calculate-assemble
  • 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
Exécuté au lancement de cl-desktop --startup identifiant_d'utilisateur, quand on entre dans la session.
  • 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'overlay calculate, 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 paquet calculate-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 paquet calculate-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 paquet calculate-desktop avec cl-desktop --uninstall.
  • ac_desktop_install==down
  • ac_desktop_merge==up

Suppression du paquet calculate-client

Exécuté quand vous supprimez le paquet calculate-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 :

  1. 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
    
  2. 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
    
  3. info, qui affiche les paramètres système courants.
    Exemple :
    os_net_interfaces_info         [r] eth0 (DHCP)
    
  4. 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é.

Thank you!