My regex can fetch the correct word; however, the ansible fails to change it enter image description here
My ansible code:
hosts: all
gather_facts: False
become: true
tasks:
- name: Checking if chargen configuration is present in the files
ansible.builtin.replace:
path: /etc/xinetd.d/chargen
regexp: '(?<=disable\s{9}\S\s)yes'
replace: 'no'
register: test
- name: Gathered
ansible.builtin.debug:
msg: "{{ test }}"
Result: it's "ok" but not changed
enter image description here enter image description here
CodePudding user response:
You can use
tasks:
- name: Checking if chargen configuration is present in the files
ansible.builtin.replace:
path: /etc/xinetd.d/chargen
regexp: '^(\s*disable\s*=\s*)yes\s*$'
line: '\g<1>no'
register: test
- name: Gathered
ansible.builtin.debug:
msg: "{{ test }}"
Here,
^(\s*disable\s*=\s*)yes\s*$- matches^- start of string(\s*disable\s*=\s*)- Capturing group 1 (it can be referred to with\1or\g<1>): zero or more whitespaces,disable, zero or more whitespaces,=, zero or more whitespacesyes-yesstring\s*- zero or more whitespaces$- end of string.
'\g<1>no'replaces the matched line with the value in Group 1 andnostring.
