NTC Ansible模块的依赖项
项目描述
多厂商Ansible模块用于网络自动化
要开始使用这些模块,您需要执行 两个 步骤。
- 确保此存储库在您的Ansible模块搜索路径中
- 安装依赖项
确保模块在您的搜索路径中
首先,了解您的搜索路径是什么
ntc@ntc:~/projects$ ansible --version
ansible 2.1.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = ???
如果您已经配置了搜索路径,在您的搜索路径中时,请克隆存储库(以下有选项)。
如果您显示“默认”或无搜索路径,请打开上面显示的配置文件,此处为 /etc/ansible/ansible.cfg
。在该文件中,您将看到以下几行
[defaults]
# some basic default values...
inventory = /etc/ansible/hosts
library = /home/ntc/projects/
为 library
添加路径——这将成为您的搜索路径。在更改后,使用 ansible --version
验证它。
在克隆时,不要忘记使用 --recursive
!
选项1
git clone https://github.com/networktocode/ntc-ansible --recursive
选项2
git clone https://github.com/networktocode/ntc-ansible
cd ntc-ansible
git submodule update --init --recursive
注意:如果您想使用 ntc_show_command 与 ntc-templates 进行解析,请在克隆后导航到该目录并运行 setup.py 文件,例如 sudo python setup.py install
。
作为一个快速测试和验证,在尝试在 playbook 中使用它们之前,使用 ansible-doc
在模块中执行一个。例如,尝试这个
$ ansible-doc ntc_file_copy
如果这有效,Ansible 可以找到模块,然后您可以继续安装下面的依赖项。
安装依赖项
选项1
pip install ntc-ansible
选项2
如果您已经在上文克隆了它,您可以直接运行下面的第三个语句。
git clone https://github.com/networktocode/ntc-ansible
cd ntc-ansible
sudo python setup.py install
此外,您还需要安装lxml
库,在Ubuntu上可以这样安装:
sudo apt-get install zlib1g-dev libxml2-dev libxslt-dev python-dev
有时候终端
并未安装,可能需要手动安装。
pip install terminal
模块
- ntc_show_command - 从没有API的设备获取结构化数据。此模块使用SSH连接到设备。支持的设备类型与netmiko支持的一样多。
- ntc_config_command - 向没有API的设备发送命令。此模块使用SSH连接到设备。支持的设备类型与netmiko支持的一样多。
- ntc_save_config - 保存运行配置,并可选择将其复制到Ansible控制主机以进行离线备份。使用SSH/netmiko进行IOS,使用NX-API进行Nexus,使用eAPI进行Arista。
- ntc_file_copy - 从Ansible控制主机将文件复制到网络设备。使用SSH进行IOS,使用NX-API进行Nexus,使用eAPI进行Arista。
- ntc_reboot - 重启网络设备。使用SSH/netmiko进行IOS,使用NX-API进行Nexus,使用eAPI进行Arista。
- ntc_get_facts - 从网络设备收集事实。使用SSH/netmiko进行IOS,使用NX-API进行Nexus,使用eAPI进行Arista。
- ntc_rollback - 执行两个主要功能。(1)在设备上创建检查点文件或备份运行配置。(2)回滚到之前创建的检查点/备份配置。用例是在playbook的第一个任务中创建检查点/备份,然后在需要时使用block/rescue回滚,即在Ansible中尝试/捕获异常。使用SSH/netmiko进行IOS,使用NX-API进行Nexus,使用eAPI进行Arista。
- ntc_install_os - 安装新操作系统或仅设置引导选项。取决于平台。不会发出“reload”命令,但设备可能会自动重启。常见的工作流程是使用ntc_file_copy、ntc_install_os,然后在需要时使用ntc_reboot(如果需要)进行升级。使用SSH/netmiko进行IOS,使用NX-API进行Nexus,使用eAPI进行Arista。
常见问题
收集事实
从Ansible 2.1开始,在收集事实时存在名称空间冲突。以下消息将指示问题所在
TASK [Gathering Facts] *************************************************************************
*Using module file /home/bdowling/src/ansible-modules/ntc-ansible/setup.cfg*
fatal: [rtr02]: FAILED! => {
"failed": true,
"msg": "module (setup) is missing interpreter line"
}
msg: module (setup) is missing interpreter line
PLAY RECAP *************************************************************************************
rtr02 : ok=0 changed=0 unreachable=0 failed=1
您可以通过将gather_facts
更改为no,或删除3个setup.XX
文件来解决此问题。
收集事实示例
- hosts: test
connection: local
gather_facts: no
删除文件示例
rm ./setup.cfg
rm ./setup.py
rm ./ntc-templates/setup.py
有关更多详细信息,请参阅https://github.com/ansible/ansible/issues/20702和https://github.com/ansible/ansible/pull/20717。
此模块需要TextFSM
通常在虚拟环境中看到,根据Ansible对您使用的python二进制的解释,这不是预期的。如果您正确安装了textfsm,但收到以下警告,则表明您已达到此问题:
FAILED! => {"changed": false, "failed": true, "msg": "This module requires TextFSM"}
要修复此问题,请将以下内容添加到您的inventory或类似内容到您的group_vars/all.yml
:
[vars:all]
ansible_python_interpreter="/usr/bin/env python"
有关更多详细信息,请参阅https://github.com/ansible/ansible/issues/6345#issuecomment-181999529。
示例
请参阅示例
背景
ntc_show_command和ntc_config_command是第一个两个模块,这是从这个模块写出来的。这两个模块使用netmiko进行传输 - 这意味着如果netmiko支持某个平台,这些模块就可以使用。
所有其他模块支持Nexus使用pyntc,Arista使用pyeapi,IOS使用netmiko,Juniper使用PyEZ。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。