[role:glance] Provision images inside Openstack
Create cirros image
Sem-Ver: feature
Change-Id: Ib8a9095d9170e92aebe66987bee7f41e7a00fcae
diff --git a/molecule/default/group_vars/all/molecule.yml b/molecule/default/group_vars/all/molecule.yml
index 03d9b71..476079d 100644
--- a/molecule/default/group_vars/all/molecule.yml
+++ b/molecule/default/group_vars/all/molecule.yml
@@ -1,3 +1,12 @@
cert_manager_issuer:
ca:
secretName: root-secret
+
+openstack_helm_glance_images:
+ - name: cirros
+ source_url: http://download.cirros-cloud.net/0.5.1/
+ image_file: cirros-0.5.1-x86_64-disk.img
+ min_disk: 1
+ disk_format: qcow2
+ container_format: bare
+ is_public: true
diff --git a/releasenotes/notes/glance-create-images-6943e75e25560954.yaml b/releasenotes/notes/glance-create-images-6943e75e25560954.yaml
new file mode 100644
index 0000000..dcc97f1
--- /dev/null
+++ b/releasenotes/notes/glance-create-images-6943e75e25560954.yaml
@@ -0,0 +1,3 @@
+---
+features:
+ - Provision images inside Openstack
diff --git a/roles/openstack_helm_glance/defaults/main.yml b/roles/openstack_helm_glance/defaults/main.yml
index 41251bd..3b9fcec 100644
--- a/roles/openstack_helm_glance/defaults/main.yml
+++ b/roles/openstack_helm_glance/defaults/main.yml
@@ -53,3 +53,9 @@
openstack_helm_glance_values: {}
# ]]]
+# .. envvar:: openstack_helm_glance_images [[[
+#
+# List of images to provision inside OpenStack
+openstack_helm_glance_images: []
+
+ # ]]]
diff --git a/roles/openstack_helm_glance/tasks/main.yml b/roles/openstack_helm_glance/tasks/main.yml
index 0abdb87..3f157c6 100644
--- a/roles/openstack_helm_glance/tasks/main.yml
+++ b/roles/openstack_helm_glance/tasks/main.yml
@@ -39,3 +39,51 @@
openstack_helm_ingress_annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "0"
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
+
+- name: Create images
+ 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: Install openstacksdk
+ ansible.builtin.pip:
+ name: openstacksdk
+
+ - name: Download images
+ ansible.builtin.get_url:
+ url: "{{ item.source_url| regex_replace('\\/$', '') }}/{{ item.image_file }}"
+ dest: "/tmp/{{ item.image_file }}"
+ loop: "{{ openstack_helm_glance_images }}"
+
+ - name: Upload images
+ openstack.cloud.image:
+ 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']['glance']['region_name'] }}"
+ 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: "{{ openstack_helm_glance_images }}"