2018-05-17 05:28:30 +02:00
- name : Prepare random number
set_fact :
rpfx : "{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}"
run_once : yes
2017-08-29 23:14:15 +02:00
- name : Create virtual network
azure_rm_virtualnetwork :
resource_group : "{{ resource_group }}"
name : testVnet
address_prefixes : "10.0.0.0/16"
- name : Add subnet
azure_rm_subnet :
resource_group : "{{ resource_group }}"
name : testSubnet
address_prefix : "10.0.1.0/24"
virtual_network : testVnet
- name : Create public IP address
azure_rm_publicipaddress :
resource_group : "{{ resource_group }}"
2017-12-21 06:13:09 +01:00
allocation_method : Static
2017-08-29 23:14:15 +02:00
name : testPublicIP
2017-12-21 06:13:09 +01:00
- name : Create load balancer
azure_rm_loadbalancer :
resource_group : "{{ resource_group }}"
name : testLB
public_ip_address_name : testPublicIP
2019-01-11 09:33:13 +01:00
- name : Create public IP address 1
azure_rm_publicipaddress :
resource_group : "{{ resource_group }}"
allocation_method : Static
name : testPublicIP1
- name : Create load balancer 1
azure_rm_loadbalancer :
resource_group : "{{ resource_group }}"
name : testLB1
public_ip_address_name : testPublicIP1
2018-08-16 23:52:12 +02:00
- name : Create network security group within same resource group of VMSS.
azure_rm_securitygroup :
resource_group : "{{ resource_group }}"
name : testNetworkSecurityGroup
- name : Create network security group in different resource group of VMSS.
azure_rm_securitygroup :
resource_group : "{{ resource_group_secondary }}"
name : testNetworkSecurityGroup2
2018-12-12 04:01:21 +01:00
- name : Create virtual network inteface cards for VM A and B
azure_rm_networkinterface :
resource_group : "{{ resource_group }}"
name : "vmforimage{{ rpfx }}nic"
virtual_network : testVnet
subnet : testSubnet
- name : Create VM
azure_rm_virtualmachine :
resource_group : "{{ resource_group }}"
name : "vmforimage{{ rpfx }}"
admin_username : testuser
admin_password : "Password1234!"
vm_size : Standard_B1ms
network_interfaces : "vmforimage{{ rpfx }}nic"
image :
offer : UbuntuServer
publisher : Canonical
sku : 16.04 -LTS
version : latest
- name : Generalize VM
azure_rm_virtualmachine :
resource_group : "{{ resource_group }}"
name : "vmforimage{{ rpfx }}"
generalized : yes
- name : Create image A
azure_rm_image :
resource_group : "{{ resource_group }}"
name : testimagea
source : "vmforimage{{ rpfx }}"
- name : Create image B
azure_rm_image :
resource_group : "{{ resource_group }}"
name : testimageb
source : "vmforimage{{ rpfx }}"
- name : Delete VM
azure_rm_virtualmachine :
resource_group : "{{ resource_group }}"
name : "vmforimage{{ rpfx }}"
state : absent
2018-09-03 03:52:22 +02:00
- name : Create VMSS (check mode)
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-09-03 03:52:22 +02:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}
2018-12-20 03:48:21 +01:00
vm_size : Standard_B1s
2018-09-03 03:52:22 +02:00
admin_username : testuser
ssh_password_enabled : true
admin_password : "Password1234!"
2018-12-20 03:48:21 +01:00
capacity : 1
2018-09-03 03:52:22 +02:00
virtual_network_name : testVnet
subnet_name : testSubnet
load_balancer : testLB
upgrade_policy : Manual
tier : Standard
managed_disk_type : Standard_LRS
os_disk_caching : ReadWrite
image :
offer : CoreOS
publisher : CoreOS
sku : Stable
version : latest
data_disks :
- lun : 0
disk_size_gb : 64
caching : ReadWrite
managed_disk_type : Standard_LRS
register : results
check_mode : yes
- name : Assert that VMSS can be created
assert :
that : results.changed
- name : Get VMSS to assert no VMSS is created in check mode
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset_facts :
2018-09-03 03:52:22 +02:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}
format : curated
register : output_scaleset
- name : Assert no VMSS created in check mode
assert :
that :
- output_scaleset.ansible_facts.azure_vmss | length == 0
2017-08-29 23:14:15 +02:00
- name : Create VMSS
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2017-08-29 23:14:15 +02:00
resource_group : "{{ resource_group }}"
2018-05-17 05:28:30 +02:00
name : testVMSS{{ rpfx }}
2018-12-20 03:48:21 +01:00
vm_size : Standard_B1s
2017-08-29 23:14:15 +02:00
admin_username : testuser
ssh_password_enabled : true
admin_password : "Password1234!"
2018-12-20 03:48:21 +01:00
capacity : 1
2017-08-29 23:14:15 +02:00
virtual_network_name : testVnet
subnet_name : testSubnet
upgrade_policy : Manual
2019-01-11 09:33:13 +01:00
load_balancer : testLB
2017-08-29 23:14:15 +02:00
tier : Standard
managed_disk_type : Standard_LRS
os_disk_caching : ReadWrite
2019-01-30 05:09:29 +01:00
custom_data : "#cloud-config"
2017-08-29 23:14:15 +02:00
image :
offer : CoreOS
publisher : CoreOS
sku : Stable
version : latest
data_disks :
- lun : 0
disk_size_gb : 64
caching : ReadWrite
managed_disk_type : Standard_LRS
2020-01-16 02:24:39 +01:00
scale_in_policy : "NewestVM"
2017-08-29 23:14:15 +02:00
register : results
2018-08-14 07:24:34 +02:00
- name : Assert that VMSS was created
assert :
that : results.changed
2019-01-11 09:33:13 +01:00
- name : Create VMSS -- test upgrade_policy idempotence and load balancer
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-08-14 07:24:34 +02:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}
2018-12-20 03:48:21 +01:00
vm_size : Standard_B1s
2018-08-14 07:24:34 +02:00
admin_username : testuser
ssh_password_enabled : true
admin_password : "Password1234!"
2018-12-20 03:48:21 +01:00
capacity : 1
2018-08-14 07:24:34 +02:00
virtual_network_name : testVnet
subnet_name : testSubnet
upgrade_policy : Automatic
2019-01-11 09:33:13 +01:00
load_balancer : testLB1
2018-08-14 07:24:34 +02:00
tier : Standard
managed_disk_type : Standard_LRS
os_disk_caching : ReadWrite
2019-01-30 05:09:29 +01:00
custom_data : "#cloud-config"
2018-08-14 07:24:34 +02:00
image :
offer : CoreOS
publisher : CoreOS
sku : Stable
version : latest
data_disks :
- lun : 0
disk_size_gb : 64
caching : ReadWrite
managed_disk_type : Standard_LRS
register : results
2018-05-17 05:28:30 +02:00
- name : Assert that VMSS was created
2017-08-29 23:14:15 +02:00
assert :
that : results.changed
2018-05-17 05:28:30 +02:00
- name : Retrieve scaleset facts
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset_facts :
2018-05-17 05:28:30 +02:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}
format : curated
register : output_scaleset
2019-01-11 09:33:13 +01:00
- assert :
that :
- output_scaleset.vmss[0].load_balancer == "testLB1"
2019-01-07 08:15:30 +01:00
- name : Retrieve scaleset VMs facts
2019-04-03 17:03:47 +02:00
azure_rm_virtualmachinescalesetinstance_facts :
2019-01-07 08:15:30 +01:00
resource_group : "{{ resource_group }}"
vmss_name : testVMSS{{ rpfx }}
register : instances
- name : Assert that facts returned correctly
assert :
that :
- instances.instances | length == 1
- instances.instances[0].id != None
- instances.instances[0].name != None
- instances.instances[0].instance_id != None
- instances.instances[0].provisioning_state != None
- instances.instances[0].vm_id != None
- instances.instances[0].latest_model != None
- instances.instances[0].power_state != None
2018-05-17 05:28:30 +02:00
- name : Get scaleset body
set_fact :
2018-08-16 08:45:36 +02:00
body : "{{ output_scaleset.vmss[0] }}"
2018-05-17 05:28:30 +02:00
- name : Try to update VMSS using output as input
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-05-17 05:28:30 +02:00
resource_group : "{{ body.resource_group }}"
name : "{{ body.name }}"
vm_size : "{{ body.vm_size }}"
admin_username : "{{ body.admin_username }}"
ssh_password_enabled : "{{ body.ssh_password_enabled }}"
admin_password : "Password1234!"
capacity : "{{ body.capacity }}"
virtual_network_name : "{{ body.virtual_network_name }}"
subnet_name : "{{ body.subnet_name }}"
upgrade_policy : "{{ body.upgrade_policy }}"
2019-01-11 09:33:13 +01:00
load_balancer : "{{ body.load_balancer }}"
2018-05-17 05:28:30 +02:00
tier : "{{ body.tier }}"
managed_disk_type : "{{ body.managed_disk_type }}"
os_disk_caching : "{{ body.os_disk_caching }}"
image : "{{ body.image }}"
data_disks : "{{ body.data_disks }}"
2018-12-14 09:48:40 +01:00
overprovision : "{{ body.overprovision }}"
2018-05-17 05:28:30 +02:00
register : results
2018-12-12 04:01:21 +01:00
- name : Assert that nothing was changed
2018-05-17 05:28:30 +02:00
assert :
that : not results.changed
2019-01-24 00:51:10 +01:00
- name : Install VMSS Extension
azure_rm_virtualmachinescalesetextension :
resource_group : "{{ resource_group }}"
vmss_name : testVMSS{{ rpfx }}
name : testExtension
publisher : Microsoft.Azure.Extensions
type : CustomScript
type_handler_version : 2.0
auto_upgrade_minor_version : true
settings : {"commandToExecute": "sudo apt-get -y install apache2" }
register : results
- name : Assert that something was changed
assert :
that : results.changed
- name : Install Again VMSS Extension - again
azure_rm_virtualmachinescalesetextension :
resource_group : "{{ resource_group }}"
vmss_name : testVMSS{{ rpfx }}
name : testExtension
publisher : Microsoft.Azure.Extensions
type : CustomScript
type_handler_version : 2.0
auto_upgrade_minor_version : true
settings : {"commandToExecute": "sudo apt-get -y install apache2" }
register : results
- name : Assert that nothing was changed
assert :
that : not results.changed
2019-01-25 03:04:44 +01:00
- name : Query extension
2019-04-03 17:03:47 +02:00
azure_rm_virtualmachinescalesetextension_facts :
2019-01-25 03:04:44 +01:00
resource_group : "{{ resource_group }}"
vmss_name : testVMSS{{ rpfx }}
name : testExtension
register : results
- name : Assert that facts are returned
assert :
that :
- results.changed == False
- results.extensions[0]['id'] != None
- results.extensions[0]['resource_group'] != None
- results.extensions[0]['vmss_name'] != None
- results.extensions[0]['name'] != None
- results.extensions[0]['publisher'] != None
- results.extensions[0]['type'] != None
- results.extensions[0]['settings'] != None
- results.extensions[0]['auto_upgrade_minor_version'] != None
- results.extensions[0]['provisioning_state'] != None
- name : List extensions
2019-04-03 17:03:47 +02:00
azure_rm_virtualmachinescalesetextension_facts :
2019-01-25 03:04:44 +01:00
resource_group : "{{ resource_group }}"
vmss_name : testVMSS{{ rpfx }}
register : results
- name : Assert that facts are returned
assert :
that :
- results.changed == False
- results.extensions[0]['id'] != None
- results.extensions[0]['resource_group'] != None
- results.extensions[0]['vmss_name'] != None
- results.extensions[0]['name'] != None
- results.extensions[0]['publisher'] != None
- results.extensions[0]['type'] != None
- results.extensions[0]['settings'] != None
- results.extensions[0]['auto_upgrade_minor_version'] != None
- results.extensions[0]['provisioning_state'] != None
2019-01-24 00:51:10 +01:00
- name : Delete VMSS Extension
azure_rm_virtualmachinescalesetextension :
resource_group : "{{ resource_group }}"
vmss_name : testVMSS{{ rpfx }}
name : testExtension
state : absent
register : results
- name : Assert that change was reported
assert :
that : results.changed
2019-02-20 22:50:46 +01:00
- name : Upgrade instance to the latest image
azure_rm_virtualmachinescalesetinstance :
resource_group : "{{ resource_group }}"
vmss_name : testVMSS{{ rpfx }}
instance_id : "{{ instances.instances[0].instance_id }}"
latest_model : yes
register : results
- name : Assert that something has changed
assert :
that : results.changed
- name : Stop virtual machine
azure_rm_virtualmachinescalesetinstance :
resource_group : "{{ resource_group }}"
vmss_name : testVMSS{{ rpfx }}
instance_id : "{{ instances.instances[0].instance_id }}"
power_state : stopped
register : results
- name : Assert that something has changed
assert :
that : results.changed
- name : Delete instance
azure_rm_virtualmachinescalesetinstance :
resource_group : "{{ resource_group }}"
vmss_name : testVMSS{{ rpfx }}
instance_id : "{{ instances.instances[0].instance_id }}"
state : absent
register : results
- name : Assert that something has changed
assert :
that : results.changed
2017-12-21 06:13:09 +01:00
- name : Delete VMSS
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2017-12-21 06:13:09 +01:00
resource_group : "{{ resource_group }}"
2018-12-12 04:01:21 +01:00
name : testVMSS{{ rpfx }}
2017-12-21 06:13:09 +01:00
state : absent
2018-08-16 23:52:12 +02:00
- name : Create VMSS with security group in same resource group, with accelerated networking(check mode).
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-08-16 23:52:12 +02:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}2
vm_size : Standard_D3_v2
2019-01-30 05:09:29 +01:00
capacity : 0
2017-12-21 06:13:09 +01:00
virtual_network_name : testVnet
subnet_name : testSubnet
2018-08-16 23:52:12 +02:00
admin_username : testuser
ssh_password_enabled : true
admin_password : "Password1234!"
image :
2018-12-12 04:01:21 +01:00
name : testimagea
resource_group : "{{ resource_group }}"
2017-12-21 06:13:09 +01:00
upgrade_policy : Manual
2018-08-16 23:52:12 +02:00
security_group : testNetworkSecurityGroup
enable_accelerated_networking : yes
register : results
check_mode : yes
- name : Assert that VMSS can be created
assert :
that : results.changed
- name : Create VMSS with security group in same resource group, with accelerated networking.
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-08-16 23:52:12 +02:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}2
vm_size : Standard_D3_v2
2019-01-30 05:09:29 +01:00
capacity : 0
2018-08-16 23:52:12 +02:00
virtual_network_name : testVnet
subnet_name : testSubnet
admin_username : testuser
ssh_password_enabled : true
admin_password : "Password1234!"
2017-12-21 06:13:09 +01:00
image :
2018-12-12 04:01:21 +01:00
name : testimagea
resource_group : "{{ resource_group }}"
2018-08-16 23:52:12 +02:00
upgrade_policy : Manual
security_group : testNetworkSecurityGroup
enable_accelerated_networking : yes
register : results
- name : Assert that VMSS ran
assert :
that :
- 'results.changed'
- 'results.ansible_facts.azure_vmss.properties.virtualMachineProfile.networkProfile.networkInterfaceConfigurations.0.properties.enableAcceleratedNetworking == true'
- 'results.ansible_facts.azure_vmss.properties.virtualMachineProfile.networkProfile.networkInterfaceConfigurations.0.properties.networkSecurityGroup != {}'
2018-12-12 04:01:21 +01:00
- name : Create VMSS with security group in same resource group, with accelerated networking.
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-12-12 04:01:21 +01:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}2
vm_size : Standard_D3_v2
2019-01-30 05:09:29 +01:00
capacity : 0
2018-12-12 04:01:21 +01:00
virtual_network_name : testVnet
subnet_name : testSubnet
admin_username : testuser
ssh_password_enabled : true
admin_password : "Password1234!"
image :
name : testimagea
resource_group : "{{ resource_group }}"
upgrade_policy : Manual
security_group : testNetworkSecurityGroup
enable_accelerated_networking : yes
register : results
- name : Assert that nothing has changed
assert :
that :
- not results.changed
- name : Create VMSS with security group in same resource group, with accelerated networking.
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-12-12 04:01:21 +01:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}2
vm_size : Standard_D3_v2
2019-01-30 05:09:29 +01:00
capacity : 0
2018-12-12 04:01:21 +01:00
virtual_network_name : testVnet
subnet_name : testSubnet
admin_username : testuser
ssh_password_enabled : true
admin_password : "Password1234!"
image :
name : testimageb
resource_group : "{{ resource_group }}"
upgrade_policy : Manual
security_group : testNetworkSecurityGroup
enable_accelerated_networking : yes
register : results
- name : Assert that something has changed
assert :
that :
- results.changed
2018-09-03 03:52:22 +02:00
- name : update VMSS with security group in different resource group.
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-08-16 23:52:12 +02:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}2
2018-12-20 03:48:21 +01:00
vm_size : Standard_B1s
2019-01-30 05:09:29 +01:00
capacity : 0
2018-08-16 23:52:12 +02:00
virtual_network_name : testVnet
subnet_name : testSubnet
admin_username : testuser
ssh_password_enabled : true
admin_password : "Password1234!"
image :
2018-12-12 04:01:21 +01:00
name : testimageb
resource_group : "{{ resource_group }}"
2018-08-16 23:52:12 +02:00
upgrade_policy : Manual
security_group :
name : testNetworkSecurityGroup2
resource_group : "{{ resource_group_secondary }}"
register : results
2018-12-12 04:01:21 +01:00
# disable for now
#- name: Assert that security group is correct
# assert:
# that:
# - 'results.changed'
# - '"testNetworkSecurityGroup2" in results.ansible_facts.azure_vmss.properties.virtualMachineProfile.networkProfile.networkInterfaceConfigurations.0.properties.networkSecurityGroup.id'
2018-08-16 23:52:12 +02:00
- name : Delete VMSS
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-08-16 23:52:12 +02:00
resource_group : "{{ resource_group }}"
2018-09-03 03:52:22 +02:00
name : testVMSS{{ rpfx }}2
2018-08-16 23:52:12 +02:00
state : absent
- name : Fail when instance type is not supported to enable accelerated networking
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2018-08-16 23:52:12 +02:00
resource_group : "{{ resource_group }}"
name : testVMSS{{ rpfx }}4
2018-12-20 03:48:21 +01:00
vm_size : Standard_B1s
2018-08-16 23:52:12 +02:00
virtual_network_name : testVnet
subnet_name : testSubnet
admin_username : testuser
ssh_password_enabled : true
admin_password : "Password1234!"
image :
offer : CoreOS
publisher : CoreOS
sku : Stable
version : latest
upgrade_policy : Manual
enable_accelerated_networking : yes
register : results
ignore_errors : yes
- name : Assert failure to show that accelerated networking is enabled only with supported instance types.
assert :
that :
- '"VMSizeIsNotPermittedToEnableAcceleratedNetworkingForVmss" in results.msg'
- name : Delete network security group
azure_rm_securitygroup :
resource_group : "{{ resource_group }}"
name : testNetworkSecurityGroup
state : absent
- name : Delete network security group
azure_rm_securitygroup :
resource_group : "{{ resource_group_secondary }}"
name : testNetworkSecurityGroup2
state : absent
2017-12-21 06:13:09 +01:00
- name : Delete load balancer
azure_rm_loadbalancer :
resource_group : "{{ resource_group }}"
name : testLB
state : absent
2017-08-29 23:14:15 +02:00
- name : Delete public IP address
azure_rm_publicipaddress :
resource_group : "{{ resource_group }}"
state : absent
name : testPublicIP
- name : Delete virtual network
azure_rm_virtualnetwork :
resource_group : "{{ resource_group }}"
name : testVnet
state : absent
address_prefixes : "10.0.0.0/16"
2017-12-20 22:17:57 +01:00
# TODO: Until we have a module to create/delete images this is the best tests
# I can do
- name : assert error thrown with invalid image dict
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2017-12-20 22:17:57 +01:00
resource_group : "{{ resource_group }}"
name : testvm002
2018-12-20 03:48:21 +01:00
vm_size : Standard_B1s
2017-12-20 22:17:57 +01:00
image :
offer : UbuntuServer
register : fail_invalid_image_dict
2019-07-06 00:14:14 +02:00
failed_when : 'fail_invalid_image_dict.msg != "parameter error: expecting image to contain [publisher, offer, sku, version], [name, resource_group] or [id]"'
2017-12-20 22:17:57 +01:00
- name : assert error thrown with invalid image type
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2017-12-20 22:17:57 +01:00
resource_group : "{{ resource_group }}"
name : testvm002
2018-12-20 03:48:21 +01:00
vm_size : Standard_B1s
2017-12-20 22:17:57 +01:00
image :
- testing
register : fail_invalid_image_type
failed_when : 'fail_invalid_image_type.msg != "parameter error: expecting image to be a string or dict not list"'
- name : assert error finding missing custom image
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2017-12-20 22:17:57 +01:00
resource_group : "{{ resource_group }}"
name : testvm002
2018-12-20 03:48:21 +01:00
vm_size : Standard_B1s
2017-12-20 22:17:57 +01:00
image : invalid-image
register : fail_missing_custom_image
failed_when : fail_missing_custom_image.msg != "Error could not find image with name invalid-image"
- name : assert error finding missing custom image (dict style)
2019-04-01 07:05:45 +02:00
azure_rm_virtualmachinescaleset :
2017-12-20 22:17:57 +01:00
resource_group : "{{ resource_group }}"
name : testvm002
2018-12-20 03:48:21 +01:00
vm_size : Standard_B1s
2017-12-20 22:17:57 +01:00
image :
name : invalid-image
register : fail_missing_custom_image_dict
2018-08-16 23:52:12 +02:00
failed_when : fail_missing_custom_image_dict.msg != "Error could not find image with name invalid-image"