Как обработать ожидаемое приглашение в модуле ansible ios_config - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь реализовать пару простых команд на устройствах cisco ios, используя Ansible (модуль ios_config).

Особенно, я хочу удалить профиль пользователя, но он требует ответа на приглашение, и я получаю сообщение об ошибке тайм-аута ...

Я заметил, что в ios_command есть параметры приглашения / ответамодуля, но похоже, что он не поддерживается в модуле ios_config.

Кто-нибудь сталкивался с подобной проблемой?

Ansible Task:

  - name: remove user on remote devices
    ios_config:
      lines:
        - no username testuser
      provider: "{{ provider }}"

Вывод с устройства Cisco:

Cisco_Router(config)#no username testuser
This operation will remove all username related configurations with same name.Do you want to continue? [confirm]

Вывод Playbook:

TASK [remove user on remote devices] *************************************************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.module_utils.connection.ConnectionError: timeout trying to send command: end
fatal: [Cisco_Router]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/tmp/ansible_3_OlXK/ansible_module_ios_config.py\", line 583, in <module>\n    main()\n  File \"/tmp/ansible_3_OlXK/ansible_module_ios_config.py\", line 512, in main\n    load_config(module, commands)\n  File \"/tmp/ansible_3_OlXK/ansible_modlib.zip/ansible/module_utils/network/ios/ios.py\", line 168, in load_config\n  File \"/tmp/ansible_3_OlXK/ansible_modlib.zip/ansible/module_utils/connection.py\", line 149, in __rpc__\nansible.module_utils.connection.ConnectionError: timeout trying to send command: end\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 1}

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Я тоже это пробовал.

Кажется, что модуль ios_config ищет префикс hostname (config) # после выполнения каждой строки.Вот почему вторая строка вообще не обрабатывается, и я получил такое же уведомление - тайм-аут.

0 голосов
/ 03 августа 2018

Начиная с Ansible 2.4, существует модуль ios_user, который можно использовать для создания, редактирования и удаления пользователей.

Удаление определенного пользователя с помощью state: absent

- name: set user view/role
  ios_user:
    name: testuser
    state: absent
  provider: "{{ provider }}"

Полная документация и дополнительные примеры можно найти по адресу: https://docs.ansible.com/ansible/latest/modules/ios_user_module.html

_command модули и приглашения

Различные _command модули, включая ios_command, поддерживают передачу запросов.

Например:

  - name: run commands that require answering a prompt
    ios_command:
      commands:
        - command: 'clear counters GigabitEthernet0/1'
          prompt: 'Clear "show interface" counters on this interface \[confirm\]'
          answer: 'y'
        - command: 'clear counters GigabitEthernet0/2'
          prompt: '[confirm]'
          answer: "\r"

См. https://docs.ansible.com/ansible/latest/modules/ios_command_module.html для получения дополнительной информации.

0 голосов
/ 31 мая 2018

приглашение ожидает подтверждения, которое вам кажется, поэтому вам нужно подтвердить команду второй строкой, так что вам, вероятно, придется это сделать.

  - name: remove user on remote devices
    ios_config:
      lines:
        - no username testuser
        - yes
      provider: "{{ provider }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...