Gestionando la configuración

Una de mis quejas durante mucho tiempo acerca de IOS es que si se escribe un nuevo comando en el CLI y pulse Enter, el comando de inmediato se convierte en activo en el router. Para alguien propenso a error, como yo (Jeff), este es un gran riesgo. Y dado que la mayoría de problemas de red se deben a un error humano en lugar de fallos de hardware y software, es un riesgo para todos.

Esto también puede ser un problema cuando se está haciendo cambios de configuración. Al tener estos cambios surtan efecto un comando cada vez, puede introducir todo tipo de condiciones transitorias.

La configuración candidata y aplicación de la configuración explicitamente

Esto lleva, por el contrario, a uno de mis características favoritas de JunOS: Cuando se hace un cambio de configuración, el cambio no surtirá efecto de inmediato. En lugar de ello, va a un archivo de configuración candidata. Se puede añadir, borrar y/o cambiar cuanto desee en la configuración, y ninguno de ellos serán activos en el router hasta que se confirme (commit). Este comando (commit) hace que la configuración candidata se convierta en la configuración activa.

La configuración candidata y la confirmación explícita (de la configuración) ayuda enormemente a reducir el número de simples errores humanos que afectan día a día a las operaciones de red. Se pueden hacer todos los cambios, comprobar como tantas veces como desee durante el proceso de configuración, y sólo se aplican cuando esté listo y estemos seguros de los cambios de configuración se ven correctos.

Rollback (marcha atrás)

Por supuesto, aún existe la posibilidad de que después de aplicar la configuración candidata el resultado no es lo que esperaba, y que desea volver a una configuración anterior. Se puede hacer eso en JUNOS ya que cuando se hace una confirmación y la configuración candidata se convierte en la configuración activa, la anterior configuración se guarda en el disco duro en el router.

Así que si quiere volver a una configuración anterior, puede introducir el comando rollback 1 y la más configuración reciente guardada se convierte en la configuración candidata. A continuación, se puede hacer que la configuración anterior sea activa de nuevo mediante la introducción del comando commit.

JUNOS guarda los últimos 49 archivos de configuración. Cuando se confirma (commit) una nueva configuración, la configuración activa anterior se guarda como juniper.conf.1. Lo que fuera juniper.conf.1 se convierte en juniper.conf.2, lo que fuera juniper.conf.2 se convierte en juniper.conf.3, y así sucesivamente. Así que si quiere volver a alguno configuración más antigua que la guardada más reciente, puede hacerlo. Por ejemplo, si introduce rollback 3, juniper.conf.3 - la configuración que estaba activa antes de las tres últimas confirmaciones (commit) - se carga como la nueva configuración candidata.

Aplicar la configuración confirmando (commit confirmed)

Supongamos que, a pesar de todos los esfuerzos para asegurar que la nueva configuración es correcta antes de aplicarla, algo se pasa por alto y cuando se aplica, que se queda el router bloqueado.

En lugar de aplicar (commit), se puede hacer la configuración candidata activa con este comando commit confirmed. Con este comando, el router espera 10 minutos para una segunda confirmación. Si no recibe confirmación dentro de los 10 minutos, el router automáticamente hace un rollback y se aplica, de manera que la configuración anterior se activa de nuevo.

El comando commit confirmed puede ser un salvavidas, recomiendo que se tenga el hábito de utilizarlo en vez de commit en todos los casos.

Puede cambiar el valor de tiempo por defecto que JUNOS espera para aplicar una confirmación entre 1 y 65535 minutos. Si, por ejemplo, se desea que el router espere tan solo 3 minutos para una confirmación, se puede introducir commit confirmed 3.

Guardar y cargar (save y load)

La configuración candidata es también una gran característica para hacer las ventanas de mantenimiento vayan más rápidas. Imaginamos que necesitamos hacer cambios a 10 routers con un mantenimiento programado a las 2 de la madrugada. Podemos hacer los cambios antes de lo previsto en el archivo de configuración candidata y, a continuación, guardar el archivo bajo cualquier nombre que se desee, ya sea en el router el disco duro o en un servidor externo.

Cuando llegue la hora de llevar a cabo el mantenimiento, puede cargar el archivo de configuración de vuelta al fichero de configuración candidata y confirmar.

Por ejemplo, si se realiza un cambio de la configuración pre-mantenimiento y se desea guardar como Juniper3_10August_Change, se introduce el comando save Juniper3_10August_Change.

Después de salvar, es una buena idea hacer un rollback 0. Esto causa una copia de la configuración actualmente activa (juniper.conf.0) para ser la configuración candidata, evitando así una situación en la que alguien más podría entrar en el router y aplicar estos cambios antes de la hora.

Ten en cuenta que si nos encontramos en la parte superior de la jerarquía de configuración, indicado por [edit], se guarda toda la configuración. Si se está en algún nivel inferior al salvar, sólo se guarda la parte de la configuración a ese nivel. Por ejemplo, si se está en [edit protocols bgp], sólo se guarda la configuración de BGP.

Cuando se esté listo para hacer los cambios en la configuración permanente, se carga la configuración guardada a la configuración candidata con el comando load. Este comando tiene varias opciones, dependiendo de cómo se desea utilizar el archivo que se carga:

  • load override sustituye completamente la configuración actual candidata con el archivo que está cargando. Por lo tanto, si ha guardado una configuración completa, esta es la opción de usar.
  • load merge añade el archivo guardado a la configuración candidata actual. Esto es útil si va a añadir nuevas secciones de configuración, por ejemplo, si añade una configuración BGP a [edit protocolo], donde no había ninguna configuración antes de BGP.
  • load update se compara la configuración candidato y el archivo que se carga, y sólo cambia la parte de la configuración candidata que sean diferentes de la nueva configuración. Se podría utilizar esto, por ejemplo, si existe una configuración de BGP y el archivo que va a cargar hace cambios de alguna manera.
  • load replace busca las etiquetas que se han añadido al fichero que se carga, y sustituye las partes de la configuración candidata con todo lo que se especifica después de la etiqueta. Esto es útil cuando se desea más control sobre exactamente qué se está cambiado.

Después de la operación de carga, se puede comprobar la configuración candidata nueva para asegurarse que muestra los cambios que se desean y, a continuación se aplican (commit).

Hay un enfoque alternativo a la operación que se acaba de describir. Se puede hacer cambios a la configuración candidato y luego usar el comando commit, especificando la hora y el minuto más tarde el mismo día, o especificar una fecha posterior, hora y minuto. Por ejemplo, se podría aplicar commit 2008-09-21 02:30:00 y no se aplicaría hasta las 2:30 AM del 21 de septiembre de 2008 (suponiendo que el tiempo es en el futuro, de acuerdo con la fecha y hora del router).

Personalmente no me gusta este comando, ya que deja demasiado a la automatización. Prefiero grabar y cargar (save y load), lo que da un mayor control de la operación


Otro magnífico artículo de Jeff Doyle sobre el Juniper y JunOS aquí tenéis la traducción de otro artículo más (original aquí).

Retro

Lugares

Redes

Sistemas

Varios