Definir tablas de configuración de Junos PyEZ
RESUMEN Cree tablas personalizadas que configuren un recurso específico en un dispositivo Junos o extraigan datos de configuración del dispositivo.
Las tablas de configuración de Junos PyEZ se definen para extraer datos específicos de la base de datos de configuración seleccionada de un dispositivo Junos o para crear recursos estructurados que se pueden utilizar para configurar un dispositivo Junos mediante programación. Por lo tanto, puede recuperar o modificar rápidamente objetos de configuración específicos en el dispositivo.
Las tablas PyEZ de Junos se formatean con YAML. Cuando defina una tabla de configuración de Junos PyEZ, debe especificar el ámbito de configuración mediante get
o set
. Las tablas que incluyen la get
propiedad solo pueden recuperar los datos de configuración especificados de un dispositivo. Las tablas que incluyen la set
propiedad definen recursos de configuración que puede utilizar para configurar el dispositivo, así como para recuperar datos de configuración del dispositivo. Por lo tanto, son un superconjunto e incluyen toda la funcionalidad de las tablas que especifican get
.
Las definiciones de la tabla de configuración pueden incluir una serie de parámetros obligatorios y opcionales. En la tabla 1 se resumen los parámetros y se especifica si el parámetro se puede utilizar en tablas que recuperan únicamente datos de configuración del dispositivo (get
) o en tablas que también pueden configurar el dispositivo (set
).
Nombre del parámetro de tabla |
Parámetro de tabla |
Tipo de tabla |
Descripción |
---|---|---|---|
Nombre de la tabla |
– |
|
Identificador de tabla definido por el usuario. |
Ámbito de configuración |
|
— |
Expresión XPath relativa al elemento de nivel Especifique Estos objetos se convierten en la referencia para la vista asociada. |
Campo Clave de recursos de configuración |
|
|
Cadena o lista de cadenas que hace referencia a cualquier nombre de campo definido en la vista que se asigna a elementos identificadores y que se puede utilizar para identificar de forma exclusiva el objeto de configuración. Por ejemplo, puede especificar el nombre de campo que corresponde al Siempre debe definir al menos un campo de clave en la tabla y los usuarios deben declarar valores para todas las claves al configurar el recurso en su aplicación. |
Claves necesarias |
|
|
(Opcional) Matriz asociativa, o diccionario, de pares clave-valor que asignan un nivel de jerarquía en el ámbito de configuración al elemento que identifica de forma exclusiva el objeto en ese nivel de jerarquía, por ejemplo, el Los usuarios deben incluir todas las claves necesarias como argumentos para el método al recuperar los datos de |
Vista de tabla |
|
|
Vista asociada a la tabla. |
Tenga en cuenta las siguientes tablas de configuración de Junos PyEZ y sus vistas asociadas. UserTable
, que incluye la get
propiedad, extrae los datos de configuración de las cuentas de usuario del dispositivo de destino. UserConfigTable
, que incluye la set
propiedad, define un recurso de configuración estructurado que se puede utilizar para configurar cuentas de usuario en el dispositivo de destino, así como para recuperar datos de configuración de cuentas de usuario.
--- UserTable: get: system/login/user required_keys: user: name view: UserView UserView: fields: username: name userclass: class uid: uid UserConfigTable: set: system/login/user key-field: username required_keys: user: name view: UserConfigView UserConfigView: fields: username: name userclass: class uid: uid password: authentication/encrypted-password fullname: full-name
En las secciones siguientes se analizan los diferentes componentes de los cuadros:
Nombre de la tabla
El nombre de la tabla es un identificador definido por el usuario para la tabla. El archivo o cadena YAML puede contener una o varias tablas. El inicio del documento YAML debe dejarse justificado. Por ejemplo:
--- UserTable: # Table definition
Ámbito de configuración (get o set)
La propiedad de ámbito de configuración, que es necesaria en todas las definiciones de tabla de configuración, identifica el nivel de jerarquía de configuración en el que se recuperarán o configurarán objetos, según el tipo de tabla. Las tablas de configuración de Junos PyEZ se pueden usar para recuperar y modificar datos de configuración en un dispositivo Junos. Las tablas de configuración que especifican la get
propiedad sólo pueden recuperar datos de configuración. Las tablas de configuración que especifican la set
propiedad pueden configurar y recuperar datos.
El valor de get
o set
es una expresión XPath relativa al elemento de nivel <configuration>
superior que identifica el nivel jerárquico en el que se deben recuperar o establecer los datos de configuración. Estos datos se convierten en la referencia para la vista asociada.
Considere la siguiente jerarquía de configuración de ejemplo:
user@router> show configuration system login | display xml <rpc-reply> <configuration> <system> <login> ... <user> <name>user1</name> <uid>2001</uid> <class>super-user</class> <authentication> <encrypted-password>...</encrypted-password> </authentication> </user> <user> <name>readonly</name> <uid>3001</uid> <class>read-only</class> <authentication> <encrypted-password>...</encrypted-password> </authentication> </user> </login> </system> </configuration> </rpc-reply>
Para recuperar o configurar los user
elementos en el nivel de [edit system login]
jerarquía, el valor de la get
propiedad o set
usaría la siguiente expresión:
system/login/user
No incluya una barra diagonal ( /) al final de la expresión XPath, ya que el script generará un error.
Por ejemplo, para definir una tabla que sólo se puede utilizar para recuperar user
objetos, utilice get
.
get: system/login/user
Para definir una tabla que se pueda utilizar para configurar user
objetos además de recuperarlos, utilice set
.
set: system/login/user
De forma predeterminada, las tablas de configuración de Junos PyEZ recuperan datos de la base de datos de configuración candidata. Cuando llame get()
al método en la secuencia de comandos de Python para recuperar los datos de la tabla, puede especificar que el método devuelva datos de la base de datos de configuración confirmada pasando el options
argumento e incluyendo el 'database':'committed'
elemento en el options
diccionario. Por ejemplo:
table_object.get(options={'database':'committed'})
Campo clave (key-field)
En la configuración de Junos OS, cada instancia de un objeto de configuración, por ejemplo, una interfaz o una cuenta de usuario, debe tener un identificador único. En muchos casos, el <name>
elemento, que se muestra explícitamente en la salida XML de Junos, identifica de forma exclusiva cada instancia del objeto. Sin embargo, en algunos casos, se utiliza un elemento diferente o una combinación de elementos. Por ejemplo, una interfaz lógica se identifica de forma única mediante la combinación del nombre de la interfaz física y el número de unidad lógica.
Las tablas de configuración que especifican la set
propiedad para definir un recurso de configuración deben indicar qué elemento o combinación de elementos identifica de forma exclusiva el recurso. La key-field
propiedad, que es una cadena o lista de cadenas, cumple esta función y es necesaria para todas las set
tablas de configuración.
La vista de una set
tabla debe definir explícitamente campos para todos los elementos identificadores del recurso de configuración. A continuación, la key-field
propiedad debe hacer referencia a todos los nombres de campo de los elementos identificadores de la definición de tabla. Cuando se utiliza la tabla para configurar el recurso, una aplicación de Junos PyEZ debe proporcionar valores para todos los campos clave.
Por ejemplo, en la tabla siguiente se define un recurso estructurado que se puede utilizar para configurar cuentas de usuario en el nivel jerárquico [edit system login]
. La vista define explícitamente el username
campo y lo asigna al name
elemento en el nivel de [edit system login user]
jerarquía. La key-field
propiedad hace referencia a este campo para indicar que el name
elemento identifica de forma exclusiva instancias de ese objeto.
UserConfigTable: set: system/login/user key-field: username required_keys: user: name view: UserConfigView UserConfigView: fields: username: name userclass: class uid: uid password: authentication/encrypted-password fullname: full-name
Cuando la aplicación Junos PyEZ configura instancias del UserConfigTable
recurso en el dispositivo, debe definir un valor para la username
clave para cada instancia. Por ejemplo:
from jnpr.junos import Device from myTables.ConfigTables import UserConfigTable with Device(host='router1.example.com') as dev: users = UserConfigTable(dev) users.username = 'admin' users.userclass = 'super-user' ...
Si la tabla de configuración define campos para instrucciones en varios niveles de jerarquía que tienen identificadores en cada nivel, la key-field
propiedad debe incluir todos los identificadores. Por ejemplo, si Table configura una unidad lógica en una interfaz, la key-field
propiedad debe incluir tanto el nombre de interfaz como el número de unidad lógica como claves.
Llaves necesarias (required_keys)
Incluya la propiedad opcional required_keys
en la definición de tabla de configuración para requerir que los usuarios de tabla proporcionen valores para una o más claves cuando recuperen los datos en su aplicación. Cada clave debe asignar un nivel de jerarquía en el ámbito de configuración definido por el get
parámetro or set
al <name>
identificador en ese nivel. Solo puede definir una clave por nivel de jerarquía.
En el ejemplo siguiente, UserTable
requiere que la aplicación Junos PyEZ especifique el valor de un name
elemento en el [edit system login user]
nivel de jerarquía cuando recupera los datos:
UserTable: get: system/login/user required_keys: user: name view: UserView
En el script de Junos PyEZ correspondiente, debe incluir las claves necesarias en la lista de argumentos del get()
método. En el ejemplo siguiente se solicitan los datos de configuración para el usuario denominado 'readonly':
from jnpr.junos import Device from myTables.ConfigTables import UserTable with Device(host='router1.example.com') as dev: users = UserTable(dev) users.get(user='readonly')
Solo puede requerir claves en niveles de jerarquía en el ámbito de configuración definido por el get
parámetro o set
. Considere la siguiente definición para get
:
get: interfaces/interface/unit
En este caso, puede solicitar que el usuario proporcione valores para el nombre de interfaz y el número de unidad como se muestra en el código de ejemplo siguiente, pero no puede definir una clave necesaria para la dirección de interfaz, que se encuentra en un nivel de jerarquía inferior:
required_keys: interface: name unit: name
Vista de tabla (ver)
La view
propiedad asocia la definición de tabla con una vista determinada. Una vista asigna los nombres de campo definidos por el usuario a elementos de los elementos de tabla seleccionados mediante expresiones XPath. Puede personalizar la vista para seleccionar solo determinados elementos para recuperar o configurar, según el tipo de tabla y la operación.
Para obtener más información acerca de cómo definir vistas para tablas de configuración, consulte Definir vistas para tablas de configuración de Junos PyEZ.