Deepan_M
(Deepan M)
February 26, 2019, 2:49pm
1
Hello Guys,
Can someone please help me to resolve this issue.
below playbook i have created to remove dns entries from resolv.conf and its working perfect on rhel 6 but not in rhel 7.6, is there any bug or i need to add any parameters ?
Playbook :- blockinfile
Deepan_M
(Deepan M)
February 26, 2019, 3:36pm
2
Can someone please help me.
Are you sure the problem is ansible?
the playbook fails? what’s the shown message?
Or the problem is that the configuration are reset on reboot?
regards
Luca
take a look at /var/log/messages for line with
updated /etc/resolv.conf
see more details at https://access.redhat.com/solutions/7412
Furthermore I don’t get why you use the argument block with blockinfile in order to remove the block… isn’t unnecessary?
regards
Luca
Deepan_M
(Deepan M)
February 27, 2019, 9:54am
6
Hello Luca,
Are you sure the problem is ansible?
:-Not Sure, same playbook is working on rhel6 but not in rhel7, means no error.
the playbook fails? what’s the shown message?
:-no, playbook is working successfully in rhel 6, but rhel 7 its failing, not only resolv.conf even i tried with dummy file created on /tmp however that also failed.
:-Or the problem is that the configuration are reset on reboot?
no configuration issue
Furthermore I don’t get why you use the argument block with blockinfile in order to remove the block… isn’t unnecessary?
:- is there any module did ansible is having it for removing block in file ?
Thanks,
Deepan M
Deepan_M
(Deepan M)
February 27, 2019, 10:16am
7
Hello Luca,
One more information about this blockinfile, i facing problem with state: absent only not with state: present, means i can able to add entries, not able to remove entries.
Thanks,
Deepan M
blockinfile is the right choice
anyway I’m not sure if the argument block is necessary
fusillator@catorcio:~/Code/ansible/test$ cat resolv.conf
nameserver 8.8.8.8
nameserver 13.2.7.8
nameserver 13.2.7.9
nameserver 13.2.7.10
search eu.ro.net mrtools.ro.com mit.gbr.ro.com
fusillator@catorcio:~/Code/ansible/test$ cat blockinfile.yml
hosts: localhost
tasks:
name: remove block regexps
blockinfile:
path: “./resolv.conf”
marker: “{mark}”
marker_begin: “nameserver 13.2.7.8”
marker_end: “search eu.ro.net mrtools.ro.com mit.gbr.ro.com ”
state: absent
backup: yes
fusillator@catorcio:~/Code/ansible/test$ ansible-playbook blockinfile.yml
PLAY [localhost] **************************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [remove block regexps] ***************************************************************************************************************************************************************************************************************************************************
changed: [localhost]
PLAY RECAP ********************************************************************************************************************************************************************************************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0
fusillator@catorcio:~/Code/ansible/test$ cat resolv.conf
nameserver 8.8.8.8
Can you launch the playbook with increased verbosity to analyze the failure?
Maybe it could be useful the debug feature to shorten the test:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_debugger.html
Unfortunatly at the moment I’m not on a rhel host.
Try also to check audit log for selinux restrictions
sealert -a /var/log/audit.log
regards
Luca
try to check if the marker line as blank/control/not printable characters at the end of the line
xxd resolv.conf
Deepan_M
(Deepan M)
February 27, 2019, 10:59am
10
Hi Luca,
Perfectly working what you have suggested.
I need one more suggestion, below is the content i want remove but when the line ends with #name its not working ? do you know how to remove with that also?
Playbook:-
cat resolve.yml
So you solved…
The blank counts for the matching of the marker lines…
fusillator@catorcio:~/Code/ansible/test$ ansible-playbook blockinfile.yml
PLAY [localhost] **************************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [remove block regexps] ***************************************************************************************************************************************************************************************************************************************************
changed: [localhost]
PLAY RECAP ********************************************************************************************************************************************************************************************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0
fusillator@catorcio:~/Code/ansible/test$ cat resolv.conf
nameserver 8.8.8.8
fusillator@catorcio:~/Code/ansible/test$ cat resolv.conf
resolv.conf resolv.conf.3339.2019-02-26@20:21:57~ resolv.conf.3740.2019-02-27@11:09:34~ resolv.conf.4381.2019-02-27@12:03:36~
fusillator@catorcio:~/Code/ansible/test$ cat resolv.conf
resolv.conf resolv.conf.3339.2019-02-26@20:21:57~ resolv.conf.3740.2019-02-27@11:09:34~ resolv.conf.4381.2019-02-27@12:03:36~
fusillator@catorcio:~/Code/ansible/test$ cat resolv.conf.4381.2019-02-27@12:03:36~
nameserver 8.8.8.8
nameserver 13.2.7.8 dns
nameserver 13.2.7.9
nameserver 13.2.7.10
search eu.ro.net mrtools.ro.com mit.gbr.ro.com
fusillator@catorcio:~/Code/ansible/test$ cat blockinfile.yml
hosts: localhost
tasks:
name: remove block regexps
blockinfile:
path: “./resolv.conf”
marker: “{mark}”
marker_begin: “nameserver 13.2.7.8 dns ”
marker_end: “search eu.ro.net mrtools.ro.com mit.gbr.ro.com ”
state: absent
backup: yes
regards
Luca
Deepan_M
(Deepan M)
February 27, 2019, 11:17am
12
Hi Luca,
I tried by removing blank space, even though its not working! seems # is not allowing to execute, can you please tell what can be done here!
cat resolve.yml
I dont know for me it s working… see my test in the prevoius answer. try to double check the yaml specification
Deepan_M
(Deepan M)
February 27, 2019, 11:36am
14
Hi Luca,
See below highlighted, seems on both playbook and file, you have removed blank space, thats why its working for you! but in my case blank is present, please see my output.
can you please my below info on your system and check what its showing.
fusillator@catorcio:~/Code/ansible/test$ cat resolv.conf.4381.2019-02-27@12:03:36~
nameserver 8.8.8.8
nameserver 13.2.7.8 dns
nameserver 13.2.7.9
nameserver 13.2.7.10
search eu.ro.net mrtools.ro.com mit.gbr.ro.com
fusillator@catorcio:~/Code/ansible/test$ cat blockinfile.yml
hosts: localhost
tasks:
name: remove block regexps
blockinfile:
path: “./resolv.conf”
marker: “{mark}”
marker_begin: “nameserver 13.2.7.8 dns ”
marker_end: “search eu.ro.net mrtools.ro.com mit.gbr.ro.com ”
state: absent
backup: yes
myoutput:-
cat resolv.conf
nameserver 13.2.7.8 # dns1
nameserver 13.2.7.9 # dns2
nameserver 13.2.7.10 # dns3
search eu.ro.net mrtools.ro.com mit.gbr.ro.com
cat resolve.yml
Interesting I’m commuting at the moment, I will test It tonight
Consider using the replace module to normalize the space incongruence before the blockinfile task…
Something like
- replace:
path: resolv.conf
regexp: '^(.*)\s+#\s+(.*)$'
replace: ' # '
backup: yes
unfortunately I can't try the playbook in this moment.
Regards
Luca
Deepan_M
(Deepan M)
February 27, 2019, 4:26pm
17
Hello Luca,
Replace can be removed single line, but how we can remove block ?
Thanks,
Deepan M
Deepan_M
(Deepan M)
February 27, 2019, 4:59pm
18
Hello Luca,
Below playbook no result, seems because of #name its not working i guess.
Replace should substitute all instance matching the regexp, as for the manual
This module will replace all instances of a pattern within a file.
Try this
hosts: localhost
tasks:
name: sort out blank discrepancy
replace:
path: resolv.conf
regexp: '^(.*)\s+#\s+(.*)$'
replace: ' # '
backup: yes
name: remove block regexps
blockinfile:
path: “./resolv.conf”
marker: “{mark}”
marker_begin: “nameserver 13.2.7.8 dns ”
marker_end: “search eu.ro.net mrtools.ro.com mit.gbr.ro.com ”
state: absent
backup: yes
Anyway I didn’t test it yet.
Regards
Luca
I’m finally home
Sorry the previous regexp was completely incorrect. Now I fixed it with a couple of tests…
And here it is
fusillator@catorcio:~/Code/ansible/test$ cat blockinfile.yml
hosts: localhost
tasks:
name: sort out blank discrepancy
replace:
path: resolv.conf
regexp: ‘^nameserver\s+([^ ]+)\s+#(.*)’
replace: ‘nameserver \1 #\2’
backup: yes
name: remove block regexps
blockinfile:
path: “./resolv.conf”
marker: “{mark}”
marker_begin: “nameserver 13.2.7.8 # dns1”
marker_end: “search eu.ro.net mrtools.ro.com mit.gbr.ro.com ”
state: absent
fusillator@catorcio:~/Code/ansible/test$ cat resolv.conf
nameserver 8.8.8.8
nameserver 13.2.7.8 # dns1
nameserver 13.2.7.9 # dns2
nameserver 13.2.7.10 # dns3
search eu.ro.net mrtools.ro.com mit.gbr.ro.com
fusillator@catorcio:~/Code/ansible/test$ ansible-playbook blockinfile.yml
PLAY [localhost] **************************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [sort out blank discrepancy] *********************************************************************************************************************************************************************************************************************************************
changed: [localhost]
TASK [remove block regexps] ***************************************************************************************************************************************************************************************************************************************************
changed: [localhost]
PLAY RECAP ********************************************************************************************************************************************************************************************************************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=0
fusillator@catorcio:~/Code/ansible/test$ cat resolv.conf
nameserver 8.8.8.8
Regards
Luca