Варианты платформы EOS
Аrista EOS поддерживает несколько подключений. На этой странице описано, как работает каждое подключение в Ansible 2.6 и как его использовать.
Доступные подключения
| CLI | eAPI | |
|---|---|---|
| Протокол | SSH | HTTP(S) |
| Косвенный доступ | через бастион (прокси-сервер) | через веб-прокси |
| Формат возвращаемых данных | stdout[0]. | stdout[0].messages[0]. |
Для устаревших плейбуков EOS по-прежнему поддерживает ansible_connection: local. Рекомендуется как можно скорее перейти к использованию ansible_connection: network_cli или ansible_connection: httpapi.
Использование CLI в Ansible 2.6
Пример CLI group_vars/eos.yml
ansible_connection: network_cli ansible_network_os: eos ansible_user: myuser ansible_ssh_pass: !vault... ansible_become: yes ansible_become_method: enable ansible_become_pass: !vault... ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q bastion01"'
- Если вы используете ключи SSH (включая ssh-agent), вы можете удалить конфигурацию
ansible_ssh_pass. - Если вы напрямую подключаетесь к хосту (не через бастион/прокси-сервер), вы можете удалить конфигурацию
ansible_ssh_common_args. - Если вы подключаетесь к хосту через бастион/прокси-сервер, вы не можете включить свой пароль SSH в директиву
ProxyCommand. Для предотвращения утечки секретов (например, вpsвыводе), SSH не поддерживает предоставление паролей через переменные среды.
Пример задачи CLI
- name: Backup current switch config (eos)
eos_config:
backup: yes
register: backup_eos_location
when: ansible_network_os == 'eos'
Использование eAPI в Ansible 2.6
Включение eAPI
Перед использованием eAPI для подключения к коммутатору необходимо включить eAPI. Для включения eAPI на новом коммутаторе через Ansible используйте модуль eos_eapi через подключение CLI. Настройте group_vars/eos.yml так же, как в примере CLI выше, затем выполните задачу плейбука следующим образом:
- name: Enable eAPI
eos_eapi:
enable_http: yes
enable_https: yes
become: true
become_method: enable
when: ansible_network_os == 'eos'
Дополнительные параметры для включения подключений HTTP/HTTPS можно найти в документации модуля eos_eapi.
После включения eAPI измените group_vars/eos.yml для использования подключения eAPI.
Пример eAPI group_vars/eos.yml
ansible_connection: httpapi ansible_network_os: eos ansible_user: myuser ansible_ssh_pass: !vault... ansible_become: yes ansible_become_method: enable proxy_env: http_proxy: http://proxy.example.com:8080
- Если вы подключаетесь к хосту напрямую (не через веб-прокси), вы можете удалить конфигурацию
proxy_env. - Если вы подключаетесь к хосту через веб-прокси, используя
https, изменитеhttp_proxyнаhttps_proxy.
Пример задачи eAPI
- name: Backup current switch config (eos)
eos_config:
backup: yes
register: backup_eos_location
environment: "{{ proxy_env }}"
when: ansible_network_os == 'eos'
В этом примере переменная proxy_env, определенная в group_vars, передается в параметр environment модуля в задаче.
Примеры eAPI с connection: local
group_vars/eos.yml:
ansible_connection: local
ansible_network_os: eos
ansible_user: myuser
ansible_ssh_pass: !vault...
eapi:
host: "{{ inventory_hostname }}"
transport: eapi
authorize: yes
auth_pass: !vault...
proxy_env:
http_proxy: http://proxy.example.com:8080
Задача eAPI:
- name: Backup current switch config (eos)
eos_config:
backup: yes
provider: "{{ eapi }}"
register: backup_eos_location
environment: "{{ proxy_env }}"
when: ansible_network_os == 'eos'
В этом примере две переменные, определенные в group_vars, передаются модулю задачи:
- переменная
eapiпередается в параметрproviderмодуля - переменная
proxy_envпередается в параметрenvironmentмодуля
Предупреждение
Никогда не храните пароли в открытом виде. Рекомендуется использовать ключи SSH для аутентификации SSH-соединений. Ansible поддерживает ssh-agent для управления вашими ключами SSH. Если вам необходимо использовать пароли для аутентификации SSH-соединений, рекомендуется шифровать их с помощью Ansible Vault.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/network/user_guide/platform_eos.html