Le contrôleur se trouve sur carlosgon.
Note : cette section est fortement inspiré de la doc du Rézo Metz
sudo apt-get install apt-dater
On crée l'user apt-dater
:
useradd -r -m apt-dater -g apt-dater mkdir /home/apt-dater/.ssh chmod 700 /home/apt-dater/.ssh/ && chown apt-dater:apt-dater /home/apt-dater/.ssh
On crée une clef SSH sur le contrôleur :
ssh-keygen -t ecdsa -b 521
Ensuite, on restreint l'utilisation du compte apt-dater
à carlosgon en éditant /etc/security/access.conf
pour avoir :
+ : apt-dater : localhost 127.0.0.1 ::1 carlosgon.federez.net - : apt-dater : ALL
et /etc/pam.d/sshd
pour décommenter :
account required pam_access.so
Ainsi, il sera nécessaire de rebondir sur carlosgon pour utiliser apt-dater.
Quelques éléments de configuration du contrôleur, notamment en ce qui concerne l'ajout d'hosts. Le fichier qui nous intéresse est dans /etc/apt-dater/hosts.xml
. Sa structure est assez simple à comprendre. Il faut juste penser à y ajouter les nouveaux hosts.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hosts SYSTEM "file:///usr/share/xml/schema/apt-dater/hosts.dtd"> <hosts xmlns:xi="http://www.w3.org/2001/XInclude"> <group name="Virtualiseurs"> <host name="ronderu.federez.net" comment="Virtualiseur VR"/> <host name="kdell.federez.net" comment="Virtualiseur au Crans"/> </group> <group name="Kdell (conteneurs et machines virtuelles)"> <host name="gitlab-runner.federez.net" /> <host name="myriagon.federez.net" /> <host name="nonagon.federez.net" /> <host name="octogon.federez.net" /> <host name="parangon.federez.net" /> <host name="pentagon.federez.net" /> </group> <group name="Ronderu (conteneurs et machines virtuelles)"> <host name="argon.federez.net" /> <host name="chiliagon.federez.net" /> <host name="hendecagon.federez.net" /> <host name="icosagon.federez.net" /> <host name="federez-test.federez.net" /> <host name="dragon.federez.net" /> <host name="memoragon.federez.net" /> <host name="carlosgon.federez.net" /> </group> <group name="Serveurs externes"> <host name="dodecagon.federez.net"/> <host name="coronagon.federez.net"/> <host name="saigon.federez.net"/> </group> </hosts>
Le contrôleur se trouve actuellement sur carlosgon.
On se connecte au contrôleur en tant qu'user apt-dater via SSH.
Pour cela, on se crée une clé SSH personnelle (évidemment protégée par une passphrase), que l'on ajoute aux clés autorisées pour l'user apt-dater sur le contrôleur :
user@carlosgon : ssh-keygen -t ecdsa -b 521
en root (on peut utiliser la commande suivante pour passer en root : sudo -Es
; on sort ensuite avec exit / Ctrl+D) :
cat ~$USER/.ssh/id_ecdsa.pub >> ~apt-dater/.ssh/authorized_keys
On peut alors faire :
ssh apt-dater@localhost
et utiliser apt-dater.
L'interface en ncurses est relativement simple, et il ne faut pas hésiter à lire la documentation en cas de doute.
Les machines sont triées par catégories, et il est conseillé de toujours commencer par mettre à jour des VM non critiques en premier, puis les VM critiques (passerelle, parefeu, BDD…), et enfin les hôtes de machines virtuelles.
À savoir : le R
devant un hôte apt-dater signifie que cette machine nécessite un reboot.
Il faut soit s'y connecter et lancer un reboot dessus, soit le faire (pour une VM) depuis le virtualiseur, ce qui est moins propre mais plus pratique si il faut faire un reboot de masse.
On peut lancer une mise à jour d'un groupe de serveurs avec u
et passer d'un serveur à l'autre avec n
puis Ctrl+a, d
pour sortir de chaque screen associé à un serveur.
Pour éviter de saisir toutes les commandes de connexion et d'avoir une clé sur era, on peut créer deux clés sur le client SSH. L'une servira pour une connexion classique au serveur, l'autre pour apt-dater. Dans le fichier de configuration SSH locale ~<you>/.ssh/config
, mettre :
Host apt-dater Hostname carlosgon.federez.net User <you> ForwardAgent yes IdentityFile ~/.ssh/<identité_apt-dater_(rsa)> Host carlosgon Hostname carlosgon.federez.net User <you> IdentityFile ~/.ssh/<identité_serveurs>
L'option ForwardAgent
transmet la clé utilisée pour la première connexion à l'agent du proxy pour pouvoir l'utiliser lors de la seconde connexion. C'est ainsi que l'on se passe d'une clé apt-dater sur era.
Ensuite, on demande à era de d'exécuter certaines actions lorsque l'on offre la première clé. Dans ~<you>/.ssh/authorized_keys
sur carlosgon, en plus de mettre les deux clés publiques, on ajoute l'option command
à la première.
command="ssh -t apt-dater@localhost apt-dater" ssh-rsa ...