Ansible期望模块不响应密码提示

时间:2016-09-14 07:48:16

标签: ansible expect ansible-playbook pexpect ansible-2.x

我正在尝试使用Ansible为openvp n用户创建密码。我正在使用expect模块,但它不起作用。

接下来是我正在尝试执行的任务。

- name: Crear contraseña
  expect:
    command: passwd openvpn
    responses:
      Question:
        - (?i)Introduzca la nueva contraseña de UNIX: "a1245"
        - (?i)Introduzca la nueva contraseña de UNIX: "a1245"

错误是下一个:

TASK [instalarVPN : Crear contraseña] ******************************************
fatal: [172.16.8.231]: FAILED! => {"changed": true, "cmd": "passwd openvpn", "delta": "0:00:30.108342", "end": "2016-09-14 10:13:07.370289", "failed": true, "rc": 10, "start": "2016-09-14 10:12:37.261947", "stdout": "Introduzca la nueva contraseña de UNIX: ", "stdout_lines": ["Introduzca la nueva contraseña de UNIX: "]}

如果我使用:

- name: Crear contraseña
  expect:
    command: passwd openvpn
    responses:
      (?i)Introduzca la nueva contraseña de UNIX: "a1245"
      (?i)Introduzca la nueva contraseña de UNIX: "a1245"

我有下一个错误:

fatal: [172.16.8.231]: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "\r\nTraceback (most recent call last):\r\n  File \"/tmp/ansible_98VaZx/ansible_module_expect.py\", line 230, in <module>\r\n    main()\r\n  File \"/tmp/ansible_98VaZx/ansible_module_expect.py\", line 151, in main\r\n    events[key.decode()] = response\r\nUnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 32: ordinal not in range(128)\r\n", "msg": "MODULE FAILURE", "parsed": false}

1 个答案:

答案 0 :(得分:1)

以下是多个提示和答案的语法:

- name: Crear contraseña
  expect:
    command: passwd openvpn
    responses:
      (?i)Enter new password: "a1245"
      (?i)Enter new password: "a1245"

注意:ñ是Unicode字符,因此可能需要引用,或者您可以将语言更改为英语。

您需要Ansible 2.1 - expect模块doc中的responses参数说明:

  

如果响应是列表,则连续匹配将返回连续响应。列表功能是2.1中的新功能。

尽管如此,使用expect模块执行“{本身”模块可以实现的功能有点麻烦。