Gathering facts failing

616 views
Skip to first unread message

omoeko

unread,
Jan 30, 2022, 12:38:39 PM1/30/22
to Ansible Project
Hi All.

I have a list of hosts that I am trying to check connectivity and ensure that ansible tower can connect to it with the defined credential, so we are checking 2 things here.

Connectivity to ensure that the host is online.
Ensure that ansible can connect with the defined credentials.

The issue I am having now is that the fact gatherng process does get stuck, to get around this issue I specified the gather_timeout of 30 seconds, this has not made any effect. If the timeout is completely removed, there is no effect also. The issue is that the failure to gather facts leads to a complete halt/stop of the playbook, what i ideally want is that if the gthering of facts fails for a host, break out and move on to the next host.

The error is as follows.

fatal: [servername]: UNREACHABLE ! => {"changed": false, msg": "ntlm: HTTPConnectionPool(host='servername',port=5985) Max retries exceeded with url: /wsman (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x75c590cb9a50<: Failed to establish a new connection: [Errorno -2] Name of service not known',))", "unreachable":true}


My playbook is as follows.

---
  - name: Include Host
    add_host:
      name: "{{item}}"
    with_items: "{{} jump_server }}"

  - name: Central Controller
    hosts: all
    gather_facts: no
    serial: 1
    tasks:

  - name: Setup credentials
    include_role:
      name: roles/creds/connect_credentials
    no_log: true

  - name: Gather facts
    setup:
    async: 0
    poll: 0
    register: returned_facts
 
  - include_role:
      name: log_results
     
connect_credentials
---
- name: Set Credentials
  set_fact:
    ansible_user: domain\username
    ansible_password: xxxxxx
    ansible_become: true
    ansible_become_method: runas
    ansible_become_user: domain\username
    ansible_become_password: xxxxxx
    ansible_become_flags: login_type=new_credentials logon_flags=netcredentials_only
    ansible_connection: winrm
    ansiblansible_winrm_scheme: http
    ansible_winrm_transport: ntlm
    ansible_port: 5985
    ansible_winrm_Server_cert_validation: ignore
    ansible_winrm_kerberos_delegation: true
    ansible_winrm_operation_timeout_sec: 30
    ansible_winrm_read_timeout_sec: 60


log_Results role

---
- block:
  - name: Call API  to log succcessful connection
    include_role:
      name: api_logger
    vars:
      servername: "{{inventory_hostname}}"
    ignore_errors: false
    when: returned_facts.unreachable is undefined

  - name: Deal with failed gather facts
    setup:
    ignore_unreablable: yes
    delegate_to: localhost
    delegate_facts: true
    register: localhost_time

  - name: debug
    set_fact:
      current_time: "{{localhost_time.ansible_facts.ansible_date_time.iso8601}}"
    when: returned_facts.unreachable is defined


  - name: Call API  to log succcessful connection
    include_role:
      name: api_logger
    vars:
      servername: "{{inventory_hostname}}"
    ignore_errors: false
    when: returned_facts.unreachable is defined

  rescue:
    - debug:
        msg: "Error"
Reply all
Reply to author
Forward
0 new messages