---

- name: "sync_file | Cat the file"
  command: "cat {{ sync_file_path }}"
  register: sync_file_cat
  when: inventory_hostname == sync_file_srcs|first

- name: "sync_file | Cat the key file"
  command: "cat {{ sync_file_key_path }}"
  register: sync_file_key_cat
  when: sync_file_is_cert|d() and inventory_hostname == sync_file_srcs|first

- name: "sync_file | Set facts for file contents"
  set_fact:
    sync_file_contents: "{{ hostvars[sync_file_srcs|first].get('sync_file_cat', {}).get('stdout') }}"

- name: "sync_file | Set fact for key contents"
  set_fact:
    sync_file_key_contents: "{{ hostvars[sync_file_srcs|first].get('sync_file_key_cat', {}).get('stdout') }}"
  when: sync_file_is_cert|d()

- name: "sync_file | Ensure the directory exists"
  file:
    group: "{{ sync_file_group|d('root') }}"
    mode: "{{ sync_file_dir_mode|default('0750') }}"
    owner: "{{ sync_file_owner|d('root') }}"
    path: "{{ sync_file_dir }}"
    state: directory
  when: inventory_hostname not in sync_file_srcs

- name: "sync_file | Copy {{ sync_file_path }} to hosts that don't have it"
  copy:
    content: "{{ sync_file_contents }}"
    dest: "{{ sync_file_path }}"
    group: "{{ sync_file_group|d('root') }}"
    mode: "{{ sync_file_mode|default('0640') }}"
    owner: "{{ sync_file_owner|d('root') }}"
  when: inventory_hostname not in sync_file_srcs

- name: "sync_file | Copy {{ sync_file_key_path }} to hosts that don't have it"
  copy:
    content: "{{ sync_file_key_contents }}"
    dest: "{{ sync_file_key_path }}"
    group: "{{ sync_file_group|d('root') }}"
    mode: "{{ sync_file_mode|default('0640') }}"
    owner: "{{ sync_file_owner|d('root') }}"
  when: sync_file_is_cert|d() and inventory_hostname not in sync_file_srcs
