On Monday, 5 November 2018 18:13:39 CET John Harmon wrote:
> 
> As far as I can tell I have all of my quotes... it just doesn't seem to 
> like my escaping... Adding verbosity didn't give me any useful information.
> 
> 
>   - name: Sanitize vm.cfg step 2 of
>       lineinfile:
>         path: "{{ file }}"
>         regexp: "{{ item.regexp }}"
>         line: "{{ item.line }}"
>         backrefs: "{{ item.backrefs }}"
>       with_items:
>         - { regexp: "^(vif.*'mac=)((\w{2}:){3})((\w{2}:?){3})(.+)'$", line: 
> "\1\2AA:{{ 
> 99 | random(start=10, step=1) }}:{{ 99 | random(start=10, step=1) }}\6": 
> backrefs: yes }
>         - { regexp: "(^uuid)(?:[=\s']+)'(.*)'.*$", line: "{{ newid.stdout 
> }}", backrefs: no }
>         - { regexp: "(^name)(?:[=\s']+)'(.*)'.*$", line: "{{ newid.stdout 
> }}", backrefs: no }
> 
> Result:
> ERROR! Syntax Error while loading YAML.
>   found unknown escape character

In my experience this is because of double quotes around regexp and line that 
contains backslash, it is treated as a string and do expand escapes.
You can avoid that by using single quotes instead, but then you need to escape 
the single quotes in you regexp.

What I do is avoid quotes all together, to do that you need to write your 
with_items in another style

  with_items:
    - regexp: ^(vif.*'mac=)((\w{2}:){3})((\w{2}:?){3})(.+)'$
      line: \1\2AA:{{ 99 | random(start=10, step=1) }}:{{ 99 | random(start=10, 
step=1) }}\6
      backrefs: yes
    - regexp: (^uuid)(?:[=\s']+)'(.*)'.*$
      line: "{{ newid.stdout }}"
      backrefs: no
    - regexp: (^name)(?:[=\s']+)'(.*)'.*$
      line: "{{ newid.stdout }}"
      backrefs: no


This should work and the double quotes in the line must be there since { after 
colon in yaml is treated as a dict.

-- 
Kai Stian Olstad


-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/1873674.tdpmB0pa1K%40x1.
For more options, visit https://groups.google.com/d/optout.

Reply via email to