Ansible “expect” module with sudo

ansibleexpect

I want to run an installer script with Ansible. The installer script prompts for a number of responses and requires to be run with root privileges.

Here is the essence of my Ansible task:

- expect:
  become: yes
  become_method: sudo
  command: "installer.bin"
  echo: yes
  responses:
    "Choose the appropriate installation or upgrade option.": "2"
    "Where should the software be installed?": "/opt/newsoftware/" 

I would have thought this would work, but I get the error

fatal: [127.0.0.1]: FAILED! => {"changed": false, "failed": true, "msg": "unsupported parameter for module: become_method"}

If I omit "become_method", I get this error instead:

fatal: [127.0.0.1]: FAILED! => {"changed": false, "failed": true, "msg": "unsupported parameter for module: become"}

My Ansible is version 2.1.1.0

Best Answer

I think you need to write the task like:

- expect:
  become: yes
  become_method: sudo
  args:
    command: "installer.bin"
    echo: yes
    responses:
      "Choose the appropriate installation or upgrade option.": "2"
      "Where should the software be installed?": "/opt/newsoftware/" 

You could omit become_method.