Documenting the server infrastructure.
Go to file
2021-11-18 07:07:42 +01:00
group_vars/all Moving dl to deb2. 2021-11-18 07:07:42 +01:00
roles Migrating afpyro to new servers at Gandi. 2021-11-17 05:24:52 +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 pycon.fr: Few static dumps, fr.pycon.org. 2019-12-19 15:50:06 +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
mm3.yml hello mailman3 2020-07-08 23:45:50 +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 HOWTO migration de BBB. 2021-05-12 16:42:30 +02: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

TODO

Mailman 3

Mailman 3 est installé sur https://mm3.afpy.org, Julien a un compte super user, vous pouvez en demander un aussi. le mailman peut envoyer des mails via exim4, mais pour le moment aucune mailing list.

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

TODO

  • Github Actions sur Alain (déployer au push).
  • Setup watchghost
  • C'est quoi pycon.afpy.org ?
  • C'est quoi video.pycon.fr ? (IN A 91.121.116.118)

deb.afpy.org

La seule machine déployée via Ansible.

fingerprint: SHA256:xVC4sYYdmDSbJP6JWZUxApzHdbAj1p3uZlOEIksXrMA.

rainette.afpy.org

Liste des jails toujours utiles :

  • web: stoppée, sauvegardée, à supprimer.
  • dns: Doit être démarrée avant mailman
  • smtp:
    • smtpd (/usr/local/etc/mail/smtpd.conf)
    • dovecot (comptes: /usr/local/etc/mail/tables/passwd)
    • spamd
  • mailman: Le sitepass est disponnible dans pass.
  • http: toujours utile pour https://lists.afpy.org

dl.afpy.org

C'est un directory listing nginx, accessible via https://dl.afpy.org.

Il héberge aussi https://videos-2015.pycon.fr/ (qui depuis 2021 redirige vers dl.afpy.org/pycon-fr-15, c'est mieux rangé).

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

On utilise une Start-2-M-SATA chez online.net qui propose directement d'installer BBB.

Attention a retenir son mot de passe user temporaire à l'installation même si vous avez une clef SSH: vous en aurez besoin pour passwd la première fois.

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

AuthenticationMethods publickey
LogLevel VERBOSE

Et quand même un peu de confort (enfin c'est surtout que je n'aime pas les mots de passe ni sudo) :

PermitRootLogin prohibit-password

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.