[colug-432] Automatically Edit Configuration File
jep200404 at columbus.rr.com
jep200404 at columbus.rr.com
Wed Nov 18 22:24:35 EST 2015
How would you automate the editing of a configuration file as
described below?
I am automating the configuration of a system with Ansible.
For /etc/httpd/conf/httpd.conf, I need to make sure that the
<Directory /> section has a "Require all granted" line instead
of a "Require all denied" line. "Require all" lines in other
sections need to be left alone.
original /etc/httpd/conf/httpd.conf
...
<Directory />
AllowOverride none
Require all denied
</Directory>
...
<Files ".ht*">
Require all denied
</Files>
...
desired /etc/httpd/conf/httpd.conf
...
<Directory />
AllowOverride none
Require all granted
</Directory>
...
<Files ".ht*">
Require all denied
</Files>
...
I can write an awk script or probably even a sed script to do it,
but it is desirable to edit with a Ansible module instead of an
external shell command, because of the way Ansible modules
understand when something has really changed or not.
I don't see how to use the lineinfile module in this situation,
because it will only change the last line to match a regex.
Matching "Require all" would change the line in the <Files ".ht*">,
section instead of in the <Directory /> section.
It would be easy to just replace the whole file with a new one from
Ansible, but that is also not preferred because when some new
version of httpd.conf arrives, the wholesale replacement would
clobber other changes in the configuration file.
More information about the colug-432
mailing list