---
- name: Create temporary resolveconf cloud init file
  command: cp -f /etc/resolv.conf "{{ resolvconffile }}"
  when: ansible_os_family in ["Flatcar", "Flatcar Container Linux by Kinvolk"]

- name: Add domain/search/nameservers/options to resolv.conf
  blockinfile:
    path: "{{ resolvconffile }}"
    block: |-
      domain {{ dns_domain }}
      search {{ (default_searchdomains + searchdomains) | join(' ') }}
      {% for item in nameserverentries %}
      nameserver {{ item }}
      {% endfor %}
      options ndots:{{ ndots }} timeout:{{ dns_timeout | default('2') }} attempts:{{ dns_attempts | default('2') }}
    state: present
    insertbefore: BOF
    create: true
    backup: "{{ not resolvconf_stat.stat.islnk }}"
    marker: "# Ansible entries {mark}"
    mode: "0644"
  notify: Preinstall | propagate resolvconf to k8s components

- name: Remove search/domain/nameserver options before block
  replace:
    path: "{{ item[0] }}"
    regexp: '^{{ item[1] }}[^#]*(?=# Ansible entries BEGIN)'
    backup: "{{ not resolvconf_stat.stat.islnk }}"
  with_nested:
    - "{{ [resolvconffile, base | default(''), head | default('')] | difference(['']) }}"
    - [ 'search\s', 'nameserver\s', 'domain\s', 'options\s' ]
  notify: Preinstall | propagate resolvconf to k8s components

- name: Remove search/domain/nameserver options after block
  replace:
    path: "{{ item[0] }}"
    regexp: '(# Ansible entries END\n(?:(?!^{{ item[1] }}).*\n)*)(?:^{{ item[1] }}.*\n?)+'
    replace: '\1'
    backup: "{{ not resolvconf_stat.stat.islnk }}"
  with_nested:
    - "{{ [resolvconffile, base | default(''), head | default('')] | difference(['']) }}"
    - [ 'search\s', 'nameserver\s', 'domain\s', 'options\s' ]
  notify: Preinstall | propagate resolvconf to k8s components

- name: Get temporary resolveconf cloud init file content
  command: cat {{ resolvconffile }}
  register: cloud_config
  when: ansible_os_family in ["Flatcar", "Flatcar Container Linux by Kinvolk"]

- name: Persist resolvconf cloud init file
  template:
    dest: "{{ resolveconf_cloud_init_conf }}"
    src: resolvconf.j2
    owner: root
    mode: "0644"
  notify: Preinstall | update resolvconf for Flatcar Container Linux by Kinvolk
  when: ansible_os_family in ["Flatcar", "Flatcar Container Linux by Kinvolk"]
