Utilice 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 activarla. En este tema se explica cómo confirmar la configuración y qué opciones de confirmación se admiten en las aplicaciones Junos PyEZ.
Cómo confirmar la configuración del candidato
Cuando usa la utilidad Junos PyEZ jnpr.junos.utils.config.Config para realizar cambios de configuración no estructurados en un dispositivo, confirme la configuración del candidato 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 al commit_check() método en lugar del commit() método.
cu.commit_check()
Cuando usa tablas y vistas de configuración Junos PyEZ para realizar cambios de configuración estructurados en un dispositivo, confirma la configuración del candidato llamando al set() método, que llama automáticamente a los lock()métodos , load()commit() y unlock() o llamando a los distintos métodos de forma individual. 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)
De forma similar, puede llamar a los métodos individuales, como en el ejemplo siguiente:
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 administrador de contexto para crear el Config objeto o Table y establecer el mode argumento en private, exclusive, dynamic, batch, o ephemeral, solo se llama a los load() métodos y commit() para configurar el dispositivo. El administrador de contexto controla la apertura, el bloqueo y el cierre y el desbloqueo de la base de datos, por lo que las lock()llamadas al , unlock()o set() los métodos en uno de estos modos da como resultado una excepción LockError.
Cómo especificar opciones de confirmación
La CLI de Junos ofrece 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 usar en su aplicación Junos PyEZ incluyendo los argumentos adecuados en la commit() lista de argumentos o set() métodos. La tabla 1 describe las opciones de confirmación compatibles y proporciona el comando de CLI correspondiente.
| Argumento de opción de confirmación |
Descripción |
Comando de CLI |
|---|---|---|
|
|
Registre un comentario para esa operación de confirmación en el archivo de registro del sistema y en el historial de confirmaciones del dispositivo. |
|
|
|
Requiere que se confirme una operación de confirmación dentro de un tiempo especificado después de la confirmación inicial. De lo contrario, vuelva a la configuración confirmada anteriormente. Establezca el argumento para |
|
|
|
Devolver 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 hay sesiones de configuración abiertas o cambios de configuración no confirmados en el otro motor de enrutamiento. |
|
|
|
Ignore las advertencias que se desencadenan durante la operación de confirmación. Establezca el argumento para |
– |
|
|
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 comment parámetro y una cadena de mensaje en la commit() lista de argumentos o set() método, según corresponda. Por ejemplo:
cu.commit(comment='Configuring ge-0/0/0 interface')
Incluir el comment argumento es equivalente a emitir el comando de commit comment modo de 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 mediante la emisión del show system commit comando en la CLI.
Confirmar
Para requerir que se confirme una operación de confirmación dentro de un tiempo especificado después de la confirmación inicial, incluya el confirm=minutes argumento en la lista de commit() argumentos o set() método, según corresponda.
cu.commit(confirm=15)
Si la confirmación no se confirma dentro del límite de tiempo dado, el dispositivo se revierte automáticamente a la configuración previamente confirmada y envía un mensaje de difusión a todos los usuarios conectados. El intervalo permitido es de 1 a 65 535 minutos. También puede especificar confirm=True para usar el tiempo de reversión predeterminado de 10 minutos. Para confirmar la operación de confirmación, llame al commit() método o 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 causa otros errores, la reversión automática a la configuración anterior permite el acceso al dispositivo después de que pase 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 commit() lista de argumentos o set() método. 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 el resultado 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 sincronización
Si el dispositivo tiene motores de enrutamiento duales, puede sincronizar y confirmar la configuración en ambos motores de enrutamiento incluyendo el sync=True argumento en la commit() lista de argumentos o set() método.
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 la commit synchronize operación a tener éxito, incluso si hay sesiones de configuración abiertas o cambios de configuración no confirmados en el otro motor de enrutamiento, utilice el force_sync=True argumento, lo que hace que el dispositivo termine 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 comprobación de confirmación y confirmación
El tiempo de espera predeterminado de una RPC es de 30 segundos. Es posible que los cambios de configuración grandes superen este valor, lo que provoca que una operación de comprobación de confirmación o confirmación esté agotada antes de que se pueda cargar, comprobar y confirmar la configuración. Para adaptarse a los cambios de configuración que pueden requerir una comprobación de confirmación o un tiempo de confirmación más largo que el intervalo de tiempo de espera predeterminado, incluya el timeout=seconds argumento en la lista de commit_check()argumentos de commit() método o set() , 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 conveniente suprimir las RpcError excepciones que se plantean en respuesta a las advertencias, puede incluir el commit() parámetro del ignore_warning método. Por ejemplo:
cu.commit(ignore_warning=True)
Para obtener más información acerca de cómo usar el ignore_warning parámetro, consulte Suprimir excepciones RpcError planteadas para advertencias en aplicaciones Junos PyEZ.