add kubespray to the XTesting as it provides newer version of kubenetes and can be...
[it/test.git] / XTesting / kubespray / test-infra / image-builder / roles / kubevirt-images / tasks / main.yml
diff --git a/XTesting/kubespray/test-infra/image-builder/roles/kubevirt-images/tasks/main.yml b/XTesting/kubespray/test-infra/image-builder/roles/kubevirt-images/tasks/main.yml
new file mode 100644 (file)
index 0000000..a0b36be
--- /dev/null
@@ -0,0 +1,57 @@
+---
+
+- name: Create image directory
+  file:
+    state: directory
+    path: "{{ images_dir }}"
+    mode: 0755
+
+- name: Download images files
+  get_url:
+    url: "{{ item.value.url }}"
+    dest: "{{ images_dir }}/{{ item.value.filename }}"
+    checksum: "{{ item.value.checksum }}"
+  loop: "{{ images|dict2items }}"
+
+- name: Unxz compressed images
+  command: unxz --force {{ images_dir }}/{{ item.value.filename }}
+  loop: "{{ images|dict2items }}"
+  when:
+    - item.value.filename.endswith('.xz')
+
+- name: Convert images which is not in qcow2 format
+  command: qemu-img convert -O qcow2 {{ images_dir }}/{{ item.value.filename.rstrip('.xz') }} {{ images_dir }}/{{ item.key }}.qcow2
+  loop: "{{ images|dict2items }}"
+  when:
+    - not (item.value.converted|bool)
+
+- name: Make sure all images are ending with qcow2
+  command: cp {{ images_dir }}/{{ item.value.filename.rstrip('.xz') }} {{ images_dir }}/{{ item.key }}.qcow2
+  loop: "{{ images|dict2items }}"
+  when:
+    - item.value.converted|bool
+
+- name: Resize images  # noqa 301
+  command: qemu-img resize {{ images_dir }}/{{ item.key }}.qcow2 +8G
+  loop: "{{ images|dict2items }}"
+
+# STEP 2: Include the images inside a container
+- name: Template default Dockerfile
+  template:
+    src: Dockerfile
+    dest: "{{ images_dir }}/Dockerfile"
+    mode: 0644
+
+- name: Create docker images for each OS  # noqa 301
+  command: docker build -t {{ registry }}/vm-{{ item.key }}:{{ item.value.tag }} --build-arg cloud_image="{{ item.key }}.qcow2" {{ images_dir }}
+  loop: "{{ images|dict2items }}"
+
+- name: docker login  # noqa 301
+  command: docker login -u="{{ docker_user }}" -p="{{ docker_password }}" "{{ docker_host }}"
+
+- name: docker push image  # noqa 301
+  command: docker push {{ registry }}/vm-{{ item.key }}:{{ item.value.tag }}
+  loop: "{{ images|dict2items }}"
+
+- name: docker logout  # noqa 301
+  command: docker logout -u="{{ docker_user }}" "{{ docker_host }}"