--- - name: set dns server for docker set_fact: docker_dns_servers: |- {%- if dns_mode in ['kubedns', 'coredns'] -%} {{ [ skydns_server ] }} {%- elif dns_mode == 'coredns_dual' -%} {{ [ skydns_server ] + [ skydns_server_secondary ] }} {%- elif dns_mode == 'dnsmasq_kubedns' -%} {{ [ dnsmasq_dns_server ] }} {%- elif dns_mode == 'manual' -%} {{ [ manual_dns_server ] }} {%- endif -%} - name: set base docker dns facts set_fact: docker_dns_search_domains: - 'default.svc.{{ dns_domain }}' - 'svc.{{ dns_domain }}' docker_dns_options: - ndots:{{ ndots }} - timeout:2 - attempts:2 - name: add upstream dns servers (only when dnsmasq is not used) set_fact: docker_dns_servers: "{{ docker_dns_servers + upstream_dns_servers|default([]) }}" when: dns_mode in ['kubedns', 'coredns', 'coreos_dual'] - name: add global searchdomains set_fact: docker_dns_search_domains: "{{ docker_dns_search_domains + searchdomains|default([]) }}" - name: check system nameservers shell: grep "^nameserver" /etc/resolv.conf | sed 's/^nameserver\s*//' changed_when: False register: system_nameservers check_mode: no - name: check system search domains shell: grep "^search" /etc/resolv.conf | sed 's/^search\s*//' changed_when: False register: system_search_domains check_mode: no - name: add system nameservers to docker options set_fact: docker_dns_servers: "{{ docker_dns_servers | union(system_nameservers.stdout_lines) | unique }}" when: system_nameservers.stdout != "" - name: add system search domains to docker options set_fact: docker_dns_search_domains: "{{ docker_dns_search_domains | union(system_search_domains.stdout.split()|default([])) | unique }}" when: system_search_domains.stdout != "" - name: check number of nameservers fail: msg: "Too many nameservers. You can relax this check by set docker_dns_servers_strict=no and we will only use the first 3." when: docker_dns_servers|length > 3 and docker_dns_servers_strict|bool - name: rtrim number of nameservers to 3 set_fact: docker_dns_servers: "{{ docker_dns_servers[0:3] }}" when: docker_dns_servers|length > 3 and not docker_dns_servers_strict|bool - name: check number of search domains fail: msg: "Too many search domains" when: docker_dns_search_domains|length > 6 - name: check length of search domains fail: msg: "Search domains exceeded limit of 256 characters" when: docker_dns_search_domains|join(' ')|length > 256