Неверный результат ввода из ios_command не позволяет stdout зарегистрироваться в ansible
У меня проблема с запуском модуля ios_command с Ansible. Я пытаюсь выполнить несколько команд, и выходные данные хранятся в переменной.
Он работает отлично, за исключением случаев, когда одна из команд недоступна на коммутаторе Cisco и возвращает "Обнаружен неверный ввод". Если это произойдет, ни одна из выходных данных любой из команд не будет сохранена в переменной.
Вот очень простой пример:
- name: "Running commands"
ios_command:
commands:
- show version
- show run
register: data_output
ignore_errors: yes
В идеальной ситуации и show version, и show run возвращают пригодный для использования вывод и, таким образом, сохраняются и могут использоваться в data_output.stdout[0] и data_output.stdout[1].
Однако, когда "show run" недоступен на коммутаторе, я получаю следующую ошибку, и ничего не сохраняется:
TASK [Running commands] *******************************************
fatal: [40.27.254.12]: FAILED! => {"changed": false, "msg": "show run\\r\\n ^\\r\\n% Invalid input detected at '^' marker.\\r\\n\\r\\nR022DC3N5701>"}
...ignoring
TASK [Debug output] ************************************************************
ok: [40.27.254.12] => {
"data_output": {
"changed": false,
"failed": true,
"msg": "show run\\r\\n ^\\r\\n% Invalid input detected at '^' marker.\\r\\n\\r\\nR022DC3N5701>"
}
}
Любые идеи, как смягчить это? Мне нужно выполнить несколько команд IOS на сотнях коммутаторов. Некоторые будут работать нормально, некоторые будут возвращать вывод, как мы видим выше, где команда недоступна для запуска.
1 ответ
Я предполагаю, что это проблема аутентификации. Попробуйте использовать те же учетные данные для входа на устройство и попробуйте "sh run" и посмотрите.
Если это так, и вы используете TACAS+ для аутентификации, пожалуйста, проверьте, разрешает ли TACAS+ команду для учетной записи или дает уровень привилегий для пользователя.
Если учетные данные являются локальной учетной записью, вам может потребоваться дополнительно ввести пароль включения перед "sh run". Исправьте это либо:
Добавьте "enable" и "{enable password}" перед любой командой
-enable -{enable password}
Настройте пользовательские привилегии на всех устройствах, чтобы избежать пароля:
Router(config)#username {username} privilege 15