帮助我们改善您的体验。

让我们了解您的想法。

您是否能抽出两分钟的时间完成一份问卷调查?

close
keyboard_arrow_left
Junos PyEZ 开发人员指南
Table of Contents Expand all
list Table of Contents

机器翻译对您有帮助吗?

starstarstarstarstar
Go to English page
免责声明:

我们将使用第三方机器翻译软件翻译本页面。瞻博网络虽已做出相当大的努力提供高质量译文,但无法保证其准确性。如果对译文信息的准确性有任何疑问,请参阅英文版本. 可下载的 PDF 仅提供英文版.

使用 Junos PyEZ 配置表定义和配置结构化资源概述

date_range 10-May-24

Junos PyEZ 允许您使用表和视图来配置 Junos 设备。表和视图是使用包含键值对映射的简单 YAML 文件定义的,因此创建它们不需要复杂的编码。您可以创建定义结构化配置资源的表和视图。将表添加到 Junos PyEZ 框架时,Junos PyEZ 会动态为资源创建一个配置类,您可以使用该配置类以编程方式配置设备上的资源。

要使用配置表和视图配置 Junos 设备,必须确定要建模的资源,为该资源创建表和视图定义,然后使用这些定义在 Junos PyEZ 应用程序中配置资源。本主题概述了常规步骤。

创建结构化资源

要创建结构化资源,请执行以下操作:

  1. 确定要为其定义结构化资源的配置,例如,user层次结构级别的对象[edit system login]
    content_copy zoom_out_map
    user@host> show configuration system login | display xml
    <rpc-reply>
      <configuration>
        <system>
          <login>
            <user>
              <name>jsmith</name>
              <full-name>J Smith</full-name>
              <uid>555</uid>
              <class>super-user</class>
              <authentication>
                  <encrypted-password>$ABC123</encrypted-password>
              </authentication>
            </user>
          </login>
        </system>
      </configuration>
      ...
    </rpc-reply>
  2. 为结构化资源创建表和视图定义。

    有关创建配置表和视图的详细信息,请参阅 定义 Junos PyEZ 配置表定义 Junos PyEZ 配置表的视图

    content_copy zoom_out_map
    UserConfigTable:
      set: system/login/user
      key-field:
        username
      view: UserConfigView
    
    UserConfigView:
      groups:
        auth: authentication
      fields:
        username: name
        userclass: { class : { 'default' : 'unauthorized' }}
        uid: { uid: { 'type': 'int', 'default':1001, 'minValue':100, 'maxValue':64000 }}
        fullname: full-name
      fields_auth:
        password: encrypted-password
    
  3. 将结构化资源作为内联字符串或外部文件添加到 Junos PyEZ 框架,如在 Junos PyEZ 应用程序中加载内联或外部表和视图中所述。

在 Junos PyEZ 应用程序中使用该资源

要在 Junos PyEZ 应用程序中配置资源,请执行以下操作:

  1. Device创建实例并连接到设备。例如:
    content_copy zoom_out_map
                
               
                     
    from jnpr.junos import Device
    from myTables.ConfigTables import UserConfigTable
    
    dev = Device(host='router.example.com').open()
    
  2. 创建一个 Table 对象并将其与设备关联。
    content_copy zoom_out_map
                
               
                     
    uc = UserConfigTable(dev)
    
  3. 通过定义必要字段(包括在表 key-field 属性中定义的所有关键字段)的值来配置资源。

    有关配置资源的详细信息,请参阅 使用 Junos PyEZ 配置表在 Junos 设备上配置结构化资源

    content_copy zoom_out_map
                
               
                     
    uc.username = 'user1'
    uc.userclass = 'operator'
    uc.password = '$ABC123'
    
  4. 调用该方法 append() 以生成包含配置更改的 Junos XML 配置。
    content_copy zoom_out_map
                
               
                     
    uc.append()
    
    注意:

    调用 append()后,每个字段的值将重置为其默认值,如果视图未定义默认值,则重置为其 None默认值。如果配置其他资源,则该资源的初始值是重置值,而不是为上一个资源配置的值。

  5. 对要配置的每个附加资源重复步骤 3 和步骤 4
  6. 使用以下方法之一将配置更改加载并提交到设备上的共享配置数据库:
    • set()调用该方法,该方法会自动调用 lock()load()commit()unlock()方法。

      content_copy zoom_out_map
                    
                   
                         
      uc.set(merge=True, comment='Junos PyEZ commit')
      
    • 调用单个 lock()load()commit()unlock() 方法。

      content_copy zoom_out_map
                    
                   
                         
      uc.lock()
      uc.load(merge=True)
      uc.commit(comment='Junos PyEZ commit')
      uc.unlock()
      
  7. 关闭设备连接。
    content_copy zoom_out_map
                
               
                     
    dev.close()
    

有关使用不同方法加载和提交配置数据的详细信息,请参阅使用 Junos PyEZ 配置 Junos 设备和使用 Junos PyEZ 提交配置

external-footer-nav