- name: Prepare random number set_fact: rpfx: "{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" run_once: yes - name: Create virtual network azure_rm_virtualnetwork: resource_group: "{{ resource_group_secondary }}" name: "tn{{ rpfx }}" address_prefixes: "10.10.0.0/16" register: vn - name: Add subnet azure_rm_subnet: resource_group: "{{ resource_group_secondary }}" name: "tn{{ rpfx }}" address_prefix: "10.10.0.0/24" virtual_network: "tn{{ rpfx }}" - name: create public ip azure_rm_publicipaddress: name: "pip{{ rpfx }}" resource_group: '{{ resource_group }}' - name: create load balancer with multiple parameters azure_rm_loadbalancer: resource_group: '{{ resource_group }}' name: "lb{{ rpfx }}" frontend_ip_configurations: - name: frontendipconf0 public_ip_address: "pip{{ rpfx }}" backend_address_pools: - name: backendaddrpool0 - name: backendaddrpool1 probes: - name: prob0 port: 80 inbound_nat_pools: - name: inboundnatpool0 frontend_ip_configuration_name: frontendipconf0 protocol: Tcp frontend_port_range_start: 80 frontend_port_range_end: 81 backend_port: 8080 load_balancing_rules: - name: lbrbalancingrule0 frontend_ip_configuration: frontendipconf0 backend_address_pool: backendaddrpool0 frontend_port: 80 backend_port: 80 probe: prob0 register: lb - name: create public ip azure_rm_publicipaddress: name: "pip{{ rpfx }}" resource_group: '{{ resource_group }}' - name: Create NIC (check mode) azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}" virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" public_ip_name: "tn{{ rpfx }}" public_ip_allocation_method: Static security_group: "tn{{ rpfx }}" register: output check_mode: yes - assert: that: - output.changed - name: Create NIC using virtual_network resource_group parameter azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}rg" virtual_network: name: "tn{{ rpfx }}" resource_group: "{{ resource_group_secondary }}" subnet: "tn{{ rpfx }}" public_ip_name: "tn{{ rpfx }}rg" public_ip_allocation_method: Static security_group: "tn{{ rpfx }}" register: output - name: Create NIC using virtual_network resource_group parameter (idempotent) azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}rg" virtual_network: name: "tn{{ rpfx }}" resource_group: "{{ resource_group_secondary }}" subnet: "tn{{ rpfx }}" public_ip_name: "tn{{ rpfx }}rg" public_ip_allocation_method: Static security_group: "tn{{ rpfx }}" register: output - assert: that: - not output.changed - name: Delete NIC azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}rg" state: absent - name: Create NIC azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}" virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" public_ip_name: "tn{{ rpfx }}" public_ip_allocation_method: Static security_group: name: "tn{{ rpfx }}2" resource_group: "{{ resource_group_secondary }}" register: output - assert: that: - output.changed - output.state.ip_configuration.subnet.name == 'tn{{ rpfx }}' - name: Update the NIC with mutilple ip configurations (check mode) azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}" security_group: name: "tn{{ rpfx }}2" resource_group: "{{ resource_group_secondary }}" virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" ip_configurations: - name: ipconfig-add public_ip_name: "tn{{ rpfx }}2" - name: default public_ip_name: "tn{{ rpfx }}" primary: True public_ip_allocation_method: Static - name: ipconfig1 public_ip_name: testnic003 register: output check_mode: yes - assert: that: - output.changed - name: Update the NIC with mutilple ip configurations azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}" security_group: name: "tn{{ rpfx }}2" resource_group: "{{ resource_group_secondary }}" virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" ip_configurations: - name: ipconfig-add public_ip_name: "tn{{ rpfx }}2" - name: default public_ip_name: "tn{{ rpfx }}" primary: True public_ip_allocation_method: Static - name: ipconfig1 public_ip_name: testnic003 load_balancer_backend_address_pools: - "{{ lb.state.backend_address_pools[0].id }}" - name: backendaddrpool1 load_balancer: "lb{{ rpfx }}" register: output - assert: that: - output.changed - not output.state.ip_configuration - output.state.ip_configurations | length == 3 - output.state.network_security_group.name == 'tn{{ rpfx }}2' - name: Update the NIC with mutilple ip configurations (idempotent) azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}" security_group: "{{ output.state.network_security_group.id }}" virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" ip_configurations: - name: ipconfig-add public_ip_name: "tn{{ rpfx }}2" - name: default public_ip_name: "tn{{ rpfx }}" primary: True public_ip_allocation_method: Static - name: ipconfig1 public_ip_name: testnic003 load_balancer_backend_address_pools: - "{{ lb.state.backend_address_pools[0].id }}" - name: backendaddrpool1 load_balancer: "lb{{ rpfx }}" register: output - assert: that: - not output.changed - name: Remove one ip configuration azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}" security_group: name: "tn{{ rpfx }}2" resource_group: "{{ resource_group_secondary }}" virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" ip_configurations: - name: ipconfig1 public_ip_name: testnic003 load_balancer_backend_address_pools: - "{{ lb.state.backend_address_pools[0].id }}" - name: backendaddrpool1 load_balancer: "lb{{ rpfx }}" - name: default public_ip_name: "tn{{ rpfx }}" public_ip_allocation_method: Static primary: True register: output - assert: that: - not output.state.ip_configuration - output.state.ip_configurations | length == 2 - name: IP configuration without public IP and NSG azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}noip" create_with_security_group: False virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" ip_configurations: - name: ipconfig1 primary: True register: output - assert: that: - output.state.ip_configurations[0].public_ip_address == None - output.state.network_security_group == None - name: NIC with Accelerated networking enabled azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}an" virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" enable_accelerated_networking: True register: output - assert: that: - output.state.enable_accelerated_networking - output.changed - name: NIC with Accelerated networking enabled (check idempotent) azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}an" virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" enable_accelerated_networking: True register: output - assert: that: - output.state.enable_accelerated_networking - not output.changed - name: Disable (previously enabled) Accelerated networking azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}an" virtual_network: "{{ vn.state.id }}" subnet: "tn{{ rpfx }}" enable_accelerated_networking: False register: output - assert: that: - not output.state.enable_accelerated_networking - name: Delete AN NIC azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}an" state: absent - name: Delete the NIC (check mode) azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}" state: absent check_mode: yes register: output - assert: that: - output.changed - name: Delete the NIC azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "{{ item }}" state: absent with_items: - "tn{{ rpfx }}" - "tn{{ rpfx }}noip" register: output - assert: that: - output.changed - name: Delete the NIC (idempotent) azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "tn{{ rpfx }}" state: absent register: output - assert: that: - not output.changed - name: delete load balancer azure_rm_loadbalancer: resource_group: '{{ resource_group }}' name: "lb{{ rpfx }}" frontend_ip_configurations: - name: frontendipconf0 public_ip_address: "pip{{ rpfx }}" backend_address_pools: - name: backendaddrpool0 - name: backendaddrpool1 probes: - name: prob0 port: 80 inbound_nat_pools: - name: inboundnatpool0 frontend_ip_configuration_name: frontendipconf0 protocol: Tcp frontend_port_range_start: 80 frontend_port_range_end: 81 backend_port: 8080 load_balancing_rules: - name: lbrbalancingrule0 frontend_ip_configuration: frontendipconf0 backend_address_pool: backendaddrpool0 frontend_port: 80 backend_port: 80 probe: prob0 state: absent - name: delete public ip azure_rm_publicipaddress: name: "pip{{ rpfx }}" resource_group: '{{ resource_group }}' state: absent