Ansible repository with playbooks to manage azure objects
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

77 lines
3.5 KiB

  1. ---
  2. - name: Build tags list
  3. set_fact:
  4. tags_list: "{{ tags_list | default([]) | union([[tag.key,tag.value]|join(':')]) }}"
  5. loop: "{{ lookup('dict', vm.tags | default({}, true)) }}"
  6. loop_control:
  7. loop_var: "tag"
  8. - name: Get vitual machine
  9. azure_rm_virtualmachine_info:
  10. ad_user: "{{ azure_ad_user | default(omit) }}"
  11. password: "{{ azure_password | default(omit) }}"
  12. subscription_id: "{{ azure_subscription_id | default(lookup('env', 'AZURE_SUBSCRIPTION_ID')) }}"
  13. client_id: "{{ azure_client_id | default(lookup('env', 'AZURE_CLIENT_ID')) }}"
  14. secret: "{{ azure_secret | default(lookup('env', 'AZURE_SECRET')) }}"
  15. tenant: "{{ azure_tenant | default(lookup('env', 'AZURE_TENANT')) }}"
  16. resource_group: "{{ vm.resource_group }}"
  17. tags: "{{ tags_list | default(omit) }}"
  18. name: "{{ vm.name | default(omit) }}"
  19. register: azure_vm_facts
  20. failed_when: false
  21. #- name: get urn
  22. # shell: |
  23. # az vm image list --all --publisher {{ vm.image.publisher }} --offer {{ vm.image.offer }} --sku {{ vm.image.sku }} --query [].urn --output tsv
  24. # register: urn
  25. # when:
  26. # - (vm.plan | default({}, true)) != {}
  27. #- name: accept plan
  28. # shell: |
  29. # az vm image accept-terms --urn {{ urn.stdout_lines | last }}
  30. # when:
  31. # - (vm.plan | default({}, true)) != {}
  32. - name: Create vitual machine
  33. azure_rm_virtualmachine:
  34. ad_user: "{{ azure_ad_user | default(omit) }}"
  35. password: "{{ azure_password | default(omit) }}"
  36. subscription_id: "{{ azure_subscription_id | default(lookup('env', 'AZURE_SUBSCRIPTION_ID')) }}"
  37. client_id: "{{ azure_client_id | default(lookup('env', 'AZURE_CLIENT_ID')) }}"
  38. secret: "{{ azure_secret | default(lookup('env', 'AZURE_SECRET')) }}"
  39. tenant: "{{ azure_tenant | default(lookup('env', 'AZURE_TENANT')) }}"
  40. name: "{{ vm.name }}"
  41. accept_terms: "{{ vm.accept_terms | default(false, true) }}"
  42. admin_username: "{{ vm.admin_username | default('admin', true) }}"
  43. admin_password: "{{ vm.admin_password | default(omit, true) }}"
  44. availability_set: "{{ vm.availability_set | default(omit, true) }}"
  45. location: "{{ vm.location | default(omit, true) }}"
  46. allocated: "{{ vm.allocated | default(true) }}"
  47. data_disks: "{{ vm.data_disks | default([], true) }}"
  48. image: "{{ vm.image }}"
  49. windows_license_type: "{{ vm.windows_license_type | default(omit, true) }}"
  50. network_interfaces: "{{ vm.network_interfaces | default(omit, true) }}"
  51. os_disk_name: "{{ vm.os_disk_name | default(omit, true) }}"
  52. managed_disk_type: "{{ vm.managed_disk_type | default('StandardSSD_LRS', true) }}"
  53. os_disk_size_gb: "{{ vm.os_disk_size_gb | default(500, true) }}"
  54. os_type: "{{ vm.os_type | default(omit, true) }}"
  55. plan: "{{ vm.plan | default(omit, true) }}"
  56. public_ip_allocation_method: "{{ vm.ip_allocation | default('Disabled', true) }}"
  57. resource_group: "{{ vm.resource_group }}"
  58. restarted: "{{ vm.restarted | default(false, true) }}"
  59. ssh_password_enabled: "{{ vm.ssh_password_enabled | default(false, true) }}"
  60. ssh_public_keys: "{{ vm.ssh_public_keys | default(omit, true) }}"
  61. started: "{{ vm.started | default(true) }}"
  62. storage_account_name: "{{ vm.storage_account_name | default(omit, true) }}"
  63. subnet_name: "{{ vm.subnet_name | default(omit, true) }}"
  64. virtual_network: "{{ vm.virtual_network | default(omit, true) }}"
  65. vm_size: "{{ vm.vm_size | default('Standard_M8-2ms', true) }}"
  66. zones: "{{ vm.zone | default(omit, true) }}"
  67. append_tags: false
  68. state: "present"
  69. tags: "{{ vm.tags | default(omit, true) }}"
  70. register: createvm
  71. no_log: true
  72. ...