Some Ansible roles to simplify and track modifications on the VPS
Go to file
Darks c30e6af44d
Added role influxdb
2020-09-10 23:19:29 +02:00
inventory Refactoring 2020-09-10 21:56:13 +02:00
roles Added role influxdb 2020-09-10 23:19:29 +02:00
.gitignore Added nginx & uwsgi roles 2020-09-10 18:38:19 +02:00
README.md Updated Readme to french :p 2020-09-10 23:06:01 +02:00
all.yml Added goaccess 2020-09-10 23:08:34 +02:00
iptables.yml Added iptables role 2020-09-10 19:32:37 +02:00
monitoring.yml Added goaccess 2020-09-10 23:08:34 +02:00
nginx.yml Added nginx & uwsgi roles 2020-09-10 18:38:19 +02:00
ssh.yml Added iptables role 2020-09-10 19:32:37 +02:00
uwsgi.yml Added nginx & uwsgi roles 2020-09-10 18:38:19 +02:00

README.md

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