--- - name: Gather node IPs setup: gather_subset: '!all,!min,network' filter: "ansible_default_ip*" when: ansible_default_ipv4 is not defined or ansible_default_ipv6 is not defined ignore_unreachable: true - name: Set computed IPs variables vars: fallback_ip: "{{ ansible_default_ipv4.address | d('127.0.0.1') }}" fallback_ip6: "{{ ansible_default_ipv6.address | d('::1') }}" # Set 127.0.0.1 as fallback IP if we do not have host facts for host # ansible_default_ipv4 isn't what you think. _ipv4: "{{ ip | default(fallback_ip) }}" _access_ipv4: "{{ access_ip | default(_ipv4) }}" _ipv6: "{{ ip6 | default(fallback_ip6) }}" _access_ipv6: "{{ access_ip6 | default(_ipv6) }}" _access_ips: - "{{ _access_ipv4 if ipv4_stack }}" - "{{ _access_ipv6 if ipv6_stack }}" _ips: - "{{ _ipv4 if ipv4_stack }}" - "{{ _ipv6 if ipv6_stack }}" set_fact: cacheable: true main_access_ip: "{{ _access_ipv4 if ipv4_stack else _access_ipv6 }}" main_ip: "{{ _ipv4 if ipv4_stack else _ipv6 }}" # Mixed IPs - for dualstack main_access_ips: "{{ _access_ips | select }}" main_ips: "{{ _ips | select }}" - name: Set no_proxy to all assigned cluster IPs and hostnames when: - http_proxy is defined or https_proxy is defined - no_proxy is not defined vars: groups_with_no_proxy: - kube_control_plane - "{{ '' if no_proxy_exclude_workers else 'kube_node' }}" # TODO: exclude by a boolean in inventory rather than global variable - etcd - calico_rr hosts_with_no_proxy: "{{ groups_with_no_proxy | select | map('extract', groups) | select('defined') | flatten }}" _hostnames: "{{ (hosts_with_no_proxy + (hosts_with_no_proxy | map('extract', hostvars, morekeys=['ansible_hostname']) | select('defined'))) | unique }}" no_proxy_prepare: - "{{ apiserver_loadbalancer_domain_name | d('') }}" - "{{ loadbalancer_apiserver.address if loadbalancer_apiserver is defined else '' }}" - "{{ hosts_with_no_proxy | map('extract', hostvars, morekeys=['main_access_ip']) }}" - "{{ _hostnames }}" - "{{ _hostnames | map('regex_replace', '$', '.' + dns_domain ) }}" - "{{ additional_no_proxy_list }}" - 127.0.0.1 - localhost - "{{ kube_service_subnets }}" - "{{ kube_pods_subnets }}" - svc - "svc.{{ dns_domain }}" set_fact: no_proxy: "{{ no_proxy_prepare | select | flatten | unique | join(',') }}" run_once: true