Table des matières

Le contrôleur se trouve sur carlosgon.

Note : cette section est fortement inspiré de la doc du Rézo Metz

Installation du contrôleur

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.

Configuration du contrôleur, ajout d'hôtes

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>

Utiliser apt-dater sur le contrôleur

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.

Raccourci

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 ...