blob: db1f2ebc558468dd6c21d3c63f9e6a3b04ead339 [file] [log] [blame]
# 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.
- name: Generate OpenStack-Helm endpoints
ansible.builtin.include_role:
name: openstack_helm_endpoints
vars:
openstack_helm_endpoints_repo_name: "{{ openstack_helm_nova_chart_repo_name }}"
openstack_helm_endpoints_repo_url: "{{ openstack_helm_nova_chart_repo_url }}"
openstack_helm_endpoints_chart: "{{ openstack_helm_nova_chart_name }}"
- name: Generate Helm values comparison
ansible.builtin.include_role:
name: helm_diff
vars:
helm_diff_release_name: "{{ openstack_helm_nova_chart_name }}"
helm_diff_release_namespace: openstack
helm_diff_values: "{{ _openstack_helm_nova_values }}"
when:
- openstack_helm_nova_diff | bool
- name: Migrate database from MariaDB to Percona XtraDB Cluster
ansible.builtin.include_role:
name: openstack_helm_migrate_to_percona_xtradb_cluster
vars:
openstack_helm_migrate_to_percona_xtradb_cluster_release_name: "{{ openstack_helm_nova_chart_name }}"
openstack_helm_migrate_to_percona_xtradb_cluster_release_namespace: openstack
openstack_helm_migrate_to_percona_xtradb_cluster_databases:
- nova
- nova_api
- nova_cell0
openstack_helm_migrate_to_percona_xtradb_cluster_services:
- kind: Deployment
name: nova-api-metadata
- kind: Deployment
name: nova-api-osapi
- kind: Deployment
name: nova-conductor
- kind: Deployment
name: nova-scheduler
when:
- openstack_helm_nova_migrate_from_mariadb | bool
- name: Deploy Helm chart
kubernetes.core.helm:
name: "{{ openstack_helm_nova_chart_name }}"
chart_ref: "{{ openstack_helm_nova_chart_repo_name }}/{{ openstack_helm_nova_chart_name }}"
chart_version: 0.2.30
release_namespace: openstack
kubeconfig: /etc/kubernetes/admin.conf
values: "{{ _openstack_helm_nova_values }}"
# NOTE(mnaser): This is a a workaround due to the fact that Nova's online
# data migrations take forever.
wait_timeout: 10m
- name: Create Ingress
ansible.builtin.include_role:
name: openstack_helm_ingress
vars:
openstack_helm_ingress_endpoint: compute
openstack_helm_ingress_service_name: nova-api
openstack_helm_ingress_service_port: 8774
- name: Create Ingress
ansible.builtin.include_role:
name: openstack_helm_ingress
vars:
openstack_helm_ingress_endpoint: compute_novnc_proxy
openstack_helm_ingress_service_name: nova-novncproxy
openstack_helm_ingress_service_port: 6080
- name: Create flavors
openstack.cloud.compute_flavor:
auth:
auth_url: "https://{{ openstack_helm_endpoints['identity']['host_fqdn_override']['public']['host'] }}"
username: "{{ openstack_helm_endpoints['identity']['auth']['admin']['username'] }}"
password: "{{ openstack_helm_endpoints['identity']['auth']['admin']['password'] }}"
project_name: admin
user_domain_name: Default
project_domain_name: Default
region_name: "{{ openstack_helm_endpoints['identity']['auth']['neutron']['region_name'] }}"
# Flavor settings
flavorid: "{{ item.flavorid | default(omit) }}"
name: "{{ item.name }}"
vcpus: "{{ item.vcpus }}"
ram: "{{ item.ram }}"
disk: "{{ item.disk | default(omit) }}"
ephemeral: "{{ item.ephemeral | default(omit) }}"
swap: "{{ item.swap | default(omit) }}"
is_public: "{{ item.is_public | default(omit) }}"
rxtx_factor: "{{ item.rxtx_factor | default(omit) }}"
extra_specs: "{{ item.extra_specs | default(omit) }}"
loop: "{{ openstack_helm_nova_flavors }}"