我正在尝试使用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}
答案 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
模块执行“{本身”模块可以实现的功能有点麻烦。