Hi, Not tried this myself but you could perhaps use fetch to pull the files back to the ansible controller and then run a task to compare that all of the fetched files match whatever your critieria are.
You might be able to use --diff if you compare the files as a local action on your ansible controller. Obviously its not ideal but until the windows modules can do --diff and --check that might do what you need. Hope this helps, Jon On Tuesday, May 24, 2016 at 4:47:44 PM UTC+1, Mark Matthews wrote: > > Hi > > I have a situation where I have several web servers that are load balanced > and are updated daily through Octopus. > > Although we still have issues when uses will go onto the Windows machines > and manually edit config files (Eg: web.config file). > > Is there anything that Ansible can do to check that all web.config files > are identical, and if a change is made to one of them it fails? > I would like to run a scheduled playbook that checks that all the > we.config files are identical and if one has been changed it fails....and > if possible can show where the file has been changed? > > I have been playing around with the following below, and although it works > to a certain point, its just not what im looking for. > So really just trying to find out if there is something that I dont know > about? Or some options I can look at? > > > Tried the below playbook, and it works great. But if the web.config is > changed everyday through Octopus, then the md5 changes. Which means I would > need to edit this everytime there is an update? > > - name: Check Web.config file > hosts: all > tasks: > - name: Stat the web.config file > win_stat: > path: C:\Websites\Live\Web.config > register: hosts_fileinfo > - name: show web.config file stats for debugging purposes > debug: > var: hosts_fileinfo > > - name: fail file not there > fail: > msg: "WEB.CONFIG file is missing" > when: hosts_fileinfo.stat.exists != true > > - name: fail if modified > fail: > msg: "WEB.CONFIG file has been modified" > when: hosts_fileinfo.stat.checksum != > "7ebf68e867b5b51570758ba81fd23258f1da9029" > > > Tried the below to search for a line in the file on all the servers, and > it works. But if a file is missing this line, it just puts it at the bottom > of the file. Which doesn't help....I would need it to look like all the > other web.config's? > > --- > - name: Check if line is present in config > hosts: all > tasks: > - name: Check if line is present in config > win_lineinfile: > dest: C:\Websites\Live\Web.config > regexp: <error statusCode="500" redirect="~/Errors/500page" /> > line: ' <error statusCode="500" redirect="~/Errors/500page" />' > > > I really just want a playbook that validate that all config files are > always uniform, and if possible tell me if something has manually be > changed and what? > > Cheers > Mark > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/a186090c-fe68-43a2-b309-5457aef9f361%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
