Ansible/README.md

3.0 KiB

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 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