You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
3.0 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

## Configuration
1. Installer Ansible sur sa machine (`pacman -S ansible`).
2. Avoir un compte avec les droits sudo sur la machine cible.
3. Ajouter un hôte à son `~/.ssh/config` pour simplifier la connexion :
```
Host aperture-labs
HostName v5.planet-casio.com
User <username>
```
## Fonctionnement général
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.
Cf [la documentation](https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable)
pour avoir une idée de l'ordre de priorité.
## Utiliser un rôle
Généralement, ça ressemble à ça :
```
# Dummy try with --check
ansible-playbook -i inventory/main.yml role.yml -vv --diff --check --ask-become-pass
# Real try
ansible-playbook -i inventory/main.yml role.yml -v --ask-become-pass
```
On sélectionne un inventaire avec `-i`, on lui applique un (ou plusieurs) rôle.
Dans les options intéressantes, on a :
- `-v` : pour la verbosité, on peut monter à `-vvvvv`
- `--diff` : affiche les différences entre l'étât actuel et celui qu'on cherche à atteindre
- `--check` : fait un *dry-run* sans modifier l'existant
- `--ask-become-pass` : demande le mot de passe sudo sur le serveur distant
## Variables
| Variable name | Comment |
|------------------|----------------------------------------------|
| sites_enabled | List of sites to enable from sites-available |
| proxy_ports | List of ports to use with proxy_pass |
| allowed_users | List of users allowed to login through SSH |