---
- name: Kubernetes Apps | set up necessary nodelocaldns parameters
  set_fact:
    clusterIP: >-
      {%- if dns_mode in ['coredns', 'coredns_dual'] -%}
      {{ skydns_server }}
      {%- elif dns_mode == 'manual' -%}
      {{ manual_dns_server }}
      {%- endif -%}
    secondaryclusterIP: "{{ skydns_server_secondary }}"

- name: Kubernetes Apps | Lay Down nodelocaldns Template
  template:
    src: "{{ item.file }}.j2"
    dest: "{{ kube_config_dir }}/{{ item.file }}"
  with_items:
    - { name: nodelocaldns, file: nodelocaldns-config.yml, type: configmap }
    - { name: nodelocaldns, file: nodelocaldns-sa.yml, type: sa }
    - { name: nodelocaldns, file: nodelocaldns-daemonset.yml, type: daemonset }
  register: nodelocaldns_manifests
  vars:
    forwardTarget: >-
      {%- if secondaryclusterIP is defined and dns_mode == 'coredns_dual' -%}
      {{ clusterIP }} {{ secondaryclusterIP }}
      {%- else -%}
      {{ clusterIP }}
      {%- endif -%}
    upstreamForwardTarget: >-
      {%- if resolvconf_mode == 'host_resolvconf' and upstream_dns_servers is defined and upstream_dns_servers|length > 0 -%}
      {{ upstream_dns_servers|join(' ') }}
      {%- else -%}
      /etc/resolv.conf
      {%- endif -%}
  when:
    - enable_nodelocaldns
    - inventory_hostname == groups['kube-master'] | first
  tags:
    - nodelocaldns
    - coredns
