支持 Netconf 的平台选项

此页面详细介绍了 Ansible 中 Netconf 连接的工作原理以及如何使用它。

可用连接

NETCONF

除了 junos_netconf 之外的所有模块,它启用 NETCONF

协议

通过 SSH 传输 XML

凭据

如果存在,则使用 SSH 密钥/SSH 代理

如果使用密码,则接受 -u myuser -k

间接访问

通过堡垒机(跳板主机)

连接设置

ansible_connection: ansible.netcommon.netconf

ansible_connection: local 已弃用。请改用 ansible_connection: ansible.netcommon.netconf

在 Ansible 中使用 NETCONF

启用 NETCONF

在可以使用 NETCONF 连接到交换机之前,您必须

  • 在您的控制节点上使用 pip install ncclient 安装 ncclient Python 包

  • 在 Junos OS 设备上启用 NETCONF

要通过 Ansible 在新的交换机上启用 NETCONF,请通过 CLI 连接使用特定于平台的模块或手动设置它。例如,像在上面的 CLI 示例中一样设置您的平台级变量,然后运行如下所示的 playbook 任务

- name: Enable NETCONF
  connection: ansible.netcommon.network_cli
  junipernetworks.junos.junos_netconf:
  when: ansible_network_os == 'junipernetworks.junos.junos'

启用 NETCONF 后,更改您的变量以使用 NETCONF 连接。

NETCONF 清单示例 [junos:vars]

[junos:vars]
ansible_connection=ansible.netcommon.netconf
ansible_network_os=junipernetworks.junos.junos
ansible_user=myuser
ansible_password=!vault |

NETCONF 任务示例

- name: Backup current switch config
  junipernetworks.junos.netconf_config:
    backup: yes
  register: backup_junos_location

具有可配置变量的 NETCONF 任务示例

- name: configure interface while providing different private key file path
  junipernetworks.junos.netconf_config:
    backup: yes
  register: backup_junos_location
  vars:
    ansible_private_key_file: /home/admin/.ssh/newprivatekeyfile

注意:有关 netconf 连接插件的可配置变量,请参阅 ansible.netcommon.netconf

堡垒/跳板主机配置

要使用跳板主机连接到启用了 NETCONF 的设备,您必须设置 ANSIBLE_NETCONF_SSH_CONFIG 环境变量。

ANSIBLE_NETCONF_SSH_CONFIG 可以设置为
  • 1 或 TRUE(触发使用默认 SSH 配置文件 ~/.ssh/config)

  • 自定义 SSH 配置文件的绝对路径。

SSH 配置文件应如下所示

Host *
  proxycommand ssh -o StrictHostKeyChecking=no -W %h:%p [email protected]
  StrictHostKeyChecking no

跳板主机的身份验证必须使用基于密钥的身份验证。

您可以在 SSH 配置文件中指定使用的私钥

IdentityFile "/absolute/path/to/private-key.pem"

或者您可以使用 ssh 代理。

ansible_network_os 自动检测

如果未为主机指定 ansible_network_os,则 Ansible 将尝试自动检测要使用的 network_os 插件。

也可以通过使用 auto 作为 ansible_network_os 来触发 ansible_network_os 自动检测。(注意:以前使用 default 代替 auto)。

警告

切勿以纯文本形式存储密码。我们建议使用 SSH 密钥进行 SSH 连接身份验证。Ansible 支持 ssh 代理来管理您的 SSH 密钥。如果您必须使用密码进行 SSH 连接身份验证,我们建议使用 Ansible Vault 对其进行加密。

另请参阅

设置超时选项