EOS 平台选项
该 Arista EOS 集合支持多种连接。此页面提供了有关每种连接在 Ansible 中的工作方式以及如何使用它的详细信息。
可用连接
CLI |
eAPI |
|
---|---|---|
协议 |
SSH |
HTTP(S) |
凭据 |
如果存在,则使用 SSH 密钥/SSH 代理 如果使用密码,则接受 |
如果存在,则使用 HTTPS 证书 |
间接访问 |
通过堡垒机(跳板主机) |
通过 Web 代理 |
连接设置 |
|
|
启用模式 |
支持
|
支持
|
返回的数据格式 |
|
|
ansible_connection: local
已弃用。请改用 ansible_connection: ansible.netcommon.network_cli
或 ansible_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 对其进行加密。
另请参阅