Ansible/README.md

86 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

## Configuration
2020-09-10 23:06:01 +02:00
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>
```
2020-09-10 23:06:01 +02:00
## 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
```
2020-09-10 23:06:01 +02:00
On sélectionne un inventaire avec `-i`, on lui applique un (ou plusieurs) rôle.
2020-09-10 23:06:01 +02:00
Dans les options intéressantes, on a :
2020-09-10 23:06:01 +02:00
- `-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
2020-09-10 23:06:01 +02:00
## 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 |