Thank you so much for this.

I have now been able to use thesame login in my ansible role, and it 
appears to work.


- name Unreachable servers
  set_fact:
    down: "{{ ansible_play_hosts_all | difference(ansible_play_hosts)}}"

  - name: Set Execution File and parameters
    set_fact:
      scriptfile: "{{ansible_user_dir}}\\scripts\\host_check.ps1"
      params: "-servername '{{the_host_name}}' -response var_ping.failed 
-unreachable_hosts {{ down }}"

  - name: Execute script
    win_command: powershell.exe "{{scriptfile}}" "{{params}}"
    when: inventory_hostname == {{ db_server_host }}


I do however have some questions. My playbook runs against hosts defined in 
my inventory, in this case what I want to achieve is a situation where the 
unreachable hosts is passed onto a powershell script right at the end and 
at once. So for example, 100 hosts, 10 were unreachable. The playbook 
should gather the 10 unreachable hosts, and pass the list of hosts in an 
array format to a powershell script or as a json data type.

All I want to do is be able to process the list of unreachable servers from 
my powershell script.

At the moment, I get

[ "server1", "server2" ]

MY script will work with a format like this "server1","server2"

Lastly.The process of logging the unreachable servers at the end, only 
needs to happen once to a specific server which does the logging to a 
database. I created a task to do this as seen above.

db_server_host is being passed as a extra variables from ansible tower. The 
reason i added the when is that I only want it to run on the DB server and 
not on every host. I get the error The conditional check inventory_hostname 
== {{ db_server_host }} failed. The error was error while evaluating 
conditional inventory_hostname == {{ db_server_host }} 
'mydatabaseServerName' is undefined



On Wednesday, June 30, 2021 at 6:04:02 AM UTC+1 vbo...@gmail.com wrote:

> On Tue, 29 Jun 2021 12:42:21 -0700 (PDT)
> omoeko <atoloye...@gmail.com> wrote:
>
> > Lastly, to add the gather_facts: no. where do i add this in the ansible 
> > role ?
>
> See "Playbook Keywords". The directive gather_facts is available in a
> play only.
>
> https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html
>
> > ... is there a variable which contains all the unreachable hosts. Is it 
> possible to have this in a 
> > comma delimmeted list and stored in a variable ?
>
> The following solution won't work if you set "gather_facts: no".
>
> Yes, there are "Special Variables"
>
> https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html
>
> Quoting:
>
> * ansible_play_hosts_all: List of all the hosts that were targeted by
> the play.
>
> * ansible_play_hosts: List of hosts in the current play run, not
> limited by the serial. Failed/Unreachable hosts are excluded from
> this list.
>
> For example
>
> - hosts: alpha,beta,charlie
> gather_facts: true
> tasks:
> - block:
> - debug:
> var: ansible_play_hosts_all
> - debug:
> var: ansible_play_hosts
> - set_fact:
> down: "{{
> ansible_play_hosts_all|difference(ansible_play_hosts) }}"
> - debug:
> var: down
> run_once: true
>
> gives when the host alpha is down
>
> ansible_play_hosts_all:
> - alpha
> - beta
> - charlie
>
> ansible_play_hosts:
> - beta
> - charlie
>
> down:
> - alpha
>
>
> -- 
> Vladimir Botka
>

-- 
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 ansible-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/0a68e249-5f96-4642-bc28-1eff46b96cb3n%40googlegroups.com.

Reply via email to