summaryrefslogtreecommitdiff
path: root/test/integration/targets/azure_rm_image/tasks/main.yml
blob: 98d2e551d6d2abb432f4220f127977fec7756594 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
- name: Create storage account name
  set_fact:
      vm_name: "vm{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}x"
      storage_name: "st{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}"
      storage_container_name: "sc{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}"
      public_ip_name: "pip{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}"
      security_group_name: "sg{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}"
      blob_name: "blob{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}"

- name: Create storage account
  azure_rm_storageaccount:
      resource_group: "{{ resource_group }}"
      name: "{{ storage_name }}"
      account_type: Standard_LRS

- name: Create virtual network
  azure_rm_virtualnetwork:
      resource_group: "{{ resource_group }}"
      name: "{{ vm_name }}"
      address_prefixes: "10.10.0.0/16"

- name: Add subnet
  azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vm_name }}"
      address_prefix: "10.10.0.0/24"
      virtual_network: "{{ vm_name }}"

- name: Create public ip
  azure_rm_publicipaddress:
      resource_group: "{{ resource_group }}"
      allocation_method: Static
      name: "{{ public_ip_name }}"

- name: Create security group
  azure_rm_securitygroup:
      resource_group: "{{ resource_group }}"
      name: "{{ security_group_name }}"

- name: Create NIC
  azure_rm_networkinterface:
      resource_group: "{{ resource_group }}"
      name: "{{ vm_name }}"
      virtual_network: "{{ vm_name }}"
      subnet: "{{ vm_name }}"
      public_ip_name: "{{ public_ip_name }}"
      security_group: "{{ security_group_name }}"

- name: Create virtual machine
  azure_rm_virtualmachine:
      resource_group: "{{ resource_group }}"
      name: "{{ vm_name }}"
      vm_size: Standard_A0
      storage_account: "{{ storage_name }}"
      storage_container: "{{ storage_container_name }}"
      storage_blob: "{{ blob_name }}.vhd"
      admin_username: adminuser
      admin_password: Password123!
      os_type: Linux
      network_interfaces: "{{ vm_name }}"
      image:
        offer: UbuntuServer
        publisher: Canonical
        sku: 16.04-LTS
        version: latest

- name: Deallocate the virtual machine
  azure_rm_virtualmachine:
      resource_group: "{{ resource_group }}"
      name: "{{ vm_name }}"
      allocated: no 
      vm_size: Standard_A0
  register: output

- name: Start the virtual machine
  azure_rm_virtualmachine:
      resource_group: "{{ resource_group }}"
      name: "{{ vm_name }}"
      vm_size: Standard_A0

- name: Create an image from VM (check mode)
  azure_rm_image:
      resource_group: "{{ resource_group }}"
      source: "https://{{ storage_name }}.blob.core.windows.net/{{ storage_container_name }}/{{ blob_name }}.vhd"
      name: testimage001
      os_type: Linux
  check_mode: yes
  register: output

- assert:
      that: output.changed

- name: Create an image from VM
  azure_rm_image:
      resource_group: "{{ resource_group }}"
      source: "https://{{ storage_name }}.blob.core.windows.net/{{ storage_container_name }}/{{ blob_name }}.vhd"
      name: testimage001
      os_type: Linux
  register: output

- assert:
      that:
          - output.changed
          - output.id

- name: Create an image from VM (idempotent)
  azure_rm_image:
      resource_group: "{{ resource_group }}"
      source: "https://{{ storage_name }}.blob.core.windows.net/{{ storage_container_name }}/{{ blob_name }}.vhd"
      name: testimage001
      os_type: Linux
  register: output

- assert:
      that:
          - not output.changed
          - output.id

- name: Gather information about image created
  azure_rm_image_facts:
    resource_group: "{{ resource_group }}"
    name: testimage001
  register: output

- assert:
      that:
          - output.images != []

- name: Delete image (check mode)
  azure_rm_image:
      resource_group: "{{ resource_group }}"
      name: testimage001
      state: absent
  register: output
  check_mode: yes

- assert:
    that:
      - output.changed

- name: Delete image
  azure_rm_image:
      resource_group: "{{ resource_group }}"
      name: testimage001
      state: absent
  register: output

- assert:
    that:
      - output.changed

- name: Delete image (idempotent)
  azure_rm_image:
      resource_group: "{{ resource_group }}"
      name: testimage001
      state: absent
  register: output

- assert:
    that:
      - not output.changed

- name: Delete VM
  azure_rm_virtualmachine:
      resource_group: "{{ resource_group }}"
      name: "{{ vm_name }}"
      state: absent
      vm_size: Standard_A0
  register: output

- name: Delete public ip
  azure_rm_publicipaddress:
      resource_group: "{{ resource_group }}"
      allocation_method: Static
      name: "{{ public_ip_name }}"
      state: absent