-
Notifications
You must be signed in to change notification settings - Fork 8
Serveur de production AFS
Ou "comment regénérer un serveur si Philippe se prend un bus ou le datacenter prend feu une nouvelle fois".
Le serveur de production de l'AFS est un VPS chez OVH : il suffit de le (ré)-installer (avec un Debian 11 au moment d'écrire ces lignes), ou d'en créer un nouveau si besoin.
À partir de là, voici la liste des étapes à faire pour obtenir une image "neuve" :
- ssh sur le serveur
- récupérer une copie du dépôt (en fait ce qui nous intéresse c'est le dossier
ci/chef
) : soit via git, soit en téléchargeant un tgz. En détails il suffit de :
cd /tmp
sudo apt install git
git clone https://github.com/speedcubingfrance/speedcubingfrance.org.git
- Récupérer le fichier "secret" (demander à un des admins ou au bureau) qui sert à déchiffrer le databag de production qui est ici.
- Le copier là où chef va le trouver :
cp secret /etc/chef/encrypted_data_bag_secret
. - Lancer le script de bootstrap pour la prod :
cd ci/chef
sudo ./bootstrap.sh production
À partir de là cela devrait tout mettre en place pour pouvoir faire tourner l'application et le serveur, mais aussi récupérer un certificat SSL pour le domaine.
Le gros du travail est fait par chef, que l'on peut relancer autant de fois que l'on souhaite avec sudo chef-solo -o "role[afs-bootstrap-server]" -c solo.rb -E production
.
À partir de là il devrait suffire de se déconnecter et de se reconnecter sur l'utilisateur afs
et de :
-
bundle install
dans~/speedcubingfrance.org
bin/rails db:reset
- Restaurer un backup de la prod (demander aux admins/bureau pour avoir le dump) :
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U speedcubingfrance -d speedcubingfrance-prod prod.dump
- Et à partir de là on peut utiliser le script de déploiement régulier :
./scripts/deploy.sh rebuild_rails
Chef devrait faire ça de manière transparente, mais voici néanmoins quelques détails sur la récupération du certificat.
Lors du premier déploiement le certificat SSL n'est pas encore généré, il y a donc deux fichiers de configuration pour www.speedcubingfrance.org
:
- une pour avant la création du certificat (
ci/chef/cookbooks/afs/templates/pre_certif.conf.erb
) - une pour après la création du certificat (
ci/chef/cookbooks/afs/templates/post_certif.conf.erb
)
Chef doit se charger tout seul de la génération des bons fichiers au bon moment, la procédure effectuée en détails est là
Le script deploy.sh
contient des commandes utiles pour le déploiement :
-
pull_latest
: récupère la dernière master. -
restart_app
: (re)-démarre le serveur puma. -
rebuild_rails
: installe les gems ruby, recompile les assets, et lancerestart_app
.
Il suffit alors de lancer :
ssh afs@speedcubingfrance.org speedcubingfrance.org/scripts/deploy.sh pull_latest rebuild_rails
Et de se logguer pour effectuer les éventuelles migrations (ne pas oublier de redémarrer de serveur après les migrations !).
Si des changements sont fait sur la configuration du serveur (concrètement si quelque chose dans ci/chef
a changé), alors il faut également relancer chef : sudo chef-solo -o "role[afs-bootstrap-server]" -c solo.rb -E production
dans le dossier ci/chef
.
Pour récupérer un backup de la base de données de production :
pg_dump -Fc --no-acl --no-owner -h localhost -U speedcubingfrance speedcubingfrance-prod > prod.dump
Mettre latest.dump sur le serveur, et lancer :
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U speedcubingfrance -d speedcubingfrance-prod latest.dump
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U speedcubingfrance -d speedcubingfrance-dev latest.dump