165 lines
4 KiB
Markdown
165 lines
4 KiB
Markdown
|
|
# 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<br/>"1"<br/>"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<br/>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 :
|
||
|
|
|
||
|
|
```yml
|
||
|
|
---
|
||
|
|
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é :
|
||
|
|
|
||
|
|
```yml
|
||
|
|
---
|
||
|
|
version: '1.0'
|
||
|
|
my_variable:
|
||
|
|
type: choice
|
||
|
|
choices:
|
||
|
|
- val1
|
||
|
|
- val2
|
||
|
|
- val3
|
||
|
|
default: val1
|
||
|
|
```
|
||
|
|
|
||
|
|
Une variable à choix est typée :
|
||
|
|
|
||
|
|
Les choix sont typés :
|
||
|
|
|
||
|
|
```yml
|
||
|
|
---
|
||
|
|
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" :
|
||
|
|
|
||
|
|
```yml
|
||
|
|
---
|
||
|
|
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 :
|
||
|
|
|
||
|
|
```yml
|
||
|
|
---
|
||
|
|
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 :
|
||
|
|
|
||
|
|
```yml
|
||
|
|
---
|
||
|
|
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 :
|
||
|
|
|
||
|
|
```python
|
||
|
|
def trange(min, max):
|
||
|
|
return range(min, ma
|
||
|
|
```
|
||
|
|
|
||
|
|
On va récupérer ici les valeurs de 0 à 9 :
|
||
|
|
|
||
|
|
```yml
|
||
|
|
---
|
||
|
|
version: '1.0'
|
||
|
|
my_variable:
|
||
|
|
type: choice
|
||
|
|
default: 9
|
||
|
|
choices:
|
||
|
|
type: jinja
|
||
|
|
jinja: |+
|
||
|
|
{% for item in trange(0, 10) %}
|
||
|
|
{{ item }}
|
||
|
|
{%- endfor %}
|
||
|
|
return_type: number
|
||
|
|
```
|