# Copyright (c) 2022 VEXXHOST, Inc.
#
# 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.

- hosts: controllers[0]
  become: true
  roles:
    - role: cert_manager
      tags:
        - cert-manager

    - role: cluster_issuer
      tags:
        - cluster-issuer

    - role: ingress_nginx
      tags:
        - ingress-nginx

    - role: rabbitmq_cluster_operator
      tags:
        - rabbitmq-cluster-operator

    - role: percona_xtradb_cluster_operator
      tags:
        - percona-xtradb-cluster-operator

    - role: percona_xtradb_cluster
      tags:
        - percona-xtradb-cluster

    - role: node_feature_discovery
      tags:
        - node-feature-discovery

    - role: kube_prometheus_stack
      tags:
        - kube-prometheus-stack

    - role: loki
      tags:
        - loki

    - role: vector
      tags:
        - vector

    - role: prometheus_ethtool_exporter
      tags:
        - prometheus-ethtool-exporter

    - role: ipmi_exporter
      tags:
        - ipmi-exporter

    - role: prometheus_pushgateway
      tags:
        - prometheus-pushgateway

    - role: keepalived
      tags:
        - keepalived

    - role: memcached
      tags:
        - memcached

    - role: keystone
      tags:
        - keystone

    - role: barbican
      tags:
        - barbican

    - role: rook_ceph
      when: atmosphere_ceph_enabled | default(true)
      tags:
        - rook-ceph

    - role: rook_ceph_cluster
      when: atmosphere_ceph_enabled | default(true)
      tags:
        - rook-ceph-cluster

    - role: ceph_provisioners
      when: atmosphere_ceph_enabled | default(true)
      tags:
        - ceph-provisioners

    - role: glance
      tags:
        - glance

    - role: cinder
      tags:
        - cinder

    - role: placement
      tags:
        - placement

- name: Configure operating system
  hosts: controllers:computes
  become: true
  gather_facts: false
  roles:
    - role: lpfc
      tags:
        - lpfc

    - role: multipathd
      tags:
        - multipathd

- name: Deploy Open vSwitch
  hosts: controllers:computes
  become: true
  gather_facts: false
  roles:
    - role: openvswitch
      tags:
        - openvswitch

- hosts: controllers[0]
  become: true
  roles:
    - role: libvirt
      tags:
        - libvirt

    - role: coredns
      tags:
        - coredns

    - role: nova
      tags:
        - nova

    - role: neutron
      tags:
        - neutron

    - role: senlin
      tags:
        - senlin

    # NOTE(mnaser): This is disabled out of the box until we have a native way
    #               of configuring it with a pre-configured backend out of the
    #               box.
    # - role: designate
    #   tags:
    #     - designate

    - role: heat
      tags:
        - heat

    - role: octavia
      tags:
        - octavia

    - role: magnum
      tags:
        - magnum

    - role: manila
      tags:
        - manila

    - role: horizon
      tags:
        - horizon

    - role: openstack_exporter
      tags:
        - openstack-exporter

- hosts: controllers
  become: true
  roles:
    - role: openstack_cli
      tags:
        - openstack-cli
