Bootstrap automatique d'un poste Fedora d'administration
Cette page décrit la mise en place d'un poste Fedora destiné à l'administration de l'infrastructure. L'objectif est de pouvoir :
- installer les outils nécessaires ;
- générer une clé SSH ;
- créer automatiquement le fichier
~/.ssh/config; - déployer la clé publique sur les hôtes utilisant
root; - déployer la clé publique sur les hôtes utilisant
nancre; - valider rapidement que tout fonctionne.
Prérequis
- Un poste Fedora avec accès administrateur local.
- Accès réseau aux serveurs du LAN
10.151.151.0/24. - Le mot de passe du compte
rootsur les hôtes concernés. - Le mot de passe du compte
nancresur les hôtes concernés.
Script de bootstrap
Créer un fichier, par exemple bootstrap-fedora.sh, puis coller le script ci-dessous.
#!/usr/bin/env bash
set -euo pipefail
echo "=== Bootstrap Fedora Administration ==="
SSH_DIR="$HOME/.ssh"
KEY_FILE="$SSH_DIR/id_ed25519"
CONFIG_FILE="$SSH_DIR/config"
ROOT_HOSTS=(
10.151.151.230
10.151.151.100
10.151.151.220
10.151.151.231
10.151.151.40
10.151.151.239
10.151.151.249
)
NANCRE_HOSTS=(
10.151.151.244
10.151.151.245
10.151.151.246
10.151.151.247
10.151.151.240
)
echo
echo "[1/6] Installation des paquets nécessaires"
sudo dnf install -y openssh-clients sshpass
echo
echo "[2/6] Préparation du dossier ~/.ssh"
mkdir -p "$SSH_DIR"
chmod 700 "$SSH_DIR"
echo
echo "[3/6] Génération de la clé SSH si absente"
if [[ ! -f "$KEY_FILE" ]]; then
ssh-keygen -t ed25519 -a 100 -f "$KEY_FILE" -N ""
else
echo "Clé déjà existante : $KEY_FILE"
fi
echo
echo "[4/6] Création de ~/.ssh/config"
cat > "$CONFIG_FILE" <<'EOF'
Host nas
HostName 10.151.151.201
User n.ancre
Port 22022
IdentityFile ~/.ssh/id_ed25519
Host 10.151.151.* !10.151.151.201
User root
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Host proxmox
HostName 10.151.151.249
User root
IdentityFile ~/.ssh/id_ed25519
Host proxmox-ms
HostName 10.151.151.239
User root
IdentityFile ~/.ssh/id_ed25519
Host squall
HostName 10.151.151.245
User nancre
IdentityFile ~/.ssh/id_ed25519
Host linoa
HostName 10.151.151.246
User nancre
IdentityFile ~/.ssh/id_ed25519
Host quistis
HostName 10.151.151.247
User nancre
IdentityFile ~/.ssh/id_ed25519
Host selphie
HostName 10.151.151.240
User nancre
IdentityFile ~/.ssh/id_ed25519
Host network
HostName 10.151.151.40
User root
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
Host webserver
HostName 10.151.151.100
User root
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
Host bitwarden
HostName 10.151.151.231
User root
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
Host bookstack
HostName 10.151.151.220
User root
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
Host bastion
HostName 10.151.151.244
User nancre
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Host plex
HostName 10.151.151.105
User nancre
IdentityFile ~/.ssh/awx_ansible_key
EOF
chmod 600 "$CONFIG_FILE"
echo
echo "[5/6] Déploiement de la clé sur les hôtes root"
read -s -p "Mot de passe root : " ROOTPASS
echo
export SSHPASS="$ROOTPASS"
for host in "${ROOT_HOSTS[@]}"; do
echo " - root@$host"
sshpass -e ssh-copy-id \
-o StrictHostKeyChecking=no \
-i "$KEY_FILE.pub" \
root@"$host"
done
unset SSHPASS
unset ROOTPASS
echo
echo "[6/6] Déploiement de la clé sur les hôtes nancre"
read -s -p "Mot de passe nancre : " NANCREPASS
echo
export SSHPASS="$NANCREPASS"
for host in "${NANCRE_HOSTS[@]}"; do
echo " - nancre@$host"
sshpass -e ssh-copy-id \
-o StrictHostKeyChecking=no \
-i "$KEY_FILE.pub" \
nancre@"$host"
done
unset SSHPASS
unset NANCREPASS
echo
echo "=== Vérification ==="
ssh -G proxmox > /dev/null
ssh -G squall > /dev/null
ssh -G bastion > /dev/null
echo
echo "Bootstrap terminé avec succès."
Installation du script
nano bootstrap-fedora.sh
chmod +x bootstrap-fedora.sh
Exécution
./bootstrap-fedora.sh
Le script va demander deux mots de passe distincts :
- le mot de passe de
rootpour les machines administrées en root ; - le mot de passe de
nancrepour les machines administrées avec ce compte.
Structure des accès
Accès en root
10.151.151.23010.151.151.10010.151.151.22010.151.151.23110.151.151.4010.151.151.23910.151.151.249
Accès avec nancre
10.151.151.24410.151.151.24510.151.151.24610.151.151.24710.151.151.240
Tests manuels
Après exécution, vérifier les alias SSH :
ssh proxmox
ssh proxmox-ms
ssh squall
ssh linoa
ssh quistis
ssh selphie
ssh network
ssh webserver
ssh bitwarden
ssh bookstack
ssh bastion
ssh nas
Si tout est correct, aucune demande de mot de passe ne doit apparaître pour les hôtes déjà provisionnés.
Notes
- Le compte
plexutilise ici une clé dédiée~/.ssh/awx_ansible_key. - Si tu veux uniformiser complètement le poste, tu peux aussi basculer Plex sur la clé
id_ed25519. - La configuration est pensée pour être reproductible sur un nouveau portable Fedora.
No comments to display
No comments to display