- name: Install systemd-resolved
  ansible.builtin.apt:
    pkg:
      - systemd-resolved
    state: present
    update_cache: true
  become: true

- name: Copy systemd config
  ansible.builtin.copy:
    src: systemd-resolved.conf
    dest: /etc/systemd/resolved.conf
    mode: "0644"
    owner: "root"
    group: "root"
  become: true
  register: systemd_resolved_config

- name: Enable systemd-resolved and (re)start
  ansible.builtin.systemd_service:
    name: systemd-resolved.service
    state: "{{ 'restarted' if systemd_resolved_config.changed else 'started' }}"
    enabled: true
    daemon_reload: true
  become: true
  register: systemd_resolved_started

- name: Restart other dns-related services
  ansible.builtin.systemd_service:
    name: "{{ item }}.service"
    state: restarted
    daemon_reload: true
  become: true
  when: systemd_resolved_started.changed # noqa: no-handler TODO can we add a handler here?
  loop:
    - tailscaled

- name: Create resolv.conf symlink
  ansible.builtin.file:
    src: /run/systemd/resolve/stub-resolv.conf
    dest: /etc/resolv.conf
    force: true
    state: link
  become: true