Merge branch 'master' into ansible

scripts_python
korenstin 2024-12-27 20:57:05 +01:00
commit c70834d1e5
11 changed files with 2204 additions and 200 deletions

View File

@ -0,0 +1,109 @@
# Réunion IN
* Date : Samedi 22 Juin 2024
* Lieu : MB87 et Galène <https://galene.crans.org/group/CA>
* Début : 14h23 - reprise à 15h20
* Fin : 16h07
## Présent⋅es
* GaBo
* [Chiaroush](https://wiki.crans.org/WikiChiaroush)
* [vanille](https://wiki.crans.org/VanilleNiven)
* lzebulon
* Otthorn
* [RDB](https://wiki.crans.org/WikiRDB)
* [bleizi](https://wiki.crans.org/WikiBleizi)
* [Aplanos](https://wiki.crans.org/WikiAplanos)
## Ordre du jour
* Clé usb dinstallation de 128go avec ventoy ou équivalent pour les
installations
* commande des disques (si pas fait dici là, rappeler GaBo) (ou le faire en
live)
* [GaBo] Ansible est trop vieux (drop de support de certain plugin, peut pas
relancer les playbooks. Marche encore avec ansible_2_14)
* [Otthorn] ssh -L 1636:tealc.adm.crans.org:636 tealc.adm.crans.org pas le bon
LDAP, faut utiliser wall-e
* [Otthorn] Action deny sur WikiMoinMoin
* [Lzebulon] Point sur les backups : ne semble pas fonctionner
(backup-{thot,ft} non contactable)
* VM Collabora
* [Gabo] Ecriture du guide pour faire des VM dans la documentation
* Owncloud : soucis de LDAP
* Gitlab : à mettre à jour au plus vite (on est en 16.1)
### Clé USB d'installation 128 go Ventoy
(En référence à une conversation du 16 Mai 2024)
Une seule clé avec plusieurs ISO plutôt que clés nombreuses avec distros
différents -> Problèmes de sécurité, mais intéressant pour les nounous
Le logiciel proposé (Ventoy) est plutôt répandu/réputé mais pas terrible.
Problèmes de sécurité entre-autre.
On propose de faire minimaliste sans utiliser le logiciel Ventoy. Ce serait
intéressant parce que ça nous épargnerait le trousseau de clés (qui a été
perdu il paraît), à discuter au prochain CA.
GaBo propose de partir sur 5 clés de 128 go -> 1 clé / Nounous présentes sur
le plateau.
GaBo propose 64 go. 128 go lui paraît overkill. Pas de différence trop grande
en terme de prix -> On part sur du 128 go.
En Install Party, on fait rarement plus de 5 installs en parallèle.
(Prendre en compte qu'il y a toujours une clé qui est perdue...)
Projet apprenti rigolo de créer un script qui génère les clés (mettre tel
OS sur une clé).
### Commande des disques
Les disques sont commandés et arrivés !
Il reste les ventilos.
GaBo a payé avec sa carte, il attend le remboursement de la part du Trésorier
(Macéo) pour procéder à l'achat des ventilos.
Avons-nous prévu un moment pour installer les nouveaux disques ? <- On en a
discuté dans le point disques du CA.
### Ansible
On a plein de version de retard (on est en 2.14 et la version actuelle est la
10).
<https://endoflife.date/ansible>
Il faudrais mette ça à jour : plugin LDAP et README en particulier et
peut-être le plugin pass. On eput essayer de faire en même temps que
l'install de Colabora
### WikiMoinMoin
On a des soucis avec l'action "deny" qui ne permettait de voir une page
privée. Otthorn a fait un proof au concept de l'erreur. Il a réactivé deny,
c'est bon. Mais on sait pas pourquoi ça avit été désactivé il y a
longtemps.
### Backups
Faut se bouger pour aller voir VR en vrai à une de leurs permanences. C'est
peut-être juste l'ethernet qui est débranchée. (Et potentiellement aussi
changer pour un cable qui fonctionne)
Faire les backups correctement (comme la indiqué Otthorn, en excluant les
trucs reliés à postgress et utilisé le hook conçu pour)
voir dans la config ansible
### Colabora
(Pigeon : Si vous arrivez à setup colabora hésitez pas, onlyoffice c'est
chiant je comprends rien à comment ça fonctionne)
### Owncloud
La config a disparu par magie (Àenquêter)
### GitLab
Il faut mettre à jour. (On le fera vers juste après lIN)
### Documentation
GaBo a été désigné grand gagnant de qui s'occupera de la documentation
d'Ansible.

View File

@ -0,0 +1,211 @@
# Réunion IN
* Date : Jeudi 29 Août 2024
* Lieu : MB87 et Galène <https://galene.crans.org/group/CA>
* Début : 18h58
* Fin : 21h
## Présent⋅es
* [bleizi](https://wiki.crans.org/WikiBleizi)
* [Pigeon Moelleux](https://wiki.crans.org/WikiPigeonMoelleux)
* GaBo
* [vanille](https://wiki.crans.org/VanilleNiven)
* korenst1
* Lzebulon
* Shinigami
* [Hachino](https://wiki.crans.org/WikiHachino)
* underscore_j
* RDB
* Otthorn
## Ordre du jour
### Rapide compte-rendu de ce qu'il s'est passé cet été
Ottorn, lzebulon ont créé une vm collabora. Conséquence : découverte de
mauvaises configurations problème entre ansible et les scripts qui sont
dépréciés.
Mise à jour de gitlab
Au milieu de l'été. pb entre owncloud et nextcloud. impossibilité d'écrire
(indépendant du reste). esum a résolu le pb. Owncloud a ensuite perdu sa conf
ldap.
Nextcloud a fini d'être configuré (paramêtre de partage et les mails (envoi
de mail automatique pour les événements)). Nextcloud marche bien.
Pub pour nextcloud possible.
pb avec Onlyoffice. Beaucoup de difficulté. Onlyoffice est packagé dans apt.
Pas possible d'installer onlyoffice comme ça. On doit le faire à la main.
Donc ce n'est pas ansibelisable.
Il n'est pas possible d'utiliser onlyoffice sur téléphone (firefox) et
limité à 20 connexions en même temps. du coup, est-ce qu'on utilise
Collabora ou Onlyoffice ?
Du coup on peut passer sur collabora qui n'a pas ces problèmes.
Sinon Otthorn a trouvé la variable à modifier.
```txt
server/Common/sources/constant.js
exports.LICENSE_CONNECTIONS = 20;
```
### état sur les serveurs de backup
2 serveurs de backups. ft éteint par VR car fait trop de bruit. Mais il marche
et permet de faire
Peut-être la poussière ou les ventilos sont cassés. Bref, il faudra
probablement faire qch.
On ne sait pas si l'ilo marche. Mais il est possible de relancer les backups.
specs du serveurs chez viarezo :
<https://wiki.crans.org/CransNostalgie/CransTechnique/LesServeurs/ServeurFt>
Pour thot : le serveur s'éteint spontanément après le démarrage. c'est
probablement à cause de la sonde de température
On remet ft puis on réinstalle thot
Il existe plus simple que borg. Est-ce qu'on ne passerait pas sur truc plus
récent. mais on garde borg pour le moment. Sinon on peut utiliser restic.
On s'assure que ft remarche avant de faire thot (moins urgent)
Pigeon : "IL FAUT REDÉMARRER AU PLUS VITE LES SERVEURS DE BACKUP"
Tealc : on n'arrive pas à ajouter les disques donc pk on y arriverait avec
thot ?
Backup chez aurore ? -> Pas forcément une bonne idée car il y a peu de membre
actif chez eux.
Chez Tuxae ? -> c'est possible on a l'accord du président.
Chez un hebergeur ? -> glacier. Pas chère pour écrire mais payer pour
récupérer les données.
ft urgent et une fois fonctionnel, on commence sur thot. On peut aussi chiffrer
les disques nativement avec zfs.
### Cephiroth
Le point ne bouge toujours pas. GaBo cherche la facture (c'est faux).
### Serveur matrix
De plus en plus de demande pour avoir une alternative libre à discord,
whatsapp....
Mastodon -> pas adapté
Zulipe -> pas adapté
Mattermost -> pas adapté
Matrix -> faire de la pédagogie. Pas le temps de faire le support technique ?
Il est possible de faire des vocaux. Il faut présenter ça aux gens mais iels
auront besoin d'une passphrase et ou une clef de récupération.
Connexion ldap (note, crans ou les deux ?) <-> matrix possible mais est-ce que
le serveur est possible de gérer plus de connexions.
En principal, obligation de mettre le ldap du crans. Possibilité d'utiliser la
note via Oauth...
Les alias ça change. On doit conserver le pk. Potentiellement, on peut ajouter
un préfix (genre "note_").
Ou alors, 2 instances de matrix, une pour chaque ldap. L'une est au bde mais le
crans s'en occupe.
Migrer SQLite à PostgreSQL.
Si on migre le bde, il faut que se soit très stable.
Est-ce qu'il est possible d'avoir de la redondance sur le serveur matrix ? a
priori oui... mais peut-être pas intégrer pas défaut à matrix.
matrix.crans.org juste un relai (bridge irc/matrix) pour la réinstallation, il
faut demander à Erdnaxe.
On garde le serveur matrix tel quel (quitte à augmenter les perfs). migre de
SQLite à PostgreSQL. LDAP crans en priorité.
On met element
chat.crans.org (facile à retenir)
FAIRE DE LA PUB !
5 secondes sur Mastodon selon pigeon (c'est (déjà) perdu) mais moi je pense
que la vérité est toute autre...
Retirer la condition "cephirot.date < mastodon.date".
Ajouter l'affirmation "Constellation.state == Cephiroth.state"
### Reprise des séminaires hebdomadaires
On en parle Samedi (31 août (2024 je précise car oui je vous vois à lire ce
point moulte années plutard !))
### état de l'imprimante
bref : ça marche pas
L'imprimante a été déplacée mais impossible de communiquer avec
l'imprimante.
Il faudra se poser avec des personnes de la DSI pour résoudre le pb. Mais dire
ce qu'on a fait, il est possible que ça avance.
pigeon pense pouvoir s'en charger mais il ne connait pas ce qu'il y a autour de
l'imprimante.
On essaie de s'en occuper assez rapidement (bleizi et pigeonmoelleux)
### mettre les clés gpg dans le pass
pb de rétention des clefs gpg. pigeon a "pillé" à bleizi les clefs.
potentiellement signer les clefs gpg des nounous.
Remettre de l'ordre dans le pass. thot renommé en surface sans raison (a
priori).
Pour la prochaine IN, garder le pass avec gpg ou passer sur sops ou autre...
Sinon, demander aux vielles nounous (peb, pollion) si iels veulent garder leurs
droits nounous (ça ressemble à une invitation à partir...).
Pour les autres, on propose de rajouter les clefs gpg dans le pass.
### Quand est-ce qu'on redémarre tous les serveurs qui en ont besoin
Près de 400 jours qu'il tourne. (pas de coupure estivale).
Pas possible de la faire avant les prochaines vacances. En profiter pour
refaire le cablage.
Une réunion de préparation de la réparation.
(redémarrage et brassage)-> prochain IN
### Chronolgie TODO list
Très urgent :
* Backup ft (commencé à faire les backup)
* 1/2 qui non important (genre voyager et helloworld)
* par ordre d'importance (genre mailman)
* d'ici là samedi rangement, inté, séminaires
* Cephiroth (garantie go GaBo)
* puis on s'occupe de thot
on est déjà dans qq semaines :
* onlyoffice (la limite)
* bleizi, pigeon -> imprimante
* les clefs gpg dans le passe (demander à pollion et peb, s'ils veulent rester
nounous)
* enlever les vielles nounous (charlie, peb ? et pollion ?)
Le mois prochain :
* prévénir tout le monde que les serveurs du crans sont down
* Backup tealc sur zéphir/cameron
* inventaire et commander des disques d'avances (un disque en rab compatible
pour chacun des serveurs)
* coupure : recabler, (vérifier l'étiqueteuse)
* PASSER LA POOL EN 4096
* réinstaller tealc
Après :
* voir matrix
* rediscuter de mastodon
* Nix
Jamais :
* Constellation
* Ceph

1325
crans.info 100644

File diff suppressed because it is too large Load Diff

View File

@ -117,7 +117,7 @@ En cas de problème, il est possible de le configurer après installation dans
Nom de domaine pour les machines adm : `adm.crans.org` Nom de domaine pour les machines adm : `adm.crans.org`
```config ```txt
FQDN : `[nom du service].adm.crans.org` FQDN : `[nom du service].adm.crans.org`
``` ```

View File

@ -0,0 +1,106 @@
# Comment redémarrer le Crans ?
Le Crans dispose de beaucoup de serveurs physiques en salle opérateur de l'ENS
(actuellement en SQ39), ainsi que beaucoup de machines virtuelles tournant sur
les hyperviseurs. De temps en temps (environ une fois par an), vous serez
amené⋅es à redémarrer l'entièreté des machines, par exemple pour recâbler la
baie, et il faudra alors faire les choses dans l'ordre. Voici un petit guide
sur comment faire précisément.
## Préparation
Tout d'abord, il faut discuter quelques semaines (~2 mois) en avance du besoin
d'un redémarrage : ce n'est pas un acte à prendre à la légère car des personnes
(même des vieilleux !) utilisent des services du Crans dans la vie de tout les
jours, il faut donc éviter de les couper trop souvent. Cependant, pour faire
des mises à jour majeures, du recâblage, des changements de serveurs, ... cela
peut s'avérer nécessaire.
Il faut discuter du besoin d'un redémarrage pendant au moins 2 IN au préalable
pour bien définir ce qu'il y a précisément à faire, et quelles seront les
nounous présentes pour aider. Bien évidemment, les apprenti⋅es sont les
bienvenu⋅es, mais il est impératif que des nounous soient présentes pour bien
expliquer ce qu'il se passe.
Ensuite, une fois que le besoin de redémarrer est bien acté, il faut prévenir
la **totalité** des adhérent⋅es et des ancien⋅nes adhérent⋅es du Crans avec ce
qu'on appelle communément un "mail all". Pour cela, vous devez vous rendre sur
la VM `re2o`, écrire le mail dans un nouveau dossier puis exécuter le script
d'envoi de mail. Ce mail doit être envoyé au minimum deux semaines avant la
coupure, voire plus si possible. Il ne faut pas hésiter en plus de cela de
prévenir de nouveau les adhérent⋅es via d'autres plateformes de communications
(newsletter BdE, Discord, ...).
## Avant la coupure
Le jour de la coupure, le mieux est de réunir toutes les personnes souhaitant
participer (sans compter les retardaires) dans le bureau du Crans (actuellement
en MB87). Une bonne idée est de prendre le temps qu'il faut pour clairement
poser le plan du jour sur un tableau avec les différents objectifs à réaliser,
potentiellement en parallèle. N'hésitez pas à vous répartir sur différentes
tâches effectuables simultanément si vous êtes suffisamment nombreux⋅ses
(compter au moins deux personnes dont une nounou par tâche pour ne laisser
personne seul).
Vous pouvez au préalable ou par la suite récupérer les badges du Crans ouvrant
la salle opérateur SQ39 au PC sécurité : prendre deux badges au lieu d'un est
une plutôt bonne idée pour qu'un groupe de personnes puisse faire un
aller-retour sans se retrouver coincé à l'extérieur. Ne pas hésiter également à
prendre à boire, de préference dans des récipients qui ne se renversent pas
facilement et des boissons qui ne tâchent pas trop.
En parallèle, vous pouvez garder une trace de toutes les actions effectuées
dans la journée en notant tout ce que vous faites sur un pad (qui n'est pas
hébergé au Crans) pour pouvoir retracer toutes les actions, ce qui est pratique
lorsque que quelque chose casse (un peu souvent donc).
## Éteindre les serveurs
Pour éviter au maximum les problèmes, il est important que certaines machines
soient éteintes avant d'autres. Voici un ordre qui fonctionne avec
l'infrastructure actuelle :
- serv[ENS]
- VM adh (passer par Proxmox sur stitch/odlyd/gulp)
- hyperviseurs adh : stitch/odlyd/gulp
- zamok
- VM adm (sauf routeur-sam !, passer par Proxmox sur sam)
- hyperviseurs adm (sauf sam !) : jack/daniel
- cameron
- tealc
- sam
Surtout ne pas hésiter à vous ssh sur les machines au préalable pour ne pas se
retrouver coincé car le LDAP adm est éteint.
## Rallumer les serveurs
De même que pour l'extinction, l'allumage des serveurs peut se faire dans à peu
près n'importe quel ordre, sauf pour quelques machines importantes. Voici un
ordre qui fonctionne avec l'infrastructure actuelle :
- sam et routeur-sam
- tealc
- cameron
- hyperviseurs adm : jack/daniel
- zamok
- VM adm (passer par Proxmox sur sam)
- hyperviseurs adh : stitch/odlyd/gulp
- VM adh (passer par Proxmox sur stitch/odlyd/gulp)
- serv[ENS]
⚠ Attention : pour zamok, vous devez redémarrer le service postfix avec
```bash
sudo systemctl restart postfix.service
```
après avoir rétabli le réseau et **avant** de redémarrer redisdead afin de ne
perdre aucun mail. Plus exactement : il faut vérifier que le dossier
`/home/mail` sur zamok contienne des centaines d'adhérent⋅es en non pas
seulement quelques dizaines.
Ensuite, assurez-vous bien que **TOUS** les serveurs soient allumés, dont ceux
de serv[ENS] ! Profitez-en alors pour faire des mises à jour nécessaires
pendant que les adhérent⋅es ne sont pas encore de retour sur zamok et les
autres services.

View File

@ -144,13 +144,67 @@ thor(config-if-Et3-4)#exit
``` ```
Puis ensuite on peut configurer le reste (VLANs et tout …) dans l'interface Puis ensuite on peut configurer le reste (VLANs et tout …) dans l'interface
Port-Channel 3. Port-Channel 3. (Et non pas sur les interfaces eth).
```txt ```txt
thor(config)#interface Port-Channel 3 thor(config)#interface Port-Channel 3
thor(config-if-Po3)# thor(config-if-Po3)#
``` ```
### Configurer le MLAG (Multi chassis Link AGregregation)
Nos switch arista supportent une feature que arista appele le MLAG. Cette feature
permet notaments de faire du LACP avec des ports entre deux switch et donc d'avoir
une redondance sur les switchs.
Il faut commencer par configurer le MLAG entre les deux switchs.
```txt
TODO
```
On peut ensuite configurer un lien en LACP. On configure ici les ports 3 de
chaque switch en redondance sur le port-channel 3 / mlag 3.
sur le premier switch :
```txt
arceus(config)#interface ethernet 3
arceus(config-if-Et3)#channel-group 3 mode active
arceus(config-if-Et3)#interface port-channel 3
arceus(cofnig-if-Po3)#mlag 3
```
sur le second switch :
```txt
carapuce(config)#interface ethernet 3
carapuce(config-if-Et3)#channel-group 3 mode active
carapuce(config-if-Et3)#interface port-channel 3
carapuce(config-if-Po3)#mlag 3
```
On peut vérifier l'état des liens configurés en mlag via :
```txt
carapuce(config-if-Po11)#show mlag interfaces
local/remote
mlag desc state local remote status
---------- ---------- ----------------- ----------- ------------ ------------
1 active-full Po1 Po1 up/up
3 active-full Po3 Po3 up/up
5 active-full Po5 Po5 up/up
6 inactive Po6 Po6 down/down
7 inactive Po7 Po7 down/down
8 active-full Po8 Po8 up/up
9 inactive Po9 Po9 down/down
10 active-full Po10 Po10 up/up
11 active-full Po11 Po11 up/up
12 inactive Po12 Po12 down/down
```
Il faudra configurer les vlans et autres sur les port-channel des deux switchs.
### Mettre à jour le switch ### Mettre à jour le switch
> C'est pas forcément nécessaire et ça peut tout casser, si néanmoins tu > C'est pas forcément nécessaire et ça peut tout casser, si néanmoins tu

View File

@ -0,0 +1,92 @@
# Outils de backups
## Présentation
Ce dossier contient une présentation des logiciels utilisés par le Crans pour
faire ses sauvegardes, ou backups en anglais. On entend ici par backup une
opération qui consiste à dupliquer de manière sécurisée (chiffrée en
l'occurrence) sur d'autres serveurs les données des utilisateurices et des
machines du Crans.
Comme dans tout le dossier [logiciels](../../../), le but n'est pas de
réexpliquer l'entièreté des fonctionnalités mais simplement d'a voir les bases
de compréhension.
## Organisation
Vous trouverez ici deux fichiers correspondant aux deux logiciels utilisés pour
les backups au Crans :
- [borg](./borg.md) pour les logiciels borg et borgmatic ;
- [restic](./restic.md) pour le logiciel du même nom.
Il est cependant fortement conseillé de lire la fin de ce fichier présentant
certaines informations concernant les backups qu'il est important de connaître
avant de lire plus en détails les autres fichiers détaillant plus
spécifiquement les logiciels.
## Contexte
### Historique
Pour prevenir certains incidents dus à des erreurs de manipulation, le collège
technique a mis en place en système de backups. Le but de celui-ci est de
pouvoir, si le besoin s'en fait ressentir, aller rechercher un fichier supprimé
ou écrasé. Bien qu'il serait possible de simplement faire une copie périodique
des données sur un serveur distant, on lui préfère des solutions un peu plus
développées qui permettent de faire des sauvegardes incrémentales. Fut un temps,
la solution technique en place était le logiciel
[BackupPC](https://backuppc.github.io/backuppc/), cependant celui-ci commençant
à dater et ayant une faible ergonomie, nous utilisons aujourd'hui le logiciel
[borg](https://borgbackup.readthedocs.io/) et son frontend
[borgmatic](https://torsion.org/borgmatic/). De plus, le logiciel
[restic](https://restic.readthedocs.io/) a été installé en parallèle pour sa
simplicité d'utilisation : borg/borgmatic et restic cohabitent donc pour le
moment pour que les jeunes membres actif⋅ves puissent comparer afin de faire un
choix à long terme.
### Backups incrémentales
Avant de présenter ces logiciels, attardons nous un peu sur ce qu'on entend par
faire des backups incrémentales. Pour cela revenons à notre piètre solution
initiale qui consiste à copier (à grands coups de rsync, unison, scp...) toutes
les données que l'on souhaiterait sauvegarder. Pour que ces sauvegardes soient
utiles, il faut les réaliser assez fréquemment (quelque part entre un jour et
une semaine disons). Cependant, à chaque nouvelle backup réalisée, celle-ci va
venir écraser le contenu de la précédente et ainsi, on ne dispose jamais plus
que d'une copie des données de la veille. Ainsi, des dysfonctionnements
automatiques ou simplement de la négligence peuvent faire que l'on ne se rendra
compte que l'on avait besoin de récupérer notre fichier il y a déjà quelques
jours et qu'il a maintenant déjà été supprimé de la copie de sauvegarde.
On préfererait donc pouvoir disposer d'une collection de sauvegardes qui
remonte sur quelques jours voir moi en fonction de la politique de rétention de
sauvegarde qu'on mettrait en place. Par exemple, une sauvegarde pour chacun des
septs derniers jours puis quelques unes espacée d'une semaine. Si l'on reprend
notre solution naïve, on peut facilement en étendre l'usage pour ce nouvel
office: on réalise une copie complète des données par jour que l'on souhaite
sauvegarder. Suivant la politique de rétention que l'on a donné plus tôt cela
consisterais en une quinzaine de copies distinctes des données à sauvegarder et
donc une multiplication par quinze de la taille de celle-ci.
Si je jette un œil rapide à la taille que prends aujourd'hui les données
utilisateurices, je vois qu'on utilise un peu plus de 2.5T de stockage, donc si
l'on suit la logique, on devrait disposer d'une ou plusieurs machines
totalisant un stockage d'environ 40T. Inutile de le dire je pense, mais cela
fait (beaucoup) trop. Heureusement pour nous, d'un jour sur l'autre
l'intégralité de nos données stockées ne varie pas et seule une petite partie
change sur le cours d'une journée. Ainsi, si l'on ne stocke que les différences
accumulé sur une journée par rapport à la veille, on se retrouvera avec une
taille beaucoup plus raisonnable de sauvegarde. C'est ~la déduplication.
### Qu'est-ce que l'on sauvegarde ?
Au Crans, on sauvegarde deux types de données:
- D'un côté, on a les données d'administration, c'est une partie des disques
de tous les serveurs (généralement le /etc et le /var sauf cas particulier),
le home des nounous, les bases de données...
- De l'autre côté; on a les données des adhérents, c'est à dire: le contenu
de leur répertoire personnel et de leur dossier mail qui au jour où j'écris
ses lignes peut contenir au maximum 30G et 10G de données respectivement.

View File

@ -0,0 +1,110 @@
# Borg
Page officiel de borg : <https://www.borgbackup.org/>.
Documentation de borg : <https://borgbackup.readthedocs.io/>.
Page officielle de borgmatic : <https://torsion.org/borgmatic/> (contient la
documentation).
## Borg et borgmatic
Borg est un logiciel client/serveur permettant d'effectuer des sauvegardes
incrémentales, dédupliquées et chiffrées par le client. Le serveur est simple à
installer et utilise ssh comme protocole de transport entre lui et le client.
Ainsi, il suffit de donner un accès ssh au client via une paire de clés pour lui
autoriser à discuter avec le serveur. Quelque chose ressemblant à ça dans le
`.ssh/authorized_keys` de l'utilisateur sur le serveur qui fera les backups:
```txt
command="borg serve --restrict-to-path {{ chemin vers les sauvegardes }}",restrict {{ clé publique ssh }}
```
Avec l'installation du paquet `borg` c'est la seule chose à faire sur le serveur
et le reste du travail sera réalisé par le client. Après avoir aussi installé
`borg` sur le client, on peut déjà commencer à faire quelques sauvegardes.
Cependant, si l'on utilise que borg pour les faire (ce qui est possible), on se
retrouvera avec des commandes bien trop longues dans lesquels on passe notre
temps à spécifier des arguments plusieurs fois: comment contacter le serveur ?
où stocker les sauvegardes? quel politique de rétentions garder ? que faut-il
sauvegarder ? Borgmatic est un frontend de borg qui définir une bonne fois pour
toutes ses options dans un fichier de configuration pour ensuite n'avoir plus
qu'à faire des appels simples à borgmatic qui pasera à borg tous les paramètres
dont il a besoin. Le but n'est pas ici d'être exhaustif sur ce que peut/doit
contenir ce fichier de configuration. Je vous redirige pour ça vers la
[documentation
officielle](https://torsion.org/borgmatic/docs/reference/configuration/). Ici,
je vais plus chercher à vous donner quelques options minimales et des exemples
d'utilisations de borgmatic. Commençons par donner le contenu d'un fichier de
configuration partiel:
```txt
location:
source_directories:
- /etc
- /var
repositories:
- ssh://borg@backup-server:/folder/to/backup/to
storage:
encryption_passphrase: PASSPHRASE
ssh_command: ssh -i /etc/borgmatic/id_ed25519_borg
retention:
keep_daily: 4
keep_monthly: 6
```
Dans la section `location`, on définit deux choses: ce que l'on souhaite
sauvegarder et où on souhaite le sauvegarder. Ici on va backupé le `/etc` et
`/var` de notre client sur un serveur distant qu'on contactera via ssh. Dans la
section suivante, `storage`, on définit quelques options relatives au stockage
et à comment y accéder. Premièrement, on donne la passphrase de chiffrement des
sauvegardes (attention, si elle est perdue, les sauvegardes ne seront plus
accessibles). Ensuite, on précise comment accéder au serveur (ici, l'information
importante est où se trouve la clé privée pour pouvoir se connecter). Enfin,
dans la section retention, on définit notre politique de retention: le serveur
ne doit stocker qu'une backup quotidienne sur les 4 derniers jours, et une
backup mensuelle sur les 6 derniers mois.
En supposant les autres options de fonctionnement renseignées dans le fichier,
que je ne détaillerais pas ici, il est maintenant possible de commencer à
utiliser le logiciel et faire nos premières sauvegardes.
## Créer l'archive de stockage
La commande suivante permet de créer l'archive où seront stockées les
sauvegardes sur le serveur.
```bash
borgmatic init -e repokey
```
## Faire une première sauvegarde
Pour faire une sauvegarde, rien de plus simple, on appelle simplement le
programme borgmatic sans option. Il est néanmoins possible de demander un
affichage plus verbeux pour le débogage.
```bash
borgmatic
borgmatic -v 2
```
## Lister les différentes sauvegardes dans l'archive
```bash
borgmatic list
```
## Monter une sauvegarde précise sur un point de montage
```bash
borgmatic mount --archive {{ nom de l'archive ou latest pour la dernière }} --mount-point /mnt --path {{ chemin à monter de l'archive }}
borgmatic mount --archive latest --mount-point /mnt --path etc/nginx/nginx.conf
```
## Automatiser les backups
Pour réaliser des backups périodique, on peut en laisser la charge à un cron ou
à systemd à l'aide d'un timer.

View File

@ -0,0 +1,138 @@
# Restic
Page officielle de restic : <https://restic.net/>.
Documentation de restic : <https://restic.readthedocs.io/>.
Dépôt officiel de restic rest-server : <https://github.com/restic/rest-server>.
## Présentation
Restic est un logiciel client/serveur permettant d'effectuer des sauvegardes
incrémentales, dédupliquées et chiffrées par le client. Différents serveurs
sont utilisables par le client, nous présenterons ici le serveur REST de restic
utilisant le protocole HTTP, qui est installé actuellement au Crans sur
[thot](../../../infrastructure/machines/physiques/thot.md).
Pour la configuration d'un client, vous aurez besoin d'installer le paquet
`restic` sur les machines sous debian, restic étant déjà packagé dans nixpkgs
pour les machines sous NixOS.
## Configuration du serveur
Le choix le plus simple à mettre en place pour la partie serveur de restic est
restic rest-server, très simple à mettre en place. Vous pouvez trouver la
configuration actuelle dans le module restic du
[dépôt NixOS](https://gitlab.crans.org/nounous/nixos).
Le fonctionnement de ce serveur REST est le suivant : le client compresse et
chiffre ses données avec un mot de passe, vient s'authentifier en
[basic auth](https://en.wikipedia.org/wiki/Basic_access_authentication) auprès
du serveur, puis dépose la backup au fur et à mesure de son avancée sur le
serveur. Chaque client dispose donc de deux mots de passe : une clef de
chiffrement pour les données, ainsi qu'un mot de passe pour s'authentifier
auprès du serveur REST.
Deux notions sont importantes à comprendre ici dans la configuration du serveur
REST.
- L'option `privateRepos`/`--private-repos` : permet de faire en sorte qu'un⋅e
utilisateurice (dans notre cas une machine) ne puisse accéder qu'à ses
propres backups et puisse créer tous les dépôts souhaités dans un sous
dossier à son nom. Ainsi, une fois authentifiée, la VM flirt aura accès à
tous dépôt de la forme `restic:http://thot.adm.crans.org/flirt/<dépôt>`, ce
qui est particulièrement pratique pour ne pas avoir à gérer les accès à la
main pour chaque machine.
- Les clients sont authentifiées par le serveur grâce à un fichier `.htpasswd`
situé à la racine du dossier de données. Ainsi, si le dossier de données est
`/backups`, le fichier d'authentification sera `/backups/.htpasswd`. Ce
fichier est un fichier d'authentification standard : vous pouvez consulter la
[page Wikipédia](https://en.wikipedia.org/wiki/.htpasswd) dédiée pour plus
d'informations. Vous pouvez alors ajouter une machine à ce fichier avec la
commande :
```bash
sudo htpasswd -B /backups/.htpasswd <username> [<password>]
```
Si le mot de passe n'est pas spécifié, il sera alors demandé sur l'entrée
standard.
## Configuration du client
Théoriquement, restic est uniquement un logiciel qui s'utilise directement.
Cependant, nous souhaitons faire des sauvegardes automatiquement en utilisant
des systemd timer, on va donc créer plusieurs fichiers pour ne pas à avoir tout
à spécifier directement dans les lignes de commande.
Actuellement, la configuration des clients restic se situe dans le dossier
`/etc/restic` sous debian, et dans le
[dépôt NixOS](https://gitlab.crans.org/nounous/nixos) pour les machines sous
NixOS. Dans les deux cas, on retrouve les mêmes éléments (on donne les noms
pour la configuration par défault des machines sous debian) :
- un fichier d'environnement `base.env`, contenant plusieurs variables d'environnement
dont l'utilité précise peut être trouvée dans
[la documentation de restic](https://restic.readthedocs.io/en/stable/040_backup.html#environment-variables).
- un fichier `base-repo` contenant la position du dépôt (serveur REST), avec
les identifiants de connexion, qui se présente sous la forme
`restic:http://<username>:<password>@thot.adm.crans.org/<username>/base`.
- un fichier `base-password` contenant le mot de passe de chiffrement des
sauvegardes.
- deux fichiers `base-includes` et `base-excludes` indiquant respectivement les
dossiers inclus et exclus pour les sauvegardes.
En plus de cela, on trouve un service systemd `restic-base` ainsi qu'un timer
associé dans le dossier `/etc/systemd/system/`. Ce service lancera deux
commandes : une commande pour lancer une sauvegarde, et une commande pour
supprimer les anciennes sauvegardes qui ne seront pas gardées en tant que
sauvegarde journalière/hebdomadaire/mensuelle/annuelle (définies par la
configuration).
## Initialiser un dépôt
En supposant que vous avez la configuration décrite ci-dessus, vous pouvez
initialiser un dépôt grâce à la commande suivante :
```bash
restic init --repository-file /etc/restic/data-repo --password-file /etc/restic/data-password
```
## Faire une sauvegarde à la main
Pour faire une sauvegarde à la main, rien de compliqué, il suffit de lancer le
service systemd normalement de la manière suivante :
```bash
sudo systemctl start restic-base.service
```
(Même si c'est surprenant, vous pouvez faire CTRL+C à ce moment dans votre
terminal, la tâche continuera en fond.)
De plus, si la variable `RESTIC_PROGRESS_FPS` a été affectée à une valeur
strictement positive, vous pourrez voir la progression de la sauvegarde dans
le journal. Vous pouvez donc y accéder par la commande :
```bash
sudo journalctl -xefu restic-base
```
## Consulter l'état des sauvegardes
Pour consulter la liste actuelle des sauvegardes, vous pouvez simplement
utiliser la commande :
```bash
restic snapshots --repository-file /etc/restic/data-repo --password-file /etc/restic/data-password
```
De plus, vous pouvez facilement monter une sauvegarde sur un point de montage
avec la commande suivante :
```bash
restic mount /mnt --repository-file /etc/restic/data-repo --password-file /etc/restic/data-password
```
Cela bloquera alors votre terminal, et la sauvegarde sera démontée dès que vous
quitterez votre terminal, évitant d'avoir une sauvegarde montée et oubliée.

View File

@ -0,0 +1,57 @@
# Systemd
Systemd est une suite logiciel pour systèmes GNU/Linux. Cette suite logiciel
fournit de nombreuses fonctionnalités, notamment pour configurer son OS et
suivre les *daemon*\ s actifs et leurs journaux.
Ce document décrit *certaines* fonctionnalités de Systemd bien choisies,
lesquelles sont jugées intéressantes pour l'administration système ou pour
utilisateurices. Il sera sans doute découpé en plusieurs morceaux s'il devient
trop long.
## Unités de configuration: un format unifiant.
### Services.
### Minuteurs.
### (Auto)mount.
## Configuration Réseau.
### Obtenir des adresses IPs.
### Configuration DNS (récursif).
## Journalisation.
### Lecture des journaux: les bases.
### Espaces de noms.
### Partage de journaux entre machines.
## Aspect pratique (pour utilisateurices)
### Chiffrement de disque.
### Chargeur d'amorçage.
## Conteneurisation et virtualisation.
### Conteneurisation.
### Virtualisation.
## Gestion des secrets.
## Trucs et astuces.
### Systèmes dynamiques: gestion des erreurs dans les services.
### Administration à distance.
<!-- LocalWords: IPs virtualisation utilisateurices Journalisation daemon
<!-- LocalWords: Systemd Linux
-->
-->

View File

@ -1,198 +0,0 @@
-*- mode: org; org-hide-emphasis-markers: t; -*-
#+TITLE: Description de ~systemd~ et comment l'utiliser?
#+AUTHOR: Des nounous quelconques.
#+EMAIL: contact@crans.org
#+SEQ_TODO: TODO | in_progress | DONE
#+DESCRIPTION: Pfiou que c'est fastidieux d'apprendre à parler au monde entier.
#+INSTITUTE: Cr@ns
#+LANGUAGE: fr
#+STARTUP: overview
Le présent document est destiné aux proptiétaires de VMs au Cr@ns, mais plus
généralement à nos membres qui souhaitent tirer le plus de ~systemd~.
~systemd~ est une suite logicielle qui a pour objectif de fournir une interface
simple et unifiée à de nombreuses fonctionnalités du noyau Linux. En effet, les
APIs Linux sont nombreuses et les utilisations multiples des mêmes interfaces
peut être redondant.
Par exemple, considérons la tâche "lancer une backup" et supposons que l'on
veuille (1) que la commande soit lancée un jour après que la dernière itération
se soit terminée, et (2) éviter qu'une nouvelle backup soit lancée si l'ancienne
n'est pas encore terminée. Systemd permet de paramétrer cela en quelques lignes,
là où d'autres seraient tentés de faire un cron, dont la tâche associés commence
par effectuer les vérications nécessaires au lancement conditionel.
-----
~systemd~ fournit un langage de configuration unifié et permet de paramétrer son
système de manière déclarative, ce qui mène à des configurations plus sûres,
systématiques et dont les sémantiques sont claires.
* Résumé succint (et partiel) des tâches effectuées par un utilitaire ~systemd~
| *Tâche* | *Utilitaire disponible* | Optionel (pour un système basé sur ~systemd~) |
|--------------------------+------------------------------+-----------------------------------------------|
| Boot loader | ~systemd-boot~ | Oui |
| Init système (initrd) | ~systemd~ | Oui |
| Init système | ~systemd~ | Non |
| Gestionaire de service | ~systemd~ | Non |
| DNS récursif | ~systemd-resolvd~ | Oui |
| Gestion des ~$HOME~ | systemd-homed | Oui |
| Montage de disques | ~systemd-fstab-generator~ | Pas à ma connaissance |
| | ~systemd-gpt-auto-generator~ | Oui |
| | ~systemd-fsck-generator~ | Peut-être |
| Chiffrement de disques | ~systemd-cryptsetup~ | Oui |
| | ~systemd-cryptenroll~ | Oui |
| | ~systemd-crypttab-generator~ | |
| Chiffrement de secrets | ~systemd-creds~ | Oui |
| Gestion de l'horloge | ~systemd-timedated~ | Oui |
| | ~systemd-timesyncd~ | Oui |
| Nom d'hôte | ~systemd-hostnamed~ | Je ne sais pas |
** Critiques communes
/Cf/. la [[https://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions/][FAQ officielle]] du projet.
- /Il est dit que ~sd~ fait trop de choses/ !
Ah bon ? Pourtant, ~systemd~ n'apparait pas si souvent dans le tableau ci-dessus.
- /Il est dit que ~sd~ est une dictature/ !
Je ne contribue pas, mais suis les messages postés sur les mailing list et
parfois les issues du GitHub. Je trouve la communauté très accueillante.
** Évolution de ~systemd~
~systemd~ évolue rapidement, pour permettre une gestion toujours plus fine des
services, VMs, ... Certaines mises à jour de ~systemd~ retirent des
fonctionnalités (/e.g./ ~/usr~ séparé ou ~cgroupsv1~). Lorsqu'il y a retrait d'une
fonctionnalité, cela est au annoncé à l'avance, pour que chacun·e ait le temps
de s'y préparer. Pour les deux exemples susmentionnés, cela a été annoncé plus
d'un an à l'avance.
* Rappel : processus de démarrage d'un ordinateur /systemd/GNU/Linux/
Ce paragraphe présente la manière dont les machines démarrent. Cette
présentation se veut rapide, mais suffisante pour que chacun·e puisse comprendre
à quelle étape de ce processus les disques d'un ordinateur sont déchiffrés,
montés, /etc./
/Note/ : Je me concentrerai que sur les systèmes (U)EFI utilisant une table de
partitions ~gpt~ (/i.e./ le disque sur lequel se trouvent les fichiers de démarrage
contient un partitionnement ~gpt~).
Procédé de démarrage :
1. le logiciel de la carte mère est le premier élément à démarrer. Il charge
vos paramètres (/e.g./ secure boot activé ou non) ;
2. le logiciel cherche à démarrer ou bien votre système d'exploitation
directement, ou bien un /système d'amorçage/ (/bootloader/ en, anglais) ;
3. supposons qu'il lance ~systemd-boot~.
~systemd-boot~ va constituer un menu avec
- une ou plusieurs entrées pour lancer le(s) système(s) d'exploitation
disponible(s) sur votre machine (ou en réseau),
- une entrée pour redémarrer dans le panneau de configuration du logiciel
UEFI,
- une entrée pour redémarrer ;
4. Supposons que l'utilisateurice (ou ~systemd-boot~) choisisse un système sous
~systemd~.
~systemd~, qui est actuellement lancé dans un petit environnement (appelé
/initrd/) va chercher à initialiser le système, noramment en :
1. déchiffrant la partition racine du système (si nécessaire),
2. montant la partition racine du sysème,
3. pivotant sur le système final dont ~systemd~ vient de monter ~/~.
5. Nous sommes sur la bonne voie : le système de fichier principal est monté.
~systemd~ monte les partitions/disques/resources réseaux supplémentaires
requis, met en place les sous-systèmes nécessaires (journalisation, réseau,
...).
L'un des derniers services démarré permet aux utilisateurices de
s'authentifier. Le sysème a fini de démarrer.
* TODO Configuration
** TODO Unité de configuration (~man systemd.unit~)
** TODO Service (~man systemd.service~)
** TODO Cibles (~man systemd.target~)
** TODO Minuteurs (~man systemd.timer~)
* TODO Systemd : aspect pratique
** TODO Chiffrement (mots de passe, recovery key, FIDO2 ou TMP2)
L'utilitaire principal pour gérer le chiffrement de disques est
~systemd-cryptenroll~.
** TODO Reconnaissance automatique de partitions
Lors de l'installation d'un système d'exploitation (avec UEFI), il y a au moins
deux partitions :
- une ESP (/EFI System Partition/), laquelle stocke les images de démarrage (dont
l'éventuel boot loader) ;
- une partition racine (root, ou ~/~), laquelle correspond au chemin ~/~ pour le
système. C'est ici que sont généralement stockées vos applications, la
configuration système, /etc/.
Pour ~systemd~, touts les points de montage sont des /unités de montage/ et le
déchiffrement des disques est effectué via des /unités de services/. Ces unités
sont /générées/ (/Cf./ plus bas).
Lors du démarrage, il faut mettre le système de fichiers en place, /i.e./ monter
les disques. Lors de l'installation du système d'exploitation, deux choix
s'offrent à vous :
- /OU BIEN/ Décrire les blocks à déchiffrer dans ~/etc/crypttab~ (/crypt table/) et
les points de montage dans ~/etc/fstab~ (/file systems table/).
Ces fichiers seront inclus dans l'image de démarrage (qui est souvent appellée
/initrd/ ou /initramfs/), afin que ~systemd~ sache quels disques déchiffrer et
monter (et comment).
- /OU BIEN/ Indiquer le type de chaque partition ("X est ~/~", "Y est ~/boot~", "Z est
~/home~", /etc./). Si tel est le cas, il n'est plus nécessaire d'inclure les
partitions concernées dans ~/etc/fstab~.
/Note/ : Si vous utilisez LUKS2 pour chiffrer vos disques, il n'est pas non plus
nécessaire d'indiquer ces éléments dans ~/etc/crypttab~.
/Exemple/ : Partition ~/home~, troisième partition du disque ~/dev/nvme0n1~.
Il suffit :
- de changer le type de partition de ~/dev/nvme0n1p3~ :
#+begin_src fdisk
fdisk /dev/nvme0n1
t # change le type de partition
3 # numéro de la partition à mettre à jour
home # (ou 43) abbréviation pour "933ac7e1-2eb4-4f13-b844-0e14e2aef915"
w # écrit les changements à la table de partitions
#+end_src
- retirer la ligne correspondant à ~/home~ dans ~/etc/fstab~ (et si la partition
est chiffrée, de ~/etc/crypttab~ aussi),
- régénrer les images de démarrage,
- redémarrer et tester.
/Note/ : se référer à ~man systemd-gpt-auto-generator(8)~ pour une liste complète
des tags ~gpt~ reconnus par ~systemd~.
** TODO Redimension automatique de partitions
** TODO UKI et Secure boot
* TODO Réseau
* TODO Journalisation
* TODO Administration à distance