Ansible: Replacing text in file complex example: Difference between revisions
(Created page with "I need to replace umask into /etc/profile from: if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask '''022''' else umask '''027''' fi to if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask '''002''' else umask '''022''' fi Below, an ansible script that do this: <nowiki> - name: Verify existence of file /etc/profile locally hosts: localhost gather_facts: false vars: myfile: /etc/...") |
No edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
I need to replace umask into /etc/profile from: | I need to replace umask values into /etc/profile from: | ||
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then | if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then | ||
| Line 19: | Line 19: | ||
<nowiki> | <nowiki> | ||
- name: | - name: Replacing text in file complex example | ||
hosts: localhost | hosts: localhost | ||
gather_facts: false | gather_facts: false | ||
Latest revision as of 20:45, 13 March 2024
I need to replace umask values into /etc/profile from:
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 022 else umask 027 fi
to
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 else umask 022 fi
Below, an ansible script that do this:
- name: Replacing text in file complex example
hosts: localhost
gather_facts: false
vars:
myfile: /etc/profile
tasks:
- name: "Read {{ myfile }}"
ansible.builtin.slurp:
src: "{{ myfile }}"
register: etc_profile
- name: Convert file content to string
ansible.builtin.set_fact:
profile_txt: "{{ etc_profile['content'] | b64decode }}"
- name: Change to 'umask_002' between then_else
ansible.builtin.replace:
path: "{{ myfile }}"
regexp: '(then\s+)umask\s\d+(\s+else)'
replace: '\1umask 002\2'
when: profile_txt | regex_search('then\s+umask\s002\s+else') is none
- name: Check 'umask 022' between else_fi
ansible.builtin.replace:
path: "{{ myfile }}"
regexp: '(else\s+)umask\s\d+(\s+fi)'
replace: '\1umask 022\2'
when: profile_txt | regex_search('else\s+umask\s022\s+fi') is none