How to idempotently change file attributes (e.g. immutable) with Ansible
I recently needed to force the
/etc/resolv.conf file to be immutable on a set of CentOS servers, since the upstream provider's DHCP server was giving me a poorly-running set of default DNS servers, which was getting written to the
resolv.conf file on every reboot.
There are a few different ways to force your own DNS servers (and override DHCP), but one of the simplest, at least for my use case, is to change the file attributes on
/etc/resolv.conf to make the file immutable (unable to be overwritten, e.g. by the network service's DHCP on reboot).
Typically you would do this on the command line with:
chattr +i /etc/resolv.conf
And Ansible's file module has an
attr) parameter which allows the setting of attributes. For example, to set the attributes to
i, you would use a task like: