# 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]
  gather_facts: false
  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: 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: ceph_provisioners
      when: atmosphere_ceph_enabled | default(true)
      tags:
        - ceph-provisioners

    - role: glance
      tags:
        - glance

    - role: cinder
      tags:
        - cinder

    - role: placement
      tags:
        - placement

    - role: openvswitch
      tags:
        - openvswitch

    - 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: horizon
      tags:
        - horizon

    - role: openstack_exporter
      tags:
        - openstack-exporter

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