create_image_from_vm.yml 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. ---
  2. - name: deallocate vm
  3. command: >
  4. az vm deallocate
  5. -g "{{ openshift_azure_resource_group_name }}"
  6. -n vm
  7. - name: generalize vm
  8. command: >
  9. az vm generalize
  10. -g "{{ openshift_azure_resource_group_name }}"
  11. -n vm
  12. - name: get vm details
  13. command: >
  14. az vm show
  15. -g "{{ openshift_azure_resource_group_name }}"
  16. -n vm
  17. register: vm
  18. - name: create image resource group
  19. azure_rm_resourcegroup:
  20. name: "{{ image_resource_group }}"
  21. location: "{{ openshift_azure_resource_location }}"
  22. - name: create image
  23. command: >
  24. az image create
  25. -g "{{ image_resource_group }}"
  26. -n "{{ image_name }}"
  27. --source "{{ (vm.stdout | from_json).storageProfile.osDisk.managedDisk.id }}"
  28. --os-type Linux
  29. - name: get input image tags
  30. command: az image show -g "{{ openshift_azure_input_image_ns }}" -n "{{ (input_image.stdout | from_json).name }}"
  31. register: input_image_tags
  32. - name: remove valid tag from input image tags
  33. set_fact:
  34. input_image_tags_no_valid: "{{ {} | combine({item.key: item.value}) }}"
  35. when: item.key not in ['valid']
  36. with_dict: "{{ (input_image_tags.stdout | from_json).tags }}"
  37. - name: calculate final tags
  38. set_fact:
  39. final_tags: "{{ input_image_tags_no_valid | default({}) | combine(image_tags) }}"
  40. - name: tag image
  41. command: >
  42. az resource tag
  43. --resource-type Microsoft.Compute/images
  44. -g "{{ image_resource_group }}"
  45. -n "{{ image_name }}"
  46. --tags {% for k in final_tags %}{{ k }}={{ final_tags[k] }} {% endfor %}
  47. - name: log image resource group and name
  48. debug:
  49. msg: "{{ item }}"
  50. with_items:
  51. - "Resource group: {{ image_resource_group }}"
  52. - "Image name: {{ image_name }}"
  53. - name: log image tag information
  54. debug:
  55. msg: "{{ item.key }}: {{ item.value }}"
  56. with_dict: "{{ final_tags }}"