# 2024/04/06 (Préparation maintenance) * [Réunion précédente](https://wiki.neutrinet.be/fr/rapports/2024/01-28) * [Pad de la réunion](https://doc.neutrinet.be/preparation-maintenance-25-02-2024#) Heure de début : 11h00 Présences : - HgO - Célo - Tharyrok ## Météo *Moment informel durant lequel on exprime **en peu de mots** comment on se sent et si on a une attente forte pour la réunion.* **Ce n'est pas un moment de discussion mais d'expression individuelle et ce n'est pas obligatoire :-)** ### Attente(s) forte(s) *Si l'une ou l'autre personne exprime une attente forte, merci de vous en occuper en priorité ou de la noter dans le hub ou dans un point approprié.* Fin: jusqu'au ronflement ## Ce qui reste a faire ### Matériel - Préparer les bons rails pour chaque serveur, SAN y compris -> fait - Remplacer un des OSD par celui de 2To -> fait - Preparer les oreilles du switch -> fait - Remplacer les batteries du SAN -> fait - Tester la connexion management du SAN via un bête switch -> fait - Préparer 3 x 2 HDD de 900 Gb pour les backups -> fait ### Config à faire avant - Appliquer ansible sur les serveurs (avec modifs bookworm) -> fait - Config du mikrotik pour les ports de collect, peering et transit -> sur place - Config de la synchro des backups (optionnel) - Config du disque SAN (optionnel) - Configurer un autre mot de passe pour l'iDrac -> fait - set les ip des idrac -> fait ``` ipmitool lan set 1 ipsrc static ipmitool lan set 1 ipaddr 10.0.10.116 ipmitool lan set 1 netmask 255.255.255.0 ipmitool lan set 1 defgw ipaddr 10.0.10.1 ipmitool lan set 1 arp respond on ``` ### Config le jour même - Retirer un serveur HP et placer deux serveurs Dell (30min) - Configurer les deux switchs pour qu'ils se parlent sur le VLAN management (1h) - Transférer les VM de l'ancien cluster vers le nouveau (20min) - Retirer l'ancien switch (20min) - Retirer le dernier HP et Topi et placer le dernier serveur (20min) - Pour le transfert des VM, on va: - Éteindre un des deux serveurs et transférer les VMs sur le serveur qui reste allumé. - Dire à CEPH qu'on ne fonctionne que sur un serveur. - Allumer deux machines du nouveau cluster - Configurer le nouveau switch - Faire un transfert cross-cluster de proxmox. Note: Parmi les RJ45 vers SFP, on n'a pas assez pour faire les Idrac et les liens de transit mais on peut s'arranger en attendant de tout avoir. ### Transfert de connaissance - Synchronisation des backups via syncthing (documentation) - https://syncthing.net/ - Switch Mikrotik (apprentissage et documentation) - Config du disque SAN (apprentissage, discussion et documentation) - Config des backups pour nos membres (discussion) ## Datacenter ou pas demain ? Marcel serait dispo en voiture aujourd'hui. On aimerait ne pas passer toute la journée de dimanche au datacenter, mais cela implique de faire une partie du boulot aujourd'hui et de venir placer les serveurs dans l'après-midi. Pour la question du transport, Marcel ne sera dispo qu'au soir. Se pose la question d'un taxi, et de comment on récupère les anciens serveurs. Pour ces derniers, on peut les laisser là, et jmg pourrait venir les transporter un autre jour. Au pire, début mai on a prévu de venir au datacenter. Qu'est-ce qui est requis en terme de connaissances avant d'aller au datacenter ? Il y a le switch réseau qu'une seule personne maîtrise pour le moment. À l'époque, il y avait aussi une crainte de ne pas maîtriser les serveurs, mais cela n'est plus le cas depuis qu'on a fait des ateliers et des procédures en mars. L'important est qu'on puisse prendre le temps de repasser sur la config du switch. Il n'y a pas de necessité de savoir profondement la config du switch mais savoir facilement se connecter au vlan de management. Il faut aussi avoir des procédures d'urgence. Savoir comment se connecter à l'Idrac, savoir comment se connecter au switch. On a aussi eu deux incidents en mars sans doute liés à la vetustité du matériel, donc ça devient un problème de laisser l'infra dans cet état. Par contre, en février-mars, le fait de se dire qu'on n'allait pas au datacenter tant qu'on avait pas une bonne connaissance du matériel qui allait au datacenter. Il y a une crainte qu'on ne prenne pas ce genre d'iniative quand le matériel sera disponible. Nous avons manqué de bien avaluer nos priorités, rendre possible le reseau pour les VPS, les backup pour nos membres mais il faut s'occuper de bien partager les savoir entre nous. HgO et Célo vont organiser des ateliers de partage de connaissances entre elleux, et à partir de septembre on fera des reviews avec Tharyrok. Il n'est pas nécessaire d'avoir le switch pour commencer à expérimenter, on peut le faire dans GNS3. On peut aussi se dire qu'on commandera le deuxième switch à partir de septembre, si la santé financière de Neutrinet va mieux, ce qui semble être le cas jusqu'à présent. À noter que le MC-LAG (Multi Chassis Link Aggregate Group) n'a pas pu être testé car disponible uniquement sur du vrai matériel et non dans GNS3, le MCLAG permet de faire communiquer deux switch qui ont chaqu'un un port dans un LACP. On décide de ne pas envoyer le deuxième switch au datacenter tant que Célo et HgO n'ont pas une bonne connaissance du switch Microtik. ## Remplacement osd On a rajouté la procédure pour remplacer un OSD dans https://doc.neutrinet.be/preparation-maintenance-25-02-2024 ## Lancement du playbook On rajoute cette ligne dans le fichier d'inventaire `./inventories/production.ini`: ``` [louise_baremetal] topi.louise.neutri.net ansible_host=172.16.1.147 nam.louise.neutri.net ansible_host=172.16.1.148 bour.louise.neutri.net ansible_host=172.16.1.149 ``` Attention, si jamais la partie telegraf plante, il faudra commenter ceci dans `./roles/telegraf/templates/global.conf.tpl`: ``` [[inputs.systemd_units]] ## Filter for a specific unit type, default is "service", other possible ## values are "socket", "target", "device", "mount", "automount", "swap", ## "timer", "path", "slice" and "scope ": unittype = "service" ``` ## Espace de backup ## Switch Mikrotik Un pad pour la config : https://doc.neutrinet.be/preparation-maintenance-06-04-2024-mikrotik?both ## San Dell ### GFS2 https://connect.ed-diamond.com/GNU-Linux-Magazine/glmf-135/cluster-debian-avec-drbd-et-gfs2 https://wiki.debian.org/kristian_jerpetjoen ### OCFS2 https://www.howtoforge.com/tutorial/install-and-configure-drdb-for-network-filesystem-replication-debian-8/3/ https://raw.githubusercontent.com/markfasheh/ocfs2-tools/master/documentation/users_guide.txt ### SSH ```shell Match group neutrinet-backup-user AuthorizedKeysFile /etc/ssh/authorized_keys/%u MaxAuthTries 6 PasswordAuthentication yes ChallengeResponseAuthentication yes AllowTcpForwarding no PermitTunnel no X11Forwarding no ForceCommand /opt/ssh_user_jail_with_docker/ssh_jail.sh ``` ```Dockerfile FROM drakkan/sftpgo:2.5.x-alpine as stage1 FROM alpine:latest as stage2 SHELL ["/bin/busybox", "sh", "-c"] COPY --from=stage1 /usr/local/bin/sftpgo /bin/sftpgo RUN echo -e "root:x:0:\nuser:x:1000:" > /etc/group RUN echo -e "root:x:0:0:root:/:/bin/ash\nuser:x:1000:1000:user:/home:/bin/sh" > /etc/passwd RUN echo -e "root:*::0:::::\nuser:*::0:::::" > /etc/shadow RUN apk add --update --no-cache rsync borgbackup restic openresolv RUN apk del scanelf libc-utils RUN rm -rf /etc/alpine-release /etc/crontabs /etc/issue /etc/os-release /etc/fstab /etc/inittab /etc/logrotate.d /etc/modprobe.d /etc/modules /etc/motd /etc/network /etc/rsyncd.conf /mnt /media /opt /root /run /srv /tmp /usr/local /etc/periodic /etc/opt /etc/mtab /etc/modules-load.d /etc/init.d /etc/conf.d RUN rm -rf /usr/share /var RUN mkdir -p /var/lib/apk; RUN find / -type d -exec chmod -r {} \; RUN chmod -r / RUN chown 1000:1000 /home RUN chmod 755 /home ### Optional: Remove package management RUN apk del apk-tools ca-certificates-bundle libcrypto3 libssl3 ### Alternative: remove all management tools #RUN find /bin /sbin /usr/bin /usr/sbin -type l -exec busybox sh -c 'if [ "$(busybox readlink -f "{}")" = "/bin/busybox" ]; then busybox rm -f "{}"; fi' \; #RUN apk del busybox alpine-baselayout alpine-baselayout-data alpine-keys apk-tools ca-certificates-bundle libcrypto3 libssl3 ### FROM scratch COPY --from=stage2 . . ``` ```bash #!/bin/bash # Original from https://github.com/chazlever/docker-jail # Modifications: # - Debug Log # - sftp subsystem wrapper for SFTPGo # - some small code style changes :P DEBUG=0 DEBUG_LOG=/var/log/jail.log DOCKER_IMAGE=ssh_user_jail:latest ################################################################### containerize() { docker run --rm $1 \ -v $HOME:/home \ --workdir /home \ --hostname ssh-jail-$USER \ -u 1000:1000 \ --net none \ ${DOCKER_IMAGE} ${SSH_ORIGINAL_COMMAND=/bin/sh} # Original parameters of chazlever to keep the jail more transparent # it depends on your use case if you need the version below or above. # docker run --rm $1 \ # -v /etc/group:/etc/group:ro \ # -v /etc/passwd:/etc/passwd:ro \ # -v $HOME:$HOME \ # --workdir $HOME \ # --hostname $(hostname) \ # -u $(id -u $USER):$(id -g $USER) \ # ${DOCKER_IMAGE} $SSH_ORIGINAL_COMMAND } ################################################################### if [ $DEBUG -eq 1 ]; then date -R >> "${DEBUG_LOG}" set >> "${DEBUG_LOG}" fi ################################################################### if [ "xinternal-sftp" == "x${SSH_ORIGINAL_COMMAND}" ]; then [ $DEBUG -eq 1 ] && echo "### START SFTP ###" >> "${DEBUG_LOG}" SSH_ORIGINAL_COMMAND="/bin/sftpgo startsubsys" fi ################################################################### # Check if TTY allocated if tty -s; then containerize -it else containerize -i fi ``` ## Réseau Proxmox ## Transfert VM ## Météo de fin *Moment informel durant lequel on exprime **en peu de mots** comment, à titre personnel, la réunion a été vécue que ce soit positif ou négatif.* *Si une ou plusieurs **tension est née** durant la réunion, il est peut-être nécessaire d'envisager l'une ou l'autre réunion pour y remédier.* {{tag>infra}}