---
- name: Fetch /etc/os-release
  raw: cat /etc/os-release
  register: os_release
  changed_when: false
  environment: {}

- name: Set bootstrap_os
  set_fact:
    os_family: >-
      {%- if 'Ubuntu' in os_release.stdout -%}
      ubuntu
      {%- elif 'Debian' in os_release.stdout -%}
      debian
      {%- elif 'CoreOS' in os_release.stdout -%}
      coreos
      {%- elif 'Fedora' in os_release.stdout -%}
      fedora
      {%- elif 'CentOS' in os_release.stdout -%}
      centos
      {%- elif 'OpenSUSE' in os_release.stdout -%}
      opensuse
      {% endif %}

- include_tasks: bootstrap-ubuntu.yml
  when: os_family == "ubuntu"

- include_tasks: bootstrap-debian.yml
  when: os_family == "debian"

- include_tasks: bootstrap-coreos.yml
  when: os_family == "coreos"

- include_tasks: bootstrap-fedora.yml
  when: os_family == "fedora"

- include_tasks: bootstrap-centos.yml
  when: os_family == "centos"

- include_tasks: bootstrap-opensuse.yml
  when: os_family == "opensuse"

- import_tasks: setup-pipelining.yml

- name: Create remote_tmp for it is used by another module
  file:
    path: "{{ lookup('config', 'DEFAULT_REMOTE_TMP', on_missing='skip', wantlist=True) | first | default('~/.ansible/tmp') }}"
    state: directory
    mode: 0700

- name: Gather nodes hostnames
  setup:
    gather_subset: '!all'
    filter: ansible_*

- name: Assign inventory name to unconfigured hostnames (non-CoreOS and Tumbleweed)
  hostname:
    name: "{{inventory_hostname}}"
  when:
    - override_system_hostname
    - ansible_distribution not in ['openSUSE Tumbleweed']
    - ansible_os_family not in ['CoreOS', 'Container Linux by CoreOS']

- name: Assign inventory name to unconfigured hostnames (CoreOS and Tumbleweed only)
  command: "hostnamectl set-hostname  {{inventory_hostname}}"
  register: hostname_changed
  when:
    - ansible_hostname == 'localhost'
    - ansible_distribution in ['openSUSE Tumbleweed'] or ansible_os_family in ['CoreOS', 'Container Linux by CoreOS']
    - override_system_hostname

- name: Update hostname fact (CoreOS and Tumbleweed only)
  setup:
    gather_subset: '!all'
    filter: ansible_hostname
  when:
    - hostname_changed.changed
