blob: 92b9f14cd2cd422185c132bf8eff9b232f83fe38 [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: Uninstall the legacy HelmRelease
run_once: true
block:
- name: Suspend the existing HelmRelease
kubernetes.core.k8s:
state: patched
api_version: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: "{{ glance_helm_release_name }}"
namespace: "{{ glance_helm_release_namespace }}"
definition:
spec:
suspend: true
- name: Remove the existing HelmRelease
kubernetes.core.k8s:
state: absent
api_version: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: "{{ glance_helm_release_name }}"
namespace: "{{ glance_helm_release_namespace }}"
- name: Deploy Helm chart
run_once: true
kubernetes.core.helm:
name: "{{ glance_helm_release_name }}"
chart_ref: "{{ glance_helm_chart_ref }}"
release_namespace: "{{ glance_helm_release_namespace }}"
create_namespace: true
kubeconfig: /etc/kubernetes/admin.conf
values: "{{ _glance_helm_values | combine(glance_helm_values, recursive=True) }}"
- name: Create Ingress
ansible.builtin.include_role:
name: openstack_helm_ingress
vars:
openstack_helm_ingress_endpoint: image
openstack_helm_ingress_service_name: glance-api
openstack_helm_ingress_service_port: 9292
openstack_helm_ingress_annotations: "{{ _glance_ingress_annotations | combine(glance_ingress_annotations) }}"
- name: Create images
when: glance_images | length > 0
block:
- name: Wait until image service ready
kubernetes.core.k8s_info:
api_version: apps/v1
kind: Deployment
name: glance-api
namespace: openstack
wait_sleep: 10
wait_timeout: 600
wait: true
wait_condition:
type: Available
status: true
- name: Download images
ansible.builtin.get_url:
url: "{{ item.source_url | regex_replace('\\/$', '') }}/{{ item.image_file }}"
dest: "/tmp/{{ item.image_file }}"
mode: "0600"
loop: "{{ glance_images }}"
- name: Upload images
openstack.cloud.image:
cloud: atmosphere
name: "{{ item.name }}"
state: present
filename: "/tmp/{{ item.image_file }}"
min_disk: "{{ item.min_disk | default(omit) }}"
min_ram: "{{ item.min_ram | default(omit) }}"
container_format: "{{ item.container_format | default(omit) }}"
disk_format: "{{ item.disk_format | default(omit) }}"
properties: "{{ item.properties | default(omit) }}"
kernel: "{{ item.kernel | default(omit) }}"
ramdisk: "{{ item.ramdisk | default(omit) }}"
is_public: "{{ item.is_public | default(omit) }}"
loop: "{{ glance_images }}"
# NOTE(mnaser): This often fails since the SSL certificates are not
# ready yet. We need to wait for them to be ready.
retries: 60
delay: 5
register: _result
until: _result is not failed