# Variable ## Un variable Une variable est forcement dans [variables](../variables.md) ou dans une [famille](../family/README.md). Une variable est déjà un nom. C'est à dire qu'on pourra utiliser plus tard la variable via ce nom. ```xml ``` En YAML : ```yml variables: - variable: name: my_variable - family: name: my_family variables: - variable: name: my_family_variable ``` ## Description et aide sur la variable En plus d'un nom, il est possible de mettre une "description" à la variable. C'est une information "utilisateur" qui nous permettra d'avoir des informations complémentaires sur le contenu de cette variable : ```xml ``` En YAML : ```yml variables: - variable: name: my_variable description: This is a good variable ``` En plus de la description, il est possible de préciser une aide complémentaire : ```xml ``` En YAML : ```yml variables: - variable: name: my_variable help: This is a good variable ``` Cette aide peut être utilisé à tout moment comme valeur [d'un paramètre](../param/information.md). ## Le type de la variable Une variable a un type. Ce type permet de définir les valeurs acceptées par cette variable : - string : chaine de caractère (type par défaut) - number : un nombre - float : un chiffre flottant - boolean : "True" ou "False", si aucune valeur n'est défini la valeur par défaut de cette variable sera "True", ces variables sont également obligatoire par défaut - secret (ou password mais est obsolète) : un secret (comme un mot de passe, une clef privée, ...) - mail : une adresse mail - filename : nom de fichier au sens Unix (exemple : "/etc/passwd") - date : une date au format "%Y-%m-%d" (exemple : "2021-01-30") - unix_user : nom d'utilisateur au sens Unix - ip : n'importe quelle adresse IPv4 - cidr : n'importe quelle adresse IPv4 au format CIDR - local_ip : adresse IPv4 sur un réseau local, si l'adresse IPv4 n'est pas local, un warning sera afficher mais la valeur sera accepté tout de même - netmask : masque d'une adresse IPv4 - network : adresse réseau - network_cidr : adresse réseau au format CIDR - broadcast : adresse de diffusion - netbios : nom netbios - domain : nom de domaine - hostname : nom d'hôte - web_address : adresse web (http://www.silique.fr/) - port : port - mac : adresse MAC - schedule : périodicité du schedule, les valeurs possibles sont "none", "daily", "weekly" ou "monthly" - schedulemod : type de schedule, les valeurs possibles sont "pre" ou "post" Pour définir le type d'une variable : ```xml ``` En YAML : ```yml - variable: name: my_variable type: number ``` ## Variable à valeur multiple Par défaut une variable ne peut acceuillir qu'une seule valeur. Il peut être utile de pouvoir spécifier plusieurs valeurs à une même variable. Pour définir une variable à valeur multiple : ```xml ``` En YAML : ```yml - variable: name: my_variable multi: true ``` Par défaut, les variables multiples ne peuvent pas avoir deux fois la même valeur. Si vous voulez pouvoir mettre plusieurs fois la même valeur, il faut utiliser l'attribut "unique" : ```xml ``` En YAML : ```yml - variable: name: my_variable multi: true unique: false ``` ## Variable invisible Il est possible de cacher une variable. Cacher une variable signifie qu'elle ne sera pas visible lorsqu'on modifie la configuration du service. Par contre cette variable sera accessibles lorsqu'on va l'utiliser. Pour cacher une variable : ```xml