---
- 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: |-
      {% for item in [domainentry] + [searchentries] + nameserverentries.split(',') -%}
      {{ item }}
      {% endfor %}
      options ndots:{{ ndots }}
      options timeout:2
      options attempts:2
    state: present
    insertbefore: BOF
    create: yes
    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 ', 'nameserver ', 'domain ', 'options ' ]
  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 ', 'nameserver ', 'domain ', 'options ' ]
  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"]