Lets assume you have configured ansible on multiple Windows hosts in order to massively perform patches installation or execute commands. As explained in detail on my previous articles in order to be successful the connection method must be set as winrm (see below)
ansible_connection = winrm ansible_winrm_server_cert_validation = ignore ansible_user = administrator ansible_password = ansible_become_user = administrator ansible_become_method = runas
However if you state this connection method, you cannot connect to linux machines and delegate tasks. One example of this scenario is a windows patching mechanism with wsus and ansible. You can deploy the patches using winrm method but you cannot log output on your localhost as the connection must be changed to ssh.
In order to bypass this problem I added a new group on my inventory for localhost entry for which I specify the connection method and user
[local] localhost ansible_connection=ssh ansible_become_user=root ansible_become_method=sudo ansible_user=root
Then one will be able to perform a logging action with the below task.
name: write output to file shell: echo "{{ result.stdout }}" >> /root/ansible/something.log delegate_to: localhost
Result is the registered output of the patching procedure.
I am using shell command in order to append a new entry every time I have a result from my previous actions.