Documenting the server infrastructure.
Go to file
2021-11-18 07:07:43 +01:00
group_vars/all Proofreading README and spring clean. 2021-11-18 07:07:42 +01:00
roles Proofreading README and spring clean. 2021-11-18 07:07:42 +01:00
.gitignore Ignore emacs backups. 2019-12-18 13:42:46 +01:00
afpy.org.yml Quelques redirections utiles pour le nouveau site 2021-11-18 07:07:29 +01:00
afpyro.afpy.org.yml Migrating afpyro to new servers at Gandi. 2021-11-17 05:24:52 +01:00
alain.yml Alain can sudo systemctl restart alain. 2021-10-03 11:00:10 +02:00
ansible.cfg Passbolt: First try (not yet stable). 2019-02-14 00:54:02 +01:00
autoconfig.yml Proofreading autoconfig. 2021-11-18 07:07:43 +01:00
backup.yml Drop passbolt, we moved to pass (see github.com/afpy/pass). 2021-04-28 00:07:28 +02:00
discord-irc-sync.yml Update discord-irc-sync.yml 2021-10-25 18:02:54 +02:00
discuss.yml discuss.afpy.org 2020-11-11 21:17:08 +01:00
dl.yml Moving dl to deb2. 2021-11-18 07:07:42 +01:00
inventory Moving dl to deb2. 2021-11-18 07:07:42 +01:00
logs.afpy.org.yml New logs.afpy.org 2021-05-01 17:30:02 +02:00
pycon.fr.yml certbot: Use DNS-01 instead of HTTP so it can work on other machines. 2021-09-10 14:12:50 +02:00
pydocteur.afpy.org.yml s/chat.freenode.net/irc.libera.chat/ 2021-05-21 08:48:06 +02:00
README.md Proofreading README and spring clean. 2021-11-18 07:07:42 +01:00
requirements.yml Drop passbolt, we moved to pass (see github.com/afpy/pass). 2021-04-28 00:07:28 +02:00
site.yml Drop passbolt, we moved to pass (see github.com/afpy/pass). 2021-04-28 00:07:28 +02:00

Survol des playbooks Ansible

On découpe nos playbooks Ansible par rôles :

  • site.yml: Inclu tous les autres, pratique pour tout exécuter.
  • pycon.yml: Pour les pycon.fr
  • backup.yml: Configure rsnapshot pour sauvegarder nos serveurs.
  • ...

En partant de là, on peut utiliser les commandes suivantes:

Après avoir cloné ce repo, installé Ansible dans un venv, installez les roles nécessaires via :

  • ansible-galaxy install -r requirements.yml

Puis pour jouer les playbooks :

  • Pour tout relancer : ansible-playbook site.yml
  • Pour configurer les PyCons : ansible-playbook pycons.yml

Faire, ne pas faire

Faire : Configurer les machines : apt install, fichiers de configuration, utilisateurs, éventuellement un premier git clone pour que ça marche si c'est un site statique.

Ne pas faire : Deployer. En dehors de l'éventuel premier git clone, c'est le rôle de la CI (Github Actions, ...), pas de nos playbooks.

Servers

La distinction services/serveurs :

  • Un serveur contient un chiffre dans son hostname : deb2.afpy.org, bbb2.afpy.org, …
  • Un service ne contient pas de chiffre dans son hostname : discuss.afpy.org, bbb.afpy.org, www.afpy.org, …

deb2.afpy.org

♥ Machine sponsorisée par Gandi ♥

C'est un VPS V-R4 2 CPUs · 4 GB RAM.

Elle héberge les services suivants :

bbb2.afpy.org

♥ Machine sponsorisée par Gandi ♥

C'est un VPS V-R8 4 CPUs · 8 GB RAM.

Ansible

On utilies ces rôles Ansible :

julienpalard.nginx

Voir la doc.

common

common est un rôle "de base" permettant d'avoir une conf "normale" sur toutes nos machines (emacs et vim installés, nos authorized-keys, pas de mlocate, hostname propre, firewall, ce genre de broutilles).

Backups

Julien Palard a un rsnapshot (vérifié en 2021) sur son NAS perso, avec :

backup  deb.afpy.org:/srv/      deb.afpy.org/
backup  deb.afpy.org:/home/     deb.afpy.org/
backup  deb.afpy.org:/etc/      deb.afpy.org/
backup  deb.afpy.org:/srv/      deb.afpy.org/
backup  deb.afpy.org:/home/     deb.afpy.org/
backup  deb.afpy.org:/etc/      deb.afpy.org/
backup  deb.afpy.org:/var/discourse/shared/standalone/backups/  deb.afpy.org/
backup  storage.afpy.org:/var/www/ storage.afpy.org/

BBB

Hébergé sur bbb2.afpy.org chez Gandi.

J'y ai appliqué un poil de ssh-hardening :

AuthenticationMethods publickey
LogLevel VERBOSE

Ensuite j'ai rsync les enregistrements depuis le bbb précédent.

Puis j'ai sauvegardé/restauré la DB de greenlight :

# Sur l'ancienne machine :
docker exec greenlight_db_1 /usr/bin/pg_dumpall -U postgres -f /var/lib/postgresql/data/dump.sql

# Sur la nouvelle machine :
# Copier la sauvegarde sur le nouveau serveur :
cd ~root/greenlight
rsync bbb.afpy.org:/root/greenlight/db/production/dump.sql ./

docker-compose down
rm -fr db
# Configurer le même mot de passe dans .env et docker-compose.yml que l'ancienne machine
# En profiter pour vérifier le SAFE_HOSTS dans le .env.
docker-compose up -d
# Attendre un peu avec un top sous les yeux que ça se termine vraiment
docker exec greenlight_db_1 /usr/local/bin/psql -U postgres -c "DROP DATABASE greenlight_production;"
mv dump.sql db/production/
docker exec greenlight_db_1 /usr/local/bin/psql -U postgres -f /var/lib/postgresql/data/dump.sql
rm db/production/dump.sql
docker-compose down
docker-compose up -d  # Il va s'occuper de la migration
docker-compose logs -f # pour voir si tout va bien

rsync des certificats TLS aussi :

rsync -vah bbb.afpy.org:/etc/letsencrypt/ /etc/letsencrypt/

Ça a pris un petit :

sed s/sd-106563.dedibox.fr/bbb.afpy.org/ /etc/nginx/sites-available/bigbluebutton

Il faut attendre un moment avec un top qui tourne, ruby a tout plein de truc a faire avant de démarrer.