ios_command прерывается при попытке ответить на запрос двойного подтверждения

#ansible

#ansible

Вопрос:

Я настраиваю корневой центр сертификации на маршрутизаторе Cisco IOS и пытаюсь использовать модуль ios_command для запуска команды crypto pki server my-ca start .

При его запуске происходит следующее:

 GW1(config)#do crypto pki server my-ca start
%Some server settings cannot be changed after CA certificate generation.
% Please enter a passphrase to protect the private key
% or type Return to exit
Password: 

Re-enter password: 

% Certificate Server enabled.
GW1(config)#
  

При попытке автоматизировать это в ansible, это то, что я пытался:

 - name: Respond to double-password prompt
  ios_command:
    commands:
      - command: crypto pki server my-ca start
        prompt: 'assword:'
        answer: "mypasswordr"
  

Результат при запуске playbook выглядит следующим образом:

 "stdout_lines": [
    [
        "%Some server settings cannot be changed after CA certificate generation.", 
        "% Please enter a passphrase to protect the private key", 
        "% or type Return to exit", 
        "Password: ", 
        "", 
        "Re-enter password: ", 
        "% Aborted."
    ]
]
  

Похоже, что второе приглашение просто отменяет его, отправляя » r» вместо повторной отправки «mypassword r», как это было в первом приглашении.

Я дал строку запроса ios_command ‘assword:’, поэтому она должна была соответствовать как «Password: «, так и «Повторно введите пароль:», но это не имело значения.

Есть ли способ заставить модуль ios_command обрабатывать это двойное приглашение? Насколько я могу судить, я не могу ввести пароль в crypto pki server my-ca команду запуска.

Ответ №1:

На этот вопрос ответил Ганеш Налаваде из группы Google Ansible Project в этой теме. Его ответ был следующим:

Вы можете использовать модуль cli_command, доступный в Ansible версии 2.7 и далее

https://docs.ansible.com/ansible/latest/modules/cli_command_module.html

Задачу можно изменить, как показано ниже, для поддержки нескольких запросов.

 - name: Respond to double-password prompt
  cli_command:
    commands:
      - command: crypto pki server my-ca start
        check_all: True
        prompt: 
         - "password"
         - "enter password"

        answer: 
          - "mypasswordr"
          - "mypasswordr"