Use Junos PyEZ para confirmar la configuración
Junos PyEZ le permite realizar cambios de configuración estructurados y no estructurados en dispositivos Junos. Después de conectarse al dispositivo y modificar la configuración, debe confirmar la configuración para que se active. En este tema, se explica cómo confirmar la configuración y qué opciones de confirmación son compatibles con las aplicaciones de Junos PyEZ.
Cómo confirmar la configuración candidata
Cuando se utiliza el programa de utilidad Junos PyEZ jnpr.junos.utils.config.Config para realizar cambios de configuración no estructurados en un dispositivo, se confirma la configuración candidata llamando al método de Config instancia commit() . Por ejemplo:
from jnpr.junos import Device
from jnpr.junos.utils.config import Config
from jnpr.junos.exception import ConfigLoadError, CommitError
with Device(host='router1.example.com') as dev:
with Config(dev, mode='exclusive') as cu:
try:
cu.load(path='configs/mx_config.conf', merge=True)
cu.commit()
except (ConfigLoadError, CommitError) as err:
print (err)
Para comprobar la sintaxis de la configuración sin confirmarla, llame commit_check() al método en lugar del commit() método.
cu.commit_check()
Cuando utiliza las tablas y vistas de configuración de Junos PyEZ para realizar cambios de configuración estructurados en un dispositivo, confirma la configuración candidata llamando al set() método, que llama automáticamente a , y unlock() a los lock()load()commit() métodos, o llamando a los distintos métodos individualmente. Por ejemplo:
from jnpr.junos import Device
from myTables.UserConfigTable import UserConfigTable
with Device(host='router1.example.com') as dev:
userconfig = UserConfigTable(dev)
# ...set the values for the configuration data...
userconfig.append()
userconfig.set(merge=True)
Del mismo modo, puede llamar a los métodos individuales, como en el siguiente ejemplo:
from jnpr.junos import Device
from myTables.UserConfigTable import UserConfigTable
with Device(host='router1.example.com') as dev:
userconfig = UserConfigTable(dev)
# ...set the values for the configuration data...
userconfig.append()
userconfig.lock()
userconfig.load(merge=True)
userconfig.commit()
userconfig.unlock()
Si utiliza un gestor de contexto para crear el Config objeto o Table y establece el mode argumento en private, exclusive, dynamicbatch, o ephemeral, sólo llama a los load() métodos and commit() para configurar el dispositivo. El administrador de contexto controla la apertura, el bloqueo, el cierre y el desbloqueo de la base de datos, por lo que las llamadas a los métodos , unlock()o set() en lock()uno de estos modos dan como resultado una excepción LockError.
Cómo especificar opciones de confirmación
La CLI de Junos proporciona opciones para la operación de confirmación, como agregar un comentario de confirmación o sincronizar la configuración en varios motores de enrutamiento. Junos PyEZ admite muchas de estas mismas opciones de confirmación y algunas opciones adicionales, que puede utilizar en su aplicación de Junos PyEZ si incluye los argumentos adecuados en la lista de argumentos o method commit() set() . En la tabla 1 se describen las opciones de confirmación admitidas y se proporciona el comando de la CLI correspondiente.
| Argumento de opción de confirmación |
Descripción |
Comando de la CLI |
|---|---|---|
|
|
Registre un comentario para esa operación de confirmación en el archivo de registro del sistema y en el historial de confirmación del dispositivo. |
|
|
|
Requerir que una operación de confirmación se confirme dentro de un período de tiempo especificado después de la confirmación inicial. De lo contrario, revierta a la configuración confirmada anteriormente. Establezca el argumento en |
|
|
|
Devuelve un objeto XML con información detallada sobre el proceso de confirmación. |
|
|
|
Sincronice y confirme la configuración en ambos motores de enrutamiento, incluso si el otro motor de enrutamiento tiene sesiones de configuración abiertas o cambios de configuración no confirmados. |
|
|
|
Ignore las advertencias que se generan durante la operación de confirmación. Establezca el argumento en |
– |
|
|
Sincronice y confirme la configuración en ambos motores de enrutamiento. |
|
|
|
Espere a que finalice la operación con el valor especificado como tiempo de espera. |
– |
Confirmar comentario
Cuando confirme la configuración, puede incluir un breve comentario para describir el propósito de los cambios confirmados. Para registrar un comentario que describa los cambios, incluya el parámetro y una cadena de comment mensaje en la lista de argumentos o método commit() set() , según corresponda. Por ejemplo:
cu.commit(comment='Configuring ge-0/0/0 interface')
Incluir el comment argumento equivale a emitir el comando de modo de commit comment configuración en la CLI. El comentario se registra en el archivo de registro del sistema y se incluye en el historial de confirmaciones del dispositivo, que puede ver emitiendo el show system commit comando en la CLI.
Confirmar confirmación
Para requerir que una operación de confirmación se confirme dentro de un período de tiempo especificado después de la confirmación inicial, incluya el confirm=minutes argumento en la lista de argumentos del commit() método o set() , según corresponda.
cu.commit(confirm=15)
Si la confirmación no se confirma dentro del límite de tiempo dado, el dispositivo vuelve automáticamente a la configuración confirmada anteriormente y envía un mensaje de difusión a todos los usuarios que hayan iniciado sesión. El intervalo permitido es de 1 a 65.535 minutos. También puede especificar confirm=True que se utilice el tiempo de reversión predeterminado de 10 minutos. Para confirmar la operación de confirmación, llame al commit() método or commit_check() .
La operación de confirmación confirmada es útil para comprobar que un cambio de configuración funciona correctamente y no impide el acceso de administración al dispositivo. Si el cambio impide el acceso o provoca otros errores, la reversión automática a la configuración anterior habilita el acceso al dispositivo una vez finalizada la fecha límite de reversión. Si pierde la conectividad con el dispositivo, debe emitir el método Junos PyEZ open() para restaurar la conectividad.
Detalle de confirmación
Puede revisar los detalles de toda la operación de confirmación incluyendo el detail=True argumento en la lista de argumentos o method commit() set() . Cuando se incluye este argumento, el método devuelve un objeto XML con información detallada sobre el proceso de confirmación. El valor devuelto es equivalente al contenido incluido por el <commit-results> elemento en la salida del commit | display detail | display xml comando en la CLI.
from lxml import etree
...
commit_detail = cu.commit(detail=True)
print (etree.tostring(commit_detail, encoding='unicode'))
Confirmar Sincronizar
Si el dispositivo tiene motores de enrutamiento duales, puede sincronizar y confirmar la configuración en ambos motores de enrutamiento si incluye el sync=True argumento en la lista de argumentos o method set() commit().
cu.commit(sync=True)
Cuando se incluye el sync=True argumento, el dispositivo copia la configuración candidata almacenada en el motor de enrutamiento local al otro motor de enrutamiento, verifica la corrección sintáctica del candidato y la confirma en ambos motores de enrutamiento. Para forzar que la commit synchronize operación se realice correctamente, incluso si hay sesiones de configuración abiertas o cambios de configuración no confirmados en el otro motor de enrutamiento, use el force_sync=True argumento que hace que el dispositivo finalice cualquier sesión de configuración en el otro motor de enrutamiento antes de sincronizar y confirmar la configuración.
cu.commit(force_sync=True)
Tiempo de espera de confirmación y comprobación de confirmación
El tiempo predeterminado para que se agote el tiempo de espera de una RPC es de 30 segundos. Los cambios de configuración grandes pueden superar este valor, lo que hace que se agote el tiempo de espera de una operación de confirmación o comprobación de confirmación antes de que se pueda cargar, comprobar y confirmar la configuración. Para dar cabida a los cambios de configuración que pueden requerir una comprobación de confirmación o un tiempo de confirmación mayor que el intervalo de tiempo de espera predeterminado, incluya el timeout=seconds argumento en la lista de argumentos de commit_check()commit() set() método y establezca el intervalo de tiempo de espera en un valor adecuado. Por ejemplo:
cu.commit_check(timeout=60)
cu.commit(timeout=360)
Ignorar advertencias
Junos PyEZ genera una RpcError excepción cuando la respuesta RPC contiene <rpc-error> elementos con una gravedad de advertencia o superior. En los casos en que sea necesario o deseable suprimir las RpcError excepciones que se generan en respuesta a las advertencias, puede incluir el parámetro del commit() ignore_warning método. Por ejemplo:
cu.commit(ignore_warning=True)
Para obtener más información sobre el uso del ignore_warning parámetro, consulte Suprimir excepciones de RpcError generadas para advertencias en aplicaciones Junos PyEZ.