Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
wiki:services:backup_cfg_cisco [2018/07/08 18:28] no_pseudo |
wiki:services:backup_cfg_cisco [2020/06/27 18:16] (Version actuelle) |
||
---|---|---|---|
Ligne 17: | Ligne 17: | ||
< | < | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Evidemment il existe tout un tas de logiciel pour faire de la sauvegarde de conf (avec différents supports de matériel, de fonctionnalités), | ||
+ | </ | ||
===== Ce qu'on voulait faire ===== | ===== Ce qu'on voulait faire ===== | ||
Ligne 25: | Ligne 29: | ||
Et puis on en a reparlé il y a pas longtemps et je me suis chauffé pour lire un peu la doc Cisco pour savoir comment s'y prendre pour implémenter tout le bordel. Et là < | Et puis on en a reparlé il y a pas longtemps et je me suis chauffé pour lire un peu la doc Cisco pour savoir comment s'y prendre pour implémenter tout le bordel. Et là < | ||
- | ===== Ce qu'il faut faire ===== | + | ===== Ce qui est en place ===== |
- | + | ||
- | <WRAP center round important 60%> | + | |
- | Actuellement ce n'est qu'un proof-of-concept déployé en dev et sur le commutateur du local. Voir la partie « Démo ». | + | |
- | </ | + | |
En fait il est possible de définir des « archives de configuration » sur les commutateurs. Ainsi pour définir une archive on doit donner au commutateur un chemin où stocker l' | En fait il est possible de définir des « archives de configuration » sur les commutateurs. Ainsi pour définir une archive on doit donner au commutateur un chemin où stocker l' | ||
Ligne 38: | Ligne 38: | ||
Ici j'ai choisi d' | Ici j'ai choisi d' | ||
1) Éviter d' | 1) Éviter d' | ||
- | 2) Vu que SCP est basé sur SSH, on a pas grand chose à installer sur notre serveur: // | + | |
+ | 2) Vu que SCP est basé sur SSH, on a pas grand chose à installer sur notre serveur: // | ||
==== Côté commutateur ==== | ==== Côté commutateur ==== | ||
Ligne 48: | Ligne 49: | ||
< | < | ||
- | sw(archive-config)# | + | sw(archive-config)# |
</ | </ | ||
C.f. : Note sur le nom du fichier < | C.f. : Note sur le nom du fichier < | ||
Ligne 56: | Ligne 57: | ||
</ | </ | ||
< | < | ||
- | sw(archive-config)# | + | sw(archive-config)# |
</ | </ | ||
- | On va lancer le processus d' | + | On va lancer le processus d' |
< | < | ||
Ligne 70: | Ligne 71: | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | Il est important de garder des noms de fichier uniformes, ça nous sera utile ensuite pour la partie | + | Il est important de garder des noms de fichier uniformes, ça nous sera utile ensuite pour la partie |
</ | </ | ||
Ligne 80: | Ligne 81: | ||
==== Côté serveur ==== | ==== Côté serveur ==== | ||
- | La configuration | + | La configuration |
On commence par créer un utilisateur et définir son mot de passe: | On commence par créer un utilisateur et définir son mot de passe: | ||
Ligne 104: | Ligne 105: | ||
</ | </ | ||
- | < | + | < |
=== SCP oui, SSH non ! === | === SCP oui, SSH non ! === | ||
- | Pour éviter que le commutateur ait un accès shell à notre machine on va utiliser un petit programme qui s' | + | Pour éviter que le commutateur ait un accès shell à notre machine on va utiliser un petit programme qui s' |
< | < | ||
Ligne 158: | Ligne 159: | ||
</ | </ | ||
- | On utilise | + | On utilise |
< | < | ||
Ligne 204: | Ligne 205: | ||
DATE=$(date -d" | DATE=$(date -d" | ||
- | function | + | function |
ACTION=$1 | ACTION=$1 | ||
$GIT_BIN $GIT_WORK_TREE init $OUTPUT_DIR | $GIT_BIN $GIT_WORK_TREE init $OUTPUT_DIR | ||
Ligne 227: | Ligne 228: | ||
if [ $DIFF -eq 1 ]; then | if [ $DIFF -eq 1 ]; then | ||
$LOGGER "DEST: ${OUTPUT_FILE} differs from SRC: ${INPUT_FILE}. Updating DEST." | $LOGGER "DEST: ${OUTPUT_FILE} differs from SRC: ${INPUT_FILE}. Updating DEST." | ||
- | versionning | + | versioning |
else | else | ||
$LOGGER "No change detected between ${INPUT_FILE} and ${OUTPUT_FILE}. Nothing to do." | $LOGGER "No change detected between ${INPUT_FILE} and ${OUTPUT_FILE}. Nothing to do." | ||
Ligne 233: | Ligne 234: | ||
else | else | ||
$LOGGER "DEST: ${OUTPUT_FILE} does not exist. Adding DEST." | $LOGGER "DEST: ${OUTPUT_FILE} does not exist. Adding DEST." | ||
- | versionning | + | versioning |
fi | fi | ||
Ligne 240: | Ligne 241: | ||
Notre dossier /// | Notre dossier /// | ||
- | ===== Démo ===== | + | Vous pouvez retrouver le dépôt ici : [[https:// |
- | Un container tourne | + | ===== Restaurer une configuration ===== |
+ | |||
+ | Pour restaurer une ancienne configuration il suffit | ||
< | < | ||
- | ct: 105 | + | sw> enable |
- | hostname: confsw | + | sw# copy scp:// |
- | ip: 192.168.103.178 | + | </ |
+ | Il est possible de voir les dernières archives via | ||
+ | < | ||
+ | sw# show archive | ||
</ | </ | ||
- | On peut faire un « git log » dans ///var/confsw/versions/// pour voir les commits pendant qu'on fait des « write mem » sur le commutateur du local. | + | ===== Déployer rapidement sur les switchs et autres équipements ===== |
+ | |||
+ | Pour déployer la configuration rapidement sur les switchs, on utilise [[https://wiki.minet.net/wiki/services/ansible/|Ansible]]. | ||
+ | |||
+ | Voici le script (très basique) utilisé. | ||
- | Les choses intéressantes sur le CT: | ||
< | < | ||
- | /etc/passwd | + | - hosts: [switchs] |
- | /etc/rssh.conf | + | gather_facts: |
- | / | + | |
- | / | + | tasks: |
- | / | + | - name : stop archiving |
- | /opt/git_swconfig/ | + | ios_config: |
- | /var/ | + | |
- | / | + | - archive |
- | / | + | - no archive |
+ | - name: save conf | ||
+ | | ||
+ | | ||
+ | - service timestamp log datetime msec year | ||
+ | - archive | ||
+ | - path scp://utilisateur: | ||
+ | - time-period 20160 | ||
+ | - write-memory | ||
</ | </ | ||
- | Les choses intéressantes sur le commutateur du local (en mode privilégié): | + | Et voici le fichier //hosts// utilisé: |
< | < | ||
- | Le bloc de configuration « archive ». | + | [switch: |
- | La configuration de « service timestamp log ». | + | ansible_ssh_common_args=' |
- | Le résultat de « show archive ». | + | ansible_connection=network_cli |
+ | ansible_user=tonidldap | ||
+ | ansible_network_os=ios | ||
+ | ansible_become=no | ||
+ | ansible_become_method=enable | ||
+ | ansible_ssh_pass=tonmdpldap | ||
+ | |||
+ | [switch_u2] | ||
+ | 192.168.102.206 | ||
+ | [switch_wifi] | ||
+ | 192.168.102.221 | ||
+ | 192.168.102.222 | ||
+ | 192.168.102.224 | ||
+ | 192.168.102.224 | ||
+ | 192.168.102.225 | ||
+ | 192.168.102.216 | ||
+ | [switch] | ||
+ | 192.168.102.201 | ||
+ | 192.168.102.202 | ||
+ | 192.168.102.203 | ||
+ | 192.168.102.204 | ||
+ | 192.168.102.205 | ||
+ | 192.168.102.206 | ||
+ | 192.168.102.207 | ||
+ | 192.168.102.208 | ||
+ | 192.168.102.209 | ||
+ | 192.168.102.210 | ||
+ | 192.168.102.211 | ||
+ | 192.168.102.212 | ||
+ | 192.168.102.213 | ||
+ | 192.168.102.214 | ||
+ | 192.168.102.215 | ||
+ | 192.168.102.217 | ||
+ | 192.168.102.218 | ||
+ | 192.168.102.230 | ||
+ | 192.168.102.240 | ||
+ | 192.168.102.241 | ||
+ | 192.168.102.242 | ||
+ | 192.168.102.243 | ||
+ | 192.168.102.244 | ||
+ | 192.168.102.245 | ||
+ | 192.168.102.246 | ||
</ | </ | ||
+ | |||
+ | Ajoutez également < | ||
===== Autre fonctionnalité des archives Cisco ===== | ===== Autre fonctionnalité des archives Cisco ===== | ||
- | |||
Il est possible de journaliser toutes les commandes entrées sur le commutateur par un utilisateur. Combiné avec l' | Il est possible de journaliser toutes les commandes entrées sur le commutateur par un utilisateur. Combiné avec l' | ||
Tout est expliqué dans [[https:// | Tout est expliqué dans [[https:// | ||
+ | Exemple de log: | ||
+ | {{: | ||
+ | |||
+ | ===== FIN ===== | ||
--- // | --- // | ||