diff --git a/README.md b/README.md index ab68c33..9e40c86 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ ## Configuration -1. Install Ansible on your machine (`pacman -S ansible`). -2. You should have an account with sudoers rights on the target. -3. Add an host to your `~/.ssh/config` to simplify the login process: +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 @@ -10,9 +10,54 @@ Host aperture-labs User ``` -## Use a role -Usually, it looks like this: +## 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 @@ -21,16 +66,18 @@ ansible-playbook -i inventory/main.yml role.yml -vv --diff --check --ask-become- ansible-playbook -i inventory/main.yml role.yml -v --ask-become-pass ``` -The file `inventory/main.yml` already contains an host: the main VPS, `aperture-labs`. -See [Configuration](#Configuration) to add the host to your SSH config. +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 -Variables are defined in `inventory/host_vars/aperture-labs.yml`. -They can be overriden, see [the documentation](https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable). - -They may be mandatory for execution of roles. - | Variable name | Comment | |------------------|----------------------------------------------| | sites_enabled | List of sites to enable from sites-available |