On défini d'une part un inventaires (des machines), avec des variables spécifiques à ces machines,
et d'autre part des rôles, qui seront des états à atteindre, en effectuant des actions.
### Inventaire
On défini dans un fichier, ici `inventory/main.yml` un host.
Généralement c'est une IP + user + port ssh, etc, mais on profite de la config SSH pour ne mettre que l'alias.
Dans `inventory/host_vars/aperture-labs.yml`, on défini des variables spécifiques à l'host `aperture-labs`.
Aujourd'hui on a qu'un serveur, donc tout va bien. Dans le cas où on en a plusieurs, on peut aussi définir des variables dans `inventory/group_vars`.
Dans ce cas, elles seront communes au groupe.
### Rôle
Un rôle se compose de plusieurs dossiers et fichiers:
```
rolename
├── files
| └── static_file.cfg
├── defaults
│ └── vars.yml
├── tasks
│ └── main.yml
├── templates
| └── dynamic_file.cfg
└── vars
└── vars.yml
```
Le principal est `tasks`: il contient la liste des opérations à effectuer.
Pour les grosses tâches, on peut écrire plusieurs fichiers et les appeler dans `main.yml`.
Dans `files`, on retrouve les fichiers de config à copier tels quels.
Dans `templates`, on aura les fichiers qui devront être templatisés par Jinja2.
Dans `default` et `vars`, on place des variables spécifiques au rôle. `vars` est prioritaire sur `host_vars` et `group_vars`, tandis que `defaults` ne l'est pas.