# Copyright 2020 Dell Inc. or its subsidiaries. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---

- name: Validate the cluster
  hosts: localhost
  connection: local
  gather_facts: no
  roles:
    - cluster_validation

- name: Gather facts from all the nodes
  hosts: all

- name: Apply common installation and config
  hosts: manager, compute
  gather_facts: false
  roles:
    - common
  tags: common

- name: Apply common K8s installation and config
  hosts: manager, compute
  gather_facts: false
  roles:
    - k8s_common
  tags: kubernetes

- name: Apply K8s manager config
  hosts: manager
  gather_facts: true
  roles:
    - k8s_manager
  tags: kubernetes

- name: Apply K8s firewalld config on manager and compute nodes
  hosts: manager, compute
  gather_facts: false
  roles:
    - k8s_firewalld
  tags: kubernetes

- name: Apply NFS server setup on manager node
  hosts: manager
  gather_facts: false
  roles:
    - k8s_nfs_server_setup
  tags:
    - kubernetes
    - nfs

- name: Apply NFS client setup on compute nodes
  hosts: compute
  gather_facts: false
  roles:
    - k8s_nfs_client_setup
  tags:
    - kubernetes
    - nfs

- name: Start K8s on manager server
  hosts: manager
  gather_facts: true
  roles:
    - k8s_start_manager
  tags: kubernetes

- name: Start K8s worker servers on compute nodes
  hosts: compute
  gather_facts: false
  roles:
    - k8s_start_workers
  tags: kubernetes

- name: Start K8s worker servers on manager nodes
  hosts: manager
  gather_facts: false
  roles:
    - k8s_start_services
  tags: kubernetes

- name: Apply common Slurm installation and config
  hosts: manager, compute
  gather_facts: false
  roles:
    - slurm_common
  tags: slurm

- name: Apply Slurm manager config
  hosts: manager
  gather_facts: false
  roles:
    - slurm_manager
  tags: slurm

- name: Start Slurm workers
  hosts: compute
  gather_facts: false
  roles:
    - slurm_workers
  tags: slurm

- name: Start Slurm services
  hosts: manager
  gather_facts: false
  roles:
    - slurm_start_services
  tags: slurm

- name: Install slurm exporter
  hosts: manager
  gather_facts: false
  roles:
    - slurm_exporter
  tags: slurm

- name: Passwordless SSH between manager and compute nodes
  include: appliance/tools/passwordless_ssh.yml
  when: hostvars['127.0.0.1']['appliance_status']