Some Ansible roles to simplify and track modifications on the VPS
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.
Darks c30e6af44d
Added role influxdb
1 month ago
inventory Refactoring 1 month ago
roles Added role influxdb 1 month ago
.gitignore Added nginx & uwsgi roles 1 month ago
README.md Updated Readme to french :p 1 month ago
all.yml Added goaccess 1 month ago
iptables.yml Added iptables role 1 month ago
monitoring.yml Added goaccess 1 month ago
nginx.yml Added nginx & uwsgi roles 1 month ago
ssh.yml Added iptables role 1 month ago
uwsgi.yml Added nginx & uwsgi roles 1 month ago

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