用于Nornir的PyEZs库和插件
nornir-pyez的Python项目详细描述
用于Nornir的PyEZ插件
插件
连接-Pyez
说明
这个插件用于利用Juniper的PyEZ和Nornir框架的强大功能,提供更快、更稳定的网络服务交付,同时简化和抽象网络库存
安装
pip install nornir-pyez==0.0.9
更新
^{pr2}$阅读文档
https://nornir-pyez.readthedocs.io/en/latest/
用法
皮兹得到事实:
from nornir_pyez.plugins.tasks import pyez_facts
import os
from nornir import InitNornir
from nornir_utils.plugins.functions import print_result
from rich import print
script_dir = os.path.dirname(os.path.realpath(__file__))
nr = InitNornir(config_file=f"{script_dir}/config.yml")
response = nr.run(
pyez_facts
)
# response is an AggregatedResult, which behaves like a list
# there is a response object for each device in inventory
devices = []
for dev in response:
print(response[dev].result)
PyEZ获取配置
from nornir_pyez.plugins.tasks import pyez_get_config
import os
from nornir import InitNornir
from nornir_utils.plugins.functions import print_result
from rich import print
script_dir = os.path.dirname(os.path.realpath(__file__))
nr = InitNornir(config_file=f"{script_dir}/config.yml")
response = nr.run(
task=pyez_get_config
)
# response is an AggregatedResult, which behaves like a list
# there is a response object for each device in inventory
devices = []
for dev in response:
print(response[dev].result)
使用参数获取配置
from nornir_pyez.plugins.tasks import pyez_get_config
import os
from nornir import InitNornir
from nornir_utils.plugins.functions import print_result
from rich import print
script_dir = os.path.dirname(os.path.realpath(__file__))
nr = InitNornir(config_file=f"{script_dir}/config.yml")
xpath = 'interfaces/interface'
xml = '<interfaces></interfaces>'
database = 'committed'
response = nr.run(
task=pyez_get_config, filter_xml=xpath, database=database
)
# response is an AggregatedResult, which behaves like a list
# there is a response object for each device in inventory
devices = []
for dev in response:
print(response[dev].result)
设置文本配置
from nornir_pyez.plugins.tasks import pyez_config
import os
from nornir import InitNornir
from nornir_utils.plugins.functions import print_result
from rich import print
script_dir = os.path.dirname(os.path.realpath(__file__))
nr = InitNornir(config_file=f"{script_dir}/config.yml")
payload = """interfaces {
lo0 {
unit 0 {
family inet {
address 3.3.3.3/32;
}
}
}
}
"""
response = nr.run(
task=pyez_config, payload=payload
)
# response is an AggregatedResult, which behaves like a list
# there is a response object for each device in inventory
devices = []
for dev in response:
print(response[dev].result)
使用XML执行Replace-Config操作的完整测试
from nornir_pyez.plugins.tasks import pyez_config, pyez_diff, pyez_commit
import os
from nornir import InitNornir
from nornir_utils.plugins.functions import print_result
from rich import print
script_dir = os.path.dirname(os.path.realpath(__file__))
nr = InitNornir(config_file=f"{script_dir}/config.yml")
xml_payload = """
<configuration>
<interfaces>
<interface>
<name>lo0</name>
<unit>
<name>0</name>
<family operation="replace">
<inet>
<address>
<name>3.3.3.4/32</name>
</address>
</inet>
</family>
</unit>
</interface>
</interfaces>
</configuration>
"""
def mega_runner(task):
send_result = task.run(
task=pyez_config, payload=xml_payload, data_format='xml')
if send_result:
diff_result = task.run(task=pyez_diff)
if diff_result:
task.run(task=pyez_commit)
response = nr.run(task=mega_runner)
print_result(response)
显示界面简洁
from nornir_pyez.plugins.tasks import pyez_int_terse
import os
from nornir import InitNornir
from nornir_utils.plugins.functions import print_result
from rich import print
script_dir = os.path.dirname(os.path.realpath(__file__))
nr = InitNornir(config_file=f"{script_dir}/config.yml")
response = nr.run(
task=pyez_int_terse
)
# response is an AggregatedResult, which behaves like a list
# there is a response object for each device in inventory
devices = []
for dev in response:
print(response[dev].result)
获取路线信息
from nornir_pyez.plugins.tasks import pyez_route_info
import os
from nornir import InitNornir
from nornir_utils.plugins.functions import print_result
from rich import print
script_dir = os.path.dirname(os.path.realpath(__file__))
nr = InitNornir(config_file=f"{script_dir}/config.yml")
response = nr.run(
task=pyez_route_info
)
# response is an AggregatedResult, which behaves like a list
# there is a response object for each device in inventory
devices = []
for dev in response:
print(response[dev].result)
联系人
- https://dataknox.dev
- https://twitter.com/data_knox
- https://youtube.com/c/dataknox
- https://learn.gg/dataknox
- 项目
标签: