Я новичок в Ansible and Networking, однако я начал работу в сетевой компании, где мы начали использовать Ansible для автоматизации конфигураций сетевых узлов. Устройства Juniper не показывают проблем, однако переключатели Arista создают проблемы при попытке передать простые команды.
Итак, я пытаюсь создать vlans на коммутаторах Arista, используя Ansible.
Я использую соединение eapi с использованием https (конфиденциальные данные заменены на xxx):
show management api http-commands
Enabled: Yes
HTTPS server: running, set to use port 443
HTTP server: shutdown, set to use port 80
VRF: MGMT
Hits: 318
Last hit: 766 seconds ago
Bytes in: 25241
Bytes out: 3985523
Requests: 40
Commands: 80
Duration: 79.082 seconds
User Hits Bytes in Bytes out Last hit
---------- ---------- -------------- --------------- ---------------
xxx 40 25241 3985523 766 seconds ago
URLs
-------------------------------------
Vlan2 : https://xxx
вот моя задача:
- name: create vlan
eos_vlan:
vlan_id: "{{ vlan_id }}"
name: "{{ vlan_descr }}"
state: present
authorize: yes
auth_pass: "{{ auth_password }}"
transport: "{{ transport }}"
username: "{{ username }}"
password: "{{ password }}"
validate_certs: false
ssh_keyfile: "{{ ssh_keyfile }}"
Как видите, я использую пароль авторизации, все переменные хранятся в другом файле. Проблема в том, что я получаю эту ошибку:
changed": false, "code": 1002, "msg": "CLI command 2 of 2 'vlan 777' failed: invalid command"
Этот сервер работает на:
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.21.2.el7.x86_64
Architecture: x86-64
Использование Ansible:
config file = /opt/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, May 2 2019, 20:40:44) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
Версия Arista:
Arista DCS-7050QX-32-F
Hardware version: 02.00
Software image version: 4.13.5F
Architecture: i386
Я пробовал это в тестовой среде, используя одни и те же задачи, но разные ANSI-образы виртуальных машин и образ arista:
Arista vEOS
Hardware version:
Serial number:
Software image version: 4.21.1.1F
Architecture: i386
Internal build version: 4.21.1.1F-10146868.42111F
и все вроде нормально, использовали одни и те же документы для настройки пользователей и так далее.
Я полагаю, это может быть связано с тем, что у пользователя нет привилегий, но я включил пароль администратора, и у пользователей eapi и ansible есть роли администратора сети.
Вот более подробный вывод:
fatal: [x.x.x.x]: FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"code": 1002,
"invocation": {
"module_args": {
"aggregate": null,
"associated_interfaces": null,
"auth_pass": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"authorize": true,
"delay": 10,
"host": "x.x.x.x",
"interfaces": null,
"name": null,
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"port": 443,
"provider": {
"auth_pass": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"authorize": true,
"host": "x.x.x.x",
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"port": 443,
"ssh_keyfile": "/root/.ssh/id_rsa.pub",
"timeout": 45,
"transport": "eapi",
"use_proxy": true,
"use_ssl": true,
"username": "eapi",
"validate_certs": false
},
"purge": false,
"ssh_keyfile": "/root/.ssh/id_rsa.pub",
"state": "present",
"timeout": 45,
"transport": "eapi",
"url_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"url_username": "eapi",
"use_ssl": true,
"username": "eapi",
"validate_certs": false,
"vlan_id": 777
}
},
"msg": "CLI command 2 of 2 'vlan 777' failed: invalid command"
}
Еще одна вещь, на которую стоит обратить внимание: если я использую vlan, который уже существует, и не включаю описание (чтобы не было внесено никаких изменений), Ansible возвращает успех:
ok: [x.x.x.x] => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"commands": [],
"invocation": {
"module_args": {
"aggregate": null,
"associated_interfaces": null,
"auth_pass": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"authorize": true,
"delay": 10,
"host": "x.x.x.x",
"interfaces": null,
"name": null,
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"port": 443,
"provider": {
"auth_pass": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"authorize": true,
"host": "x.x.x.x",
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"port": 443,
"ssh_keyfile": "/root/.ssh/id_rsa.pub",
"timeout": 45,
"transport": "eapi",
"use_proxy": true,
"use_ssl": true,
"username": "eapi",
"validate_certs": false
},
"purge": false,
"ssh_keyfile": "/root/.ssh/id_rsa.pub",
"state": "present",
"timeout": 45,
"transport": "eapi",
"url_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"url_username": "eapi",
"use_ssl": true,
"username": "eapi",
"validate_certs": false,
"vlan_id": 777
}
}
}
Может ли кто-нибудь указать мне на то место, где я должен искать ответы?
Или какие-либо предложения вообще? Я был бы очень признателен за это.
Спасибо