I am using Ansible to set some variables on a file using the lineinfile
module.
The problem I'm bumping into is how to have a regular expression that is flexible enough to have some spaces in the middle of the string. Please see below:
- name: Set DB IP in db conn file
lineinfile:
dest=/path/to/db_conn
regexp="{{ item.regexp }}"
line="{{ item.line }}"
with_items:
- { regexp: "^.?dbschema_audit=",
line: "$dbschema_audit=\'{{ db_schema_audit }}\';" }
- { regexp: "^.?dbschema_audit_trail\s\*=",
line: "$dbschema_audit_trail=\'{{ db_schema_audit_trail }}\';" }
The file I'm trying to change has lines like these:
$dbschema_audit='a';
$dbschema_audit_trail ='a';
I have tried different variations of \s*
with {
, '
and \
and nothing seems to work. Can I have some wisdom from out there?
Ansible playbooks are in YAML format. In a double quoted scalar, character sequences starting with the \
character are escape sequences, but the YAML specification says \s
is a not a valid escape sequence.
In a double quoted scalar, you would have to write
"\\s"
Alternatively, in a single quoted scalar, the \
character has no special meaning, so you can write
'\s'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With