---

- name: sync_kube_master_certs | Create list of needed kube admin certs
  set_fact:
    kube_admin_cert_list: "{{ kube_admin_cert_list|d([]) + ['admin-' + inventory_hostname + '.pem'] }}"

- include_tasks: ../../../vault/tasks/shared/sync_file.yml
  vars:
    sync_file: "{{ item }}"
    sync_file_dir: "{{ kube_cert_dir }}"
    sync_file_group: "{{ kube_cert_group }}"
    sync_file_hosts: [ "{{ inventory_hostname }}" ]
    sync_file_is_cert: true
    sync_file_owner: kube
  with_items: "{{ kube_admin_cert_list|d([]) }}"

- name: sync_kube_master_certs | Set facts for kube admin sync_file results
  set_fact:
    kube_admin_certs_needed: "{{ kube_admin_certs_needed|default([]) + [item.path] }}"
  with_items: "{{ sync_file_results|d([]) }}"
  when: item.no_srcs|bool

- name: sync_kube_master_certs | Unset sync_file_results after kube admin certs
  set_fact:
    sync_file_results: []

- include_tasks: ../../../vault/tasks/shared/sync_file.yml
  vars:
    sync_file: "{{ item }}"
    sync_file_dir: "{{ kube_cert_dir }}"
    sync_file_group: "{{ kube_cert_group }}"
    sync_file_hosts: "{{ groups['kube-master'] }}"
    sync_file_is_cert: true
    sync_file_owner: kube
  with_items: ["apiserver.pem", "kube-scheduler.pem", "kube-controller-manager.pem", "service-account.pem"]

- name: sync_kube_master_certs | Set facts for kube master components sync_file results
  set_fact:
    kube_master_components_certs_needed: "{{ kube_master_components_certs_needed|d([]) + [item.path] }}"
  with_items: "{{ sync_file_results|d([]) }}"
  when: item.no_srcs|bool

- name: sync_kube_master_certs | Unset sync_file_results after kube master components cert
  set_fact:
    sync_file_results: []

- include_tasks: ../../../vault/tasks/shared/sync_file.yml
  vars:
    sync_file: front-proxy-ca.pem
    sync_file_dir: "{{ kube_cert_dir }}"
    sync_file_group: "{{ kube_cert_group }}"
    sync_file_hosts: "{{ groups['kube-master'] }}"
    sync_file_owner: kube

- name: sync_kube_master_certs | Unset sync_file_results after front-proxy-ca.pem
  set_fact:
    sync_file_results: []

- include_tasks: ../../../vault/tasks/shared/sync_file.yml
  vars:
    sync_file: "{{ item }}"
    sync_file_dir: "{{ kube_cert_dir }}"
    sync_file_group: "{{ kube_cert_group }}"
    sync_file_hosts: "{{ groups['kube-master'] }}"
    sync_file_is_cert: true
    sync_file_owner: kube
  with_items: ["front-proxy-client.pem"]

- name: sync_kube_master_certs | Set facts for front-proxy-client certs sync_file results
  set_fact:
    kube_front_proxy_clients_certs_needed: "{{ kube_front_proxy_clients_certs_needed|d([]) + [item.path] }}"
  with_items: "{{ sync_file_results|d([]) }}"
  when: item.no_srcs|bool

- name: sync_kube_master_certs | Unset sync_file_results after front-proxy-client sync
  set_fact:
    sync_file_results: []

- include_tasks: ../../../vault/tasks/shared/sync_file.yml
  vars:
    sync_file: ca.pem
    sync_file_dir: "{{ kube_cert_dir }}"
    sync_file_group: "{{ kube_cert_group }}"
    sync_file_hosts: "{{ groups['kube-master'] }}"
    sync_file_owner: kube

- name: sync_kube_master_certs | Unset sync_file_results after ca.pem
  set_fact:
    sync_file_results: []
