Monitor Windows file (web.config) on servers

Hi

What is the best way to monitor any changes made to a Windows file (Either the web.config or hosts file)?

I want to be able to check that these files have not been changed at all, and if they have, Ansible picks that up and warns me and I can change it back to a template.

I am currently using the following playbook for the host file, but was wondering if there is sa easier way? As I want to do our web.config file?

Above looks good. You could try using win_stat, which returns a checksum and then do whatever is necessary if the checksum has changed.

Something like the following

Hi Jon

That is exactly what I was looking for!!

Thank you so much for your quick response and help!

Cheers
Mark

Hi Jon

Just want to ask a quick question…

Tried to do the following with the web.config file but keep getting errors.

ok: [10.10.3.170] => {
“Web.config_fileinfo”: “VARIABLE IS NOT DEFINED!”

I the tried to run the following paybooks to get some variables for that file:

So, not quite sure what’s going on here but…

register just stores the output from the win_stat command in a variable with the name you’ve given it.

So you need to do something with the contents of the variable - hence the debug in the example playbook above

Also I think variable names can’t have . in them so this isn’t going to work:

register: Web.config_fileinfo

See http://docs.ansible.com/ansible/playbooks_variables.html#what-makes-a-valid-variable-name for valid variable names

That will be why you are getting the
“Web.config_fileinfo”: “VARIABLE IS NOT DEFINED!”

Its looking for a variable called Web with a method called config_fileinfo on it, hence the failure.

Hopefully just picking a valid name for your variable and then examining the contents of the variable using debug will sort you out.

If you want some examples you can have a look in the ansible integration tests
https://github.com/ansible/ansible/blob/devel/test/integration/roles/test_win_stat/tasks/main.yml

Jon

Hi Jon

Thanks for the quick response…

Using the information you provided I did the following playbook below…and it worked perfectly.

So for some reason when I tried to use the following variable names it kept failing…‘web_stat_file’, '‘file_info’, ‘web_fileinfo’
Will have to read through and see why the only variable that works is ‘host_fileinfo’

Glad its working. I don’t know why those other variable names might be failing.

Perhaps worth checking your playbook is valid yaml. I like to use either notepad++ as it has YAML syntax hightlighting, or use www.yamlint.com to check for correctness.

Jon