20 septembre 2012

Aujourd’hui nous allons voir comment déployer un script en tâche plannifiée (crontab) pour automatiser les backups de configuration de vos équipements F5.

Certains d’entre vous l’auront surement déjà en production ;), mais je tenais à vous faire profiter des mes petites recettes de cuisine maison !

1 – Rappel sur les formats de sauvegarde

Chez F5 nous avons 2 formats de sauvegardes :

  • Le SCF (Single Configuration File, voir SOL#13408) : qui donne un fichier à plat texte concatenant les fichiers :
    • bigip.conf (configuration de loadbalancing)
    • bigip_base.conf (configuration réseau)
    • bigip_gtm.conf (configuration du module GTM = nouveauté depuis V11, ex wideip.conf en V10)
    • bigip_user.conf
    • certaines configurations LINUX
  • Le UCS (User Configuration Set, voir SOL#4423) : qui est une archive TGZ contenant les dossiers/fichiers :
    • /etc (configurations LINUX)
    • /config (configurations, certificats, licence F5)
    • /var/XXX
    • /home

Dans les avantages/inconvénients de chacun, il faut retenir :

  • Le format SCF est plus utile pour industrialiser les configurations des F5, où l’on peut facilement exporter une configuration modèle et modifer les IPs pour la recharger sur un autre boitier. Ce format ne sauvegarde pas : licences, certificats SSL, configuration ASM/WAM.
  • Le format UCS est vraiment destiné à une sauvegarde complète de la plateforme, où l’on retrouvera toutes les configurations, licenses !  et certificats, mais sans les logs … Ce qui sera utile pour une restauration en cas de RMA.

2 – Script d’automatisation

Vous trouverez en pièce jointe un script qui vous permettra :

  • De générer automatiquement un UCS
  • De définir une période de rotation/concervation des backups
  • De répliquer l’UCS via FTP ou SCP/Rsync
Code source :
#!/bin/bash
# Romain MOREL
# romain.morel@nomios.fr
# Script de backup automatique en local + FTP
# Version 1.0-FTP

# Variables globales
PATH=$PATH:/usr/bin/:/usr/kerberos/bin/
DATE=`date +"20%y-%m-%d"`
UCS=`/bin/hostname`.$DATE.ucs
# Repertoire local de stockage des backups
LOCALBACKUPDIR=/var/local/ucs
# Nombre de jours de conservation
ARCHIVE_DAYS=60

# Variables pour l'envoi en FTP
FTPSERVER="ftp.mycompany.com"
FTPUSER="ftpuser"
FTPPASS="ftppass"
FTPBACKUPDIR="/f5-backups"

# Fonction FTP
ftpput()
{
       ftp -u $1 << END_FTP
quote USER $2
quote PASS $3
cd $5
put $4
quit
END_FTP
}

# Creation de la sauvegarde locale
tmsh save /sys ucs  $LOCALBACKUPDIR/$UCS
cd $LOCALBACKUPDIR

# A decommenter pour activer le transfert FTP
#ftpput $FTPSERVER $FTPUSER $FTPPASS $UCS $FTPBACKUPDIR

# Nettoyage des anciens backups (plus anciens que $ARCHIVE_DAYS)
find $LOCALBACKUPDIR -mtime +$ARCHIVE_DAYS | xargs rm -f

3 – Configuration et Installation

Le déploiement est assez simple, il vous suffira de :

  • Editer le code source pour configurer les variables $ARCHIVE_DAYS (nombre de jours de conservation des backups), FTPXXX (informations pour se connecter au serveur FTP distant pour la réplication)
  • Copier le script dans le répertoire /config de votre BIG-IP à l’aide de votre client SCP préféré
  • Mettre le script en crontab grâce aux commandes suivantes :
root@bigip - / # cd /etc/cron.daily
root@bigip - /etc/cron.daily # ln -s /config/backup_config.sh

A venir, la version avec réplication en SCP/SFTP (avec paire de clés RSA) pour sécuriser les échanges !

A bientôt 😉

Romio

Partager :

Auteurs