Having issues with Expect: module

I can’t seem to find much documentation or uses of this module. I tried reading up on pexpect documentation however, i’m unable to find my answer.

I’m having ansible run a script and then there are prompts that need to be answered.

`

  • name: GENERATE CERTIFICATE AND KEY
    expect:
    command: /home/user/script arg1
    chdir: /home/user/
    responses:
    (^)(?i)Enter: ‘{{ passphrase }}’
    (^)(?i)Verifying: ‘{{ passphrase }}’
    (^)(?i)Common: ‘{{ common_name }}’
    `

When the ./script runs, it has a series of text and the prompt finishes with:

‘Enter PEM pass phrase:’

is the (^)(?i) the correct regex I would be using to match the text ‘Enter’?

Id recommend just starting off with using `Enter: “{{ passphrase}}”

The (?i) indicates a case insensitive search, and the parents around ^ are unnecessary, and the can be problematic as sometimes expect sees a \n or a space as the first char.

Hi Matt - thanks for the quick response. That seemed to have done the trick.

Thanks!

Hi Matt,
Can you please help me here on “duplicate dict key”

[kodiak@localhost 10.0.1.51]$ cat dockerimage.yml

The expect module has the ability to respond multiple times to a single expected string, so instead of defining the expected string 2 times, you define it once, but give it a list of responses. Such as:

  • expect:
    command: /usr/local/sbin/install_blade.sh
    responses:
    ‘(?i)Enter choice:’:
  • “2”
  • “99”
    ‘(?i)Enter desired hostname:’: “rhel72”
    ‘(?i)associate hostname with:’: “oambr-ext”

This will require that you are running ansible 2.1, since that is the first version to have the multi answers per question functionality.