Неверный результат ввода из ios_command не позволяет stdout зарегистрироваться в ansible - PullRequest
0 голосов
/ 20 февраля 2019

У меня проблема с запуском модуля ios_command с Ansible.Я пытаюсь выполнить несколько команд, и выходные данные хранятся в переменной.

Она отлично работает, за исключением случаев, когда одна из команд недоступна на коммутаторе Cisco и возвращает «Обнаружен неверный ввод».Если это произойдет, ни одна из выходных данных какой-либо из команд не будет сохранена в переменной.

Вот очень простой пример:

  - name: "Running commands" 
    ios_command:
      commands:
        - show version
        - show run
    register: data_output
    ignore_errors: yes

В идеальной ситуации, как show version, так и showrun возвращает пригодный для использования вывод и, таким образом, сохраняется и используется в 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 Ответ

0 голосов
/ 27 февраля 2019

Полагаю, это проблема аутентификации.Попробуйте использовать те же учетные данные для входа на устройство и попробуйте «sh run» и посмотрите.

Если это так, и вы используете TACAS + для аутентификации, проверьте, разрешено ли в TACAS + использовать команду для учетной записи.или укажите уровень привилегий для пользователя.

Если учетные данные являются локальной учетной записью, вам может потребоваться дополнительно ввести пароль включения перед «sh run».Исправьте это либо:

  1. Добавьте «enable» и «{enable password}» перед любой командой

    -enable
    -{enable password}
    
  2. Настройтепривилегии пользователя на всех устройствах, чтобы избежать пароля:

    Router(config)#username {username} privilege 15
    
...