---
- name: "bootstrap/gen_ca | Ensure cert_dir {{ gen_ca_cert_dir }} exists"
  file:
    mode: 0755
    path: "{{ gen_ca_cert_dir }}"
    state: directory

- name: "bootstrap/gen_ca | Generate {{ gen_ca_mount_path }} root CA"
  uri:
    url: "{{ vault_leader_url }}/v1/{{ gen_ca_mount_path }}/root/generate/exported"
    headers: "{{ gen_ca_vault_headers }}"
    method: POST
    body_format: json
    body: "{{ gen_ca_vault_options }}"
    status_code: 200,204
  register: vault_ca_gen
  delegate_to: "{{ groups.vault|first }}"
  run_once: true

- name: "bootstrap/gen_ca | Copy {{ gen_ca_mount_path }} root CA cert locally"
  copy:
    content: "{{ hostvars[groups.vault|first]['vault_ca_gen']['json']['data']['certificate'] }}"
    dest: "{{ gen_ca_cert_dir }}/ca.pem"
    mode: 0644
  when: vault_ca_gen.status == 200

- name: "bootstrap/gen_ca | Copy {{ gen_ca_mount_path }} root CA key locally"
  copy:
    content: "{{ hostvars[groups.vault|first]['vault_ca_gen']['json']['data']['private_key'] }}"
    dest: "{{ gen_ca_cert_dir }}/ca-key.pem"
    mode: 0640
  when: vault_ca_gen.status == 200
