启用 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 连接到交换机之前,您必须

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

  • 在 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-agent。

ansible_network_os 自动检测

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

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

警告

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

另请参阅

设置超时选项