---
- name: Ensuring config directories exist
  file:
    path: "{{ node_config_directory }}/{{ item }}"
    state: "directory"
    owner: "{{ config_owner_user }}"
    group: "{{ config_owner_group }}"
    mode: "0770"
  become: true
  with_items:
    - "bifrost"

- name: Generate bifrost configs
  merge_yaml:
    sources:
      - "{{ role_path }}/templates/{{ item }}.yml.j2"
      - "{{ node_custom_config }}/{{ item }}.yml"
      - "{{ node_custom_config }}/bifrost/{{ item }}.yml"
    dest: "{{ node_config_directory }}/bifrost/{{ item }}.yml"
    mode: "0660"
  become: true
  with_items:
    - "bifrost"
    - "dib"
    - "servers"

- name: Copying over rabbitmq config
  template:
    src: "{{ item }}"
    dest: "{{ node_config_directory }}/bifrost/{{ item }}"
    mode: "0660"
  become: true
  with_items:
    - "rabbitmq-env.conf"

- name: Template ssh keys
  template:
    src: "{{ item.src }}"
    dest: "{{ node_config_directory }}/bifrost/{{ item.dest }}"
    mode: "0660"
  become: true
  with_items:
    - { src: "id_rsa", dest: "id_rsa" }
    - { src: "id_rsa.pub", dest: "id_rsa.pub" }
    - { src: "ssh_config", dest: "ssh_config" }

# NOTE(mgoddard): The following task was lifted from a Bifrost play
# (playbooks/roles/bifrost-ironic-install/tasks/bootstrap.yml).  Because
# Bifrost cannot modify /etc/hosts from within the container we must do it
# here.
- name: "Ensure /etc/hosts has good defaults"
  lineinfile:
    dest: "/etc/hosts"
    regexp: "{{ item.regexp }}.*({{ ansible_hostname }}|localhost).*"
    line: "{{ item.contents }}"
  with_items:
    - { regexp: '^127\.0\.0\.1', contents: '127.0.0.1 {{ ansible_hostname }} {{ ansible_fqdn }} localhost' }
    - { regexp: '^::1', contents: '::1 {{ ansible_hostname }} {{ ansible_fqdn }} localhost ipv6-localhost ipv6-loopback' }
  become: true
