rougail/doc/variable/type.md
2023-11-11 18:23:48 +01:00

4 KiB

Les types des variables

Une variable a un type.

Ce type permet de définir les valeurs acceptées par cette variable.

Les types de base

valeur Commentaires Exemples
string chaine de caractère (type par défaut) test
"1"
"true"
number un nombre 1
float un chiffre flottant 1.2
boolean Un booléen, si aucune valeur n'est défini la valeur par défaut de cette variable sera "true", la variable sera également obligatoire par défaut true
false
secret un secret (comme un mot de passe, une clef privée, ...) hO_'hi
mail une adresse mail test@rougail.example
filename nom de fichier au sens Unix /etc/passwd
date une date au format "%Y-%m-%d" 2021-01-30
unix_user nom d'utilisateur au sens Unix test
ip n'importe quelle adresse IPv4 1.2.3.4
cidr n'importe quelle adresse IPv4 au format CIDR 1.2.3.4/24
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 192.168.1.1
netmask masque d'une adresse IPv4 255.255.255.0
network adresse réseau 192.168.1.0
network_cidr adresse réseau au format CIDR 192.168.1.0/24
broadcast adresse de diffusion 255.255.255.255
netbios nom netbios machine
domainname nom de domaine rougail.example
hostname nom d'hôte machine
web_address adresse web http://rougail.example
port port 8080
mac adresse MAC 11:11:11:11:11:11
unix_permissions droit d'accès au fichier, répertoire, ... 644

Une variable à choix

Il est possible d'imposer une liste de valeur pour une variable particulière :

---
version: '1.0'
my_variable:
  type: choice
  choices:
    - val1
    - val2
    - val3

Dans ce cas, seules les valeurs proposées sont possibles pour cette variable. Cette variable n'est pas obligatoire donc il est possible de mettre la valeur "None".

Si la variable est obligatoire ou si une valeur est précisée (la variable passe obligatoire) alors la valeur "None" n'est plus autorisé :

---
version: '1.0'
my_variable:
  type: choice
  choices:
    - val1
    - val2
    - val3
  default: val1

Une variable à choix est typée :

Les choix sont typés :

---
version: '1.0'
my_variable:
  type: choice
  choices:
    - val1
    - 3
    - true
  default: val1

dans ce cas, le chiffre 3 est autorisé mais pas la chaine de caractère "3".

Redéfinir une option à choix

Si on veut supprimer un choix ou redéfinir complètement la liste, il faut redéfinir cette variable et ajouter l'attribut "remove_choice" à "True" :

---
version: '1.0'
my_variable:
  redefine: true
  choices:
    - val1
    - val2

Dans ce cas toutes les anciens choix ne seront plus possible. Seuls les nouveaux le seront.

Un variable à choix provenant de variable

Les choix d'une variable peuvent provenir d'une autre variable multiple :

---
version: '1.0'
source_variable:
  multi: true
  default:
    - val1
    - val2
my_variable:
  type: choice
  choices:
    type: variable
    variable: rougail.source_variable

Ou de plusieurs autres variables :

---
version: '1.0'
source_variable_1:
  default: val1
source_variable_2:
  default: val2
my_variable:
  type: choice
  choices:
    - type: variable
      variable: rougail.source_variable_1
    - type: variable
      variable: rougail.source_variable_2

Dans ce cas, toutes les valeurs de la variable ou des variables seront des choix utilisables par l'utilisateur.

Un variable à choix provenant d'une fonction jinja

Faisons d'abord une fonction trange dans le fichier functions.py :

def trange(min, max):
    return range(min, ma

On va récupérer ici les valeurs de 0 à 9 :

---
version: '1.0'
my_variable:
  type: choice
  default: 9
  choices:
    type: jinja
    jinja: |+
      {% for item in trange(0, 10) %}
      {{ item }}
      {%- endfor %}      
    return_type: number