EOS 平台选项

Arista EOS 集合支持多种连接。此页面提供了有关每种连接在 Ansible 中的工作原理以及如何使用它的详细信息。

可用连接

CLI

eAPI

协议

SSH

HTTP(S)

凭据

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

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

如果存在,则使用 HTTPS 证书

间接访问

通过堡垒机(跳板主机)

通过 Web 代理

连接设置

ansible_connection: ansible.netcommon.network_cli

ansible_connection: ansible.netcommon.httpapi

启用模式
(权限提升)

支持

  • 使用 ansible_become: true 以及 ansible_become_method: enable

支持

  • httpapi 使用 ansible_become: true 以及 ansible_become_method: enable

返回的数据格式

stdout[0].

stdout[0].messages[0].

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

在 Ansible 中使用 CLI

CLI 示例 group_vars/eos.yml

ansible_connection: ansible.netcommon.network_cli
ansible_network_os: arista.eos.eos
ansible_user: myuser
ansible_password: !vault...
ansible_become: true
ansible_become_method: enable
ansible_become_password: !vault...
ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q bastion01"'
  • 如果您使用 SSH 密钥(包括 ssh 代理),则可以删除 ansible_password 配置。

  • 如果您直接访问主机(不通过堡垒机/跳板主机),则可以删除 ansible_ssh_common_args 配置。

  • 如果您通过堡垒机/跳板主机访问主机,则不能在 ProxyCommand 指令中包含您的 SSH 密码。为了防止机密泄露(例如在 ps 输出中),SSH 不支持通过环境变量提供密码。

CLI 任务示例

- name: Backup current switch config (eos)
  arista.eos.eos_config:
    backup: yes
  register: backup_eos_location
  when: ansible_network_os == 'arista.eos.eos'

在 Ansible 中使用 eAPI

启用 eAPI

在您可以使用 eAPI 连接到交换机之前,必须启用 eAPI。要使用 Ansible 在新的交换机上启用 eAPI,请通过 CLI 连接使用 arista.eos.eos_eapi 模块。像上面 CLI 示例中一样设置 group_vars/eos.yml,然后运行如下所示的 playbook 任务

- name: Enable eAPI
  arista.eos.eos_eapi:
    enable_http: yes
    enable_https: yes
  become: true
  become_method: enable
  when: ansible_network_os == 'arista.eos.eos'

您可以在 arista.eos.eos_eapi 模块文档中找到启用 HTTP/HTTPS 连接的更多选项。

启用 eAPI 后,更改您的 group_vars/eos.yml 以使用 eAPI 连接。

eAPI 示例 group_vars/eos.yml

ansible_connection: ansible.netcommon.httpapi
ansible_network_os: arista.eos.eos
ansible_user: myuser
ansible_password: !vault...
ansible_become: true
ansible_become_method: enable
proxy_env:
  http_proxy: http://proxy.example.com:8080
  • 如果您直接访问主机(不通过 Web 代理),则可以删除 proxy_env 配置。

  • 如果您通过使用 https 的 Web 代理访问主机,请将 http_proxy 更改为 https_proxy

eAPI 任务示例

- name: Backup current switch config (eos)
  arista.eos.eos_config:
    backup: yes
  register: backup_eos_location
  environment: "{{ proxy_env }}"
  when: ansible_network_os == 'arista.eos.eos'

在此示例中,在 group_vars 中定义的 proxy_env 变量将传递到任务中模块的 environment 选项。

警告

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

另请参阅

设置超时选项