MODULE FAILURE using Replace and with_together

Hello, I’m getting a module failure when trying to use ‘replace’ and with_together.
Is there something wrong with my script? thank you.

Tasks:

  • name: Gather Current DB Settings - Database Name
    shell: grep -v “|” /tmp/directory{{ date }}/{{ item }}/application/config/production/database.php | grep “‘database’” | awk ‘{print $3}’ | sed “s/
    ;//g” | sed “s/'//g”
    with_items:

  • “{{ products }}”
    register: db_name

  • name: Update DB Settings - Database Name
    replace:
    dest: /tmp/directory{{ date }}/{{ item.0 }}/application/config/production/database.php
    regexp: ‘{{ item.1 }}’
    replace: ‘{{ item.2 }}’
    with_together:

  • “{{ products }}”

  • db_name.results

  • “{{ database_name_update }}”

Error:

An exception occurred during task execution. The full traceback is:
Traceback (most recent call last):
File “/tmp/ansible_DptbqW/ansible_module_replace.py”, line 169, in
main()
File “/tmp/ansible_DptbqW/ansible_module_replace.py”, line 145, in main
mre = re.compile(params[‘regexp’], re.MULTILINE)
File “/usr/lib64/python2.7/re.py”, line 190, in compile
return _compile(pattern, flags)
File “/usr/lib64/python2.7/re.py”, line 242, in _compile
raise error, v # invalid expression
sre_constants.error: unexpected end of regular expression

Since its failing with "unexpected end of regular expression" it impossible to say without the content of db_name variable.

Hi,

The last sed has an unescaped single quote.

You should replace this:

sed "s/'//g"

with this:

sed "s/"'"//g"

That's a single quote surrounded by double quotes. Backslash won't work.

You'll find some explanations here:

http://stackoverflow.com/questions/1250079/how-to-escape-single-quotes-within-single-quoted-strings

Cheers,

Marko

I'm sorry, that was wrong solution.

Cheers,
Marko