mirror of
https://opendev.org/openstack/ansible-collections-openstack.git
synced 2026-05-07 05:43:15 +00:00
Merge "Add ability to allocate floating IP"
This commit is contained in:
@@ -27,6 +27,12 @@
|
||||
name: ansible_external
|
||||
external: true
|
||||
|
||||
- name: Gather information about external network
|
||||
openstack.cloud.networks_info:
|
||||
cloud: "{{ cloud }}"
|
||||
name: ansible_external
|
||||
register: external_network
|
||||
|
||||
- name: Create external subnet
|
||||
openstack.cloud.subnet:
|
||||
cloud: "{{ cloud }}"
|
||||
@@ -98,6 +104,17 @@
|
||||
- ip_address: 10.7.7.102
|
||||
register: port3
|
||||
|
||||
- name: Create internal port 4
|
||||
openstack.cloud.port:
|
||||
cloud: "{{ cloud }}"
|
||||
state: present
|
||||
name: ansible_internal_port4
|
||||
network: ansible_internal
|
||||
fixed_ips:
|
||||
- ip_address: 10.7.7.103
|
||||
- ip_address: 10.7.7.104
|
||||
register: port4
|
||||
|
||||
- name: Create router 1
|
||||
openstack.cloud.router:
|
||||
cloud: "{{ cloud }}"
|
||||
@@ -136,10 +153,31 @@
|
||||
selectattr('floating_network_id', '==', public_network.networks.0.id)|
|
||||
list|length > 0 }}"
|
||||
|
||||
# TODO: Replace with appropriate Ansible module once available
|
||||
- name: Create a floating ip on public network (required for simplest, first floating ip test)
|
||||
command: openstack --os-cloud={{ cloud }} floating ip create public
|
||||
when: not public_network_had_fips
|
||||
block:
|
||||
- name: Create a floating ip on public network
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: present
|
||||
network: public
|
||||
register: public_fip_result
|
||||
|
||||
- name: Verify floating ip got created
|
||||
assert:
|
||||
that:
|
||||
- public_fip_result.floating_ip.floating_network_id == public_network.networks.0.id
|
||||
|
||||
- name: Create a floating ip on public network again
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: present
|
||||
network: public
|
||||
register: public_fip_result
|
||||
|
||||
- name: Verify idempotency
|
||||
assert:
|
||||
that: public_fip_result is not changed
|
||||
|
||||
# TODO: Replace with appropriate Ansible module once available
|
||||
- name: Create floating ip 1 on external network
|
||||
@@ -151,6 +189,90 @@
|
||||
when: fips.floating_ips|length == 0 or
|
||||
"10.6.6.150" not in fips.floating_ips|map(attribute="floating_ip_address")|list
|
||||
|
||||
- name: Create floating ip 2 on external network
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: present
|
||||
network: ansible_external
|
||||
floating_ip_address: 10.6.6.151
|
||||
register: external_fip2_result
|
||||
|
||||
- name: Verify floating ip got created
|
||||
assert:
|
||||
that:
|
||||
- external_fip2_result.floating_ip.floating_network_id == external_network.networks.0.id
|
||||
|
||||
- name: Update floating ip 2 on external network
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: present
|
||||
network: ansible_external
|
||||
floating_ip_address: 10.6.6.151
|
||||
nat_destination: ansible_internal
|
||||
fixed_address: 10.7.7.104
|
||||
register: external_fip2_result
|
||||
|
||||
- name: Verify floating ip got updated
|
||||
assert:
|
||||
that:
|
||||
- external_fip2_result is changed
|
||||
- external_fip2_result.floating_ip.floating_ip_address == "10.6.6.151"
|
||||
- external_fip2_result.floating_ip.port_id == port4.port.id
|
||||
- external_fip2_result.floating_ip.fixed_ip_address == "10.7.7.104"
|
||||
|
||||
- name: Update floating ip 2 on external network again
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: present
|
||||
network: ansible_external
|
||||
floating_ip_address: 10.6.6.151
|
||||
nat_destination: ansible_internal
|
||||
fixed_address: 10.7.7.104
|
||||
register: external_fip2_result
|
||||
|
||||
- name: Verify idempotency
|
||||
assert:
|
||||
that:
|
||||
- external_fip2_result is not changed
|
||||
|
||||
- name: Detatch floating ip 2 on external network from port
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: absent
|
||||
network: ansible_external
|
||||
floating_ip_address: 10.6.6.151
|
||||
|
||||
- name: Get floating ip 2 info
|
||||
openstack.cloud.floating_ip_info:
|
||||
cloud: "{{ cloud }}"
|
||||
floating_ip_address: 10.6.6.151
|
||||
register: external_fip2_result
|
||||
|
||||
- name: Verify floating ip got detached
|
||||
assert:
|
||||
that:
|
||||
- external_fip2_result.floating_ips.0.floating_ip_address == "10.6.6.151"
|
||||
- external_fip2_result.floating_ips.0.fixed_ip_address == none
|
||||
- external_fip2_result.floating_ips.0.port_id == none
|
||||
|
||||
- name: Detatch floating ip 2 on external network from port again
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: absent
|
||||
network: ansible_external
|
||||
floating_ip_address: 10.6.6.151
|
||||
|
||||
- name: Get floating ip 2 info
|
||||
openstack.cloud.floating_ip_info:
|
||||
cloud: "{{ cloud }}"
|
||||
floating_ip_address: 10.6.6.151
|
||||
register: external_fip2_result
|
||||
|
||||
- name: Verify idempotency
|
||||
assert:
|
||||
that:
|
||||
- external_fip2_result is not changed
|
||||
|
||||
- name: Create server 1 with one nic
|
||||
openstack.cloud.server:
|
||||
cloud: "{{ cloud }}"
|
||||
@@ -433,18 +555,41 @@
|
||||
cloud: "{{ cloud }}"
|
||||
register: fips
|
||||
|
||||
# TODO: Replace with appropriate Ansible module once available
|
||||
- name: Delete floating ip on public network if we created it
|
||||
when: not public_network_had_fips
|
||||
command: >
|
||||
openstack --os-cloud={{ cloud }} floating ip delete
|
||||
{{ fips.floating_ips|selectattr('floating_network_id', '==', public_network.networks.0.id)|
|
||||
map(attribute="floating_ip_address")|list|join(' ') }}
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: absent
|
||||
purge: true
|
||||
floating_ip_address: "{{ public_fip }}"
|
||||
network: public
|
||||
loop: >-
|
||||
{{
|
||||
fips.floating_ips |
|
||||
selectattr('floating_network_id', '==', public_network.networks.0.id) |
|
||||
map(attribute="floating_ip_address") |
|
||||
list
|
||||
}}
|
||||
loop_control:
|
||||
loop_var: public_fip
|
||||
|
||||
# TODO: Replace with appropriate Ansible module once available
|
||||
- name: Delete floating ip 1
|
||||
command: openstack --os-cloud={{ cloud }} floating ip delete 10.6.6.150
|
||||
when: fips.floating_ips|length > 0 and "10.6.6.150" in fips.floating_ips|map(attribute="floating_ip_address")|list
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: absent
|
||||
purge: true
|
||||
floating_ip_address: 10.6.6.150
|
||||
network: ansible_external
|
||||
|
||||
- name: Delete floating ip 2
|
||||
when: fips.floating_ips|length > 0 and "10.6.6.151" in fips.floating_ips|map(attribute="floating_ip_address")|list
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: absent
|
||||
purge: true
|
||||
floating_ip_address: 10.6.6.151
|
||||
network: ansible_external
|
||||
|
||||
- name: Get remaining floating ips on external network
|
||||
openstack.cloud.floating_ip_info:
|
||||
@@ -452,14 +597,24 @@
|
||||
floating_network: ansible_external
|
||||
register: fips
|
||||
|
||||
# TODO: Replace with appropriate Ansible module once available
|
||||
# The first, simple floating ip test might have allocated a floating ip on the external network.
|
||||
# This floating ip must be removed before external network can be deleted.
|
||||
- name: Delete remaining floating ips on external network
|
||||
when: fips.floating_ips|length > 0
|
||||
command: >
|
||||
openstack --os-cloud={{ cloud }} floating ip delete
|
||||
{{ fips.floating_ips|map(attribute="floating_ip_address")|list|join(' ') }}
|
||||
openstack.cloud.floating_ip:
|
||||
cloud: "{{ cloud }}"
|
||||
state: absent
|
||||
purge: true
|
||||
floating_ip_address: "{{ external_fip }}"
|
||||
network: ansible_external
|
||||
loop: >-
|
||||
{{
|
||||
fips.floating_ips |
|
||||
map(attribute="floating_ip_address") |
|
||||
list
|
||||
}}
|
||||
loop_control:
|
||||
loop_var: external_fip
|
||||
|
||||
# Remove routers after floating ips have been detached and disassociated else removal fails with
|
||||
# Error detaching interface from router ***: Client Error for url: ***,
|
||||
@@ -478,6 +633,12 @@
|
||||
state: absent
|
||||
name: ansible_router1
|
||||
|
||||
- name: Delete internal port 4
|
||||
openstack.cloud.port:
|
||||
cloud: "{{ cloud }}"
|
||||
state: absent
|
||||
name: ansible_internal_port4
|
||||
|
||||
- name: Delete internal port 3
|
||||
openstack.cloud.port:
|
||||
cloud: "{{ cloud }}"
|
||||
|
||||
Reference in New Issue
Block a user