Jakob Meng a4a6e6d4ec Added resource{,s} modules
Change-Id: I0b04d43d5095ee74ec5af27013b6159a6a4d0f13
2023-01-26 09:34:30 +01:00

862 lines
22 KiB
YAML

---
- module_defaults:
group/openstack.cloud.openstack:
cloud: "{{ cloud }}"
# Listing modules individually is required for
# backward compatibility with Ansible 2.9 only
openstack.cloud.resource:
cloud: "{{ cloud }}"
openstack.cloud.resources:
cloud: "{{ cloud }}"
openstack.cloud.router:
cloud: "{{ cloud }}"
block:
- name: Create external network
openstack.cloud.resource:
service: network
type: network
attributes:
name: ansible_network_external
is_router_external: true
wait: true
register: network_external
- name: Assert return values of resource module
assert:
that:
# allow new fields to be introduced but prevent fields from being removed
- expected_fields|difference(network_external.keys())|length == 0
- name: Assert external network
assert:
that:
- network_external is changed
- name: Create external network again
openstack.cloud.resource:
service: network
type: network
attributes:
name: ansible_network_external
is_router_external: true
wait: true
register: network_external
- name: Assert external network again
assert:
that:
- network_external is not changed
- name: Create external subnet
openstack.cloud.resource:
service: network
type: subnet
attributes:
cidr: 10.6.6.0/24
ip_version: 4
name: ansible_external_subnet
network_id: "{{ network_external.resource.id }}"
register: subnet_external
- name: Assert external subnet
assert:
that:
- subnet_external is changed
- name: Create external subnet again
openstack.cloud.resource:
service: network
type: subnet
attributes:
cidr: 10.6.6.0/24
ip_version: 4
name: ansible_external_subnet
network_id: "{{ network_external.resource.id }}"
register: subnet_external
- name: Assert external subnet again
assert:
that:
- subnet_external is not changed
- name: Create external port
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_external
network_id: "{{ network_external.resource.id }}"
fixed_ips:
- ip_address: 10.6.6.50
non_updateable_attributes:
- fixed_ips
register: port_external
- name: Assert external port
assert:
that:
- port_external is changed
- name: Create external port again
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_external
network_id: "{{ network_external.resource.id }}"
fixed_ips:
- ip_address: 10.6.6.50
non_updateable_attributes:
- fixed_ips
register: port_external
- name: Assert external port again
assert:
that:
- port_external is not changed
- name: Create internal network
openstack.cloud.resource:
service: network
type: network
attributes:
name: ansible_network_internal
is_router_external: false
wait: true
register: network_internal
- name: Assert internal network
assert:
that:
- network_internal is changed
- name: Create internal network again
openstack.cloud.resource:
service: network
type: network
attributes:
name: ansible_network_internal
is_router_external: false
wait: true
register: network_internal
- name: Assert internal network again
assert:
that:
- network_internal is not changed
- name: Create internal subnet
openstack.cloud.resource:
service: network
type: subnet
attributes:
cidr: 10.7.7.0/24
ip_version: 4
name: ansible_internal_subnet
network_id: "{{ network_internal.resource.id }}"
register: subnet_internal
- name: Assert internal subnet
assert:
that:
- subnet_internal is changed
- name: Create internal subnet again
openstack.cloud.resource:
service: network
type: subnet
attributes:
cidr: 10.7.7.0/24
ip_version: 4
name: ansible_internal_subnet
network_id: "{{ network_internal.resource.id }}"
register: subnet_internal
- name: Assert internal subnet again
assert:
that:
- subnet_internal is not changed
- name: Create internal port 1
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_internal1
network_id: "{{ network_internal.resource.id }}"
fixed_ips:
- ip_address: 10.7.7.100
subnet_id: "{{ subnet_internal.resource.id }}"
register: port_internal1
- name: Assert internal port 1
assert:
that:
- port_internal1 is changed
- name: Create internal port 1 again
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_internal1
network_id: "{{ network_internal.resource.id }}"
fixed_ips:
- ip_address: 10.7.7.100
subnet_id: "{{ subnet_internal.resource.id }}"
register: port_internal1
- name: Assert internal port 1 again
assert:
that:
- port_internal1 is not changed
- name: Create internal port 2
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_internal2
network_id: "{{ network_internal.resource.id }}"
fixed_ips:
- ip_address: 10.7.7.101
subnet_id: "{{ subnet_internal.resource.id }}"
register: port_internal2
- name: Assert internal port 2
assert:
that:
- port_internal2 is changed
- name: Create internal port 2 again
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_internal2
network_id: "{{ network_internal.resource.id }}"
fixed_ips:
- ip_address: 10.7.7.101
subnet_id: "{{ subnet_internal.resource.id }}"
register: port_internal2
- name: Assert internal port 2 again
assert:
that:
- port_internal2 is not changed
- name: Create router
openstack.cloud.resource:
service: network
type: router
attributes:
name: ansible_router
external_gateway_info:
enable_snat: true
external_fixed_ips:
- ip_address: 10.6.6.10
subnet_id: "{{ subnet_external.resource.id }}"
network_id: "{{ network_external.resource.id }}"
wait: true
register: router
- name: Assert router
assert:
that:
- router is changed
- name: Create router again
openstack.cloud.resource:
service: network
type: router
attributes:
name: ansible_router
external_gateway_info:
enable_snat: true
external_fixed_ips:
- ip_address: 10.6.6.10
subnet_id: "{{ subnet_external.resource.id }}"
network_id: "{{ network_external.resource.id }}"
wait: true
register: router
- name: Assert router again
assert:
that:
- router is not changed
- name: Attach router to internal subnet
openstack.cloud.router:
name: ansible_router
network: "{{ network_external.resource.id }}"
external_fixed_ips:
- ip: 10.6.6.10
subnet: "{{ subnet_external.resource.id }}"
interfaces:
- net: "{{ network_internal.resource.id }}"
subnet: "{{ subnet_internal.resource.id }}"
portip: 10.7.7.1
- name: Create floating ip address 1
openstack.cloud.resource:
service: network
type: ip
attributes:
name: 10.6.6.150
floating_ip_address: 10.6.6.150
floating_network_id: "{{ network_external.resource.id }}"
register: ip1
- name: Assert floating ip address 1
assert:
that:
- ip1 is changed
- name: Create floating ip address 1 again
openstack.cloud.resource:
service: network
type: ip
attributes:
name: 10.6.6.150
floating_ip_address: 10.6.6.150
floating_network_id: "{{ network_external.resource.id }}"
register: ip1
- name: Assert floating ip address 1 again
assert:
that:
- ip1 is not changed
- name: Create floating ip address 2
openstack.cloud.resource:
service: network
type: ip
attributes:
name: 10.6.6.151
floating_ip_address: 10.6.6.151
floating_network_id: "{{ network_external.resource.id }}"
port_id: "{{ port_internal1.resource.id }}"
register: ip2
- name: Assert floating ip address 2
assert:
that:
- ip2 is changed
- name: Create floating ip address 2 again
openstack.cloud.resource:
service: network
type: ip
attributes:
name: 10.6.6.151
floating_ip_address: 10.6.6.151
floating_network_id: "{{ network_external.resource.id }}"
port_id: "{{ port_internal1.resource.id }}"
register: ip2
- name: Assert floating ip address 2 again
assert:
that:
- ip2 is not changed
- name: Create floating ip address 3
openstack.cloud.resource:
service: network
type: ip
attributes:
name: 10.6.6.152
floating_ip_address: 10.6.6.152
floating_network_id: "{{ network_external.resource.id }}"
fixed_ip_address: 10.7.7.101
port_id: "{{ port_internal2.resource.id }}"
updateable_attributes:
- fixed_ip_address
- port_id
register: ip3
- name: Assert floating ip address 3
assert:
that:
- ip3 is changed
- name: Create floating ip address 3 again
openstack.cloud.resource:
service: network
type: ip
attributes:
name: 10.6.6.152
floating_ip_address: 10.6.6.152
floating_network_id: "{{ network_external.resource.id }}"
fixed_ip_address: 10.7.7.101
port_id: "{{ port_internal2.resource.id }}"
updateable_attributes:
- fixed_ip_address
- port_id
register: ip3
- name: Assert floating ip address 3 again
assert:
that:
- ip3 is not changed
- name: List images
openstack.cloud.resources:
service: image
type: image
register: images
- name: Identify CirrOS image id
set_fact:
image_id: "{{ images.resources|community.general.json_query(query)|first }}"
vars:
query: "[?starts_with(name, 'cirros')].id"
- name: List compute flavors
openstack.cloud.resources:
service: compute
type: flavor
register: flavors
- name: Identify m1.tiny flavor id
set_fact:
flavor_id: "{{ flavors.resources|community.general.json_query(query)|first }}"
vars:
query: "[?name == 'm1.tiny'].id"
- name: Create server
openstack.cloud.resource:
service: compute
type: server
attributes:
name: ansible_server
image_id: "{{ image_id }}"
flavor_id: "{{ flavor_id }}"
networks:
- uuid: "{{ network_internal.resource.id }}"
port: "{{ port_internal1.resource.id }}"
- uuid: "{{ network_internal.resource.id }}"
port: "{{ port_internal2.resource.id }}"
non_updateable_attributes:
- name
- image_id
- flavor_id
- networks
wait: true
register: server
- name: Assert server
assert:
that:
- server is changed
- name: Create server again
openstack.cloud.resource:
service: compute
type: server
attributes:
name: ansible_server
image_id: "{{ image_id }}"
flavor_id: "{{ flavor_id }}"
networks:
- uuid: "{{ network_internal.resource.id }}"
port: "{{ port_internal1.resource.id }}"
- uuid: "{{ network_internal.resource.id }}"
port: "{{ port_internal2.resource.id }}"
non_updateable_attributes:
- name
- image_id
- flavor_id
- networks
wait: true
register: server
- name: Assert server again
assert:
that:
- server is not changed
- name: Detach floating ip address 3
openstack.cloud.resource:
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.152
port_id: !!null
register: ip3
- name: Assert floating ip address 3
assert:
that:
- ip3 is changed
- name: Detach floating ip address 3 again
openstack.cloud.resource:
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.152
port_id: !!null
register: ip3
- name: Assert floating ip address 3 again
assert:
that:
- ip3 is not changed
- name: Delete server
openstack.cloud.resource:
service: compute
type: server
attributes:
name: ansible_server
state: absent
wait: true
register: server
- name: Assert server
assert:
that:
- server is changed
- name: Delete server again
openstack.cloud.resource:
service: compute
type: server
attributes:
name: ansible_server
state: absent
wait: true
register: server
- name: Assert server
assert:
that:
- server is not changed
- name: Delete floating ip address 3
openstack.cloud.resource:
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.152
state: absent
register: ip3
- name: Assert floating ip address 3
assert:
that:
- ip3 is changed
- name: Delete floating ip address 3 again
openstack.cloud.resource:
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.152
state: absent
register: ip3
- name: Assert floating ip address 3 again
assert:
that:
- ip3 is not changed
- name: Delete floating ip address 2
openstack.cloud.resource:
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.151
state: absent
register: ip2
- name: Assert floating ip address 2
assert:
that:
- ip2 is changed
- name: Delete floating ip address 2 again
openstack.cloud.resource:
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.151
state: absent
register: ip2
- name: Assert floating ip address 2 again
assert:
that:
- ip2 is not changed
- name: Delete floating ip address 1
openstack.cloud.resource:
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.150
state: absent
register: ip1
- name: Assert floating ip address 1
assert:
that:
- ip1 is changed
- name: Delete floating ip address 1 again
openstack.cloud.resource:
service: network
type: ip
attributes:
floating_ip_address: 10.6.6.150
state: absent
register: ip1
- name: Assert floating ip address 1 again
assert:
that:
- ip1 is not changed
- name: Detach router from internal subnet
openstack.cloud.router:
name: ansible_router
network: "{{ network_external.resource.id }}"
external_fixed_ips:
- ip: 10.6.6.10
subnet: "{{ subnet_external.resource.id }}"
interfaces: []
register: router
- name: Delete router
openstack.cloud.resource:
service: network
type: router
attributes:
name: ansible_router
state: absent
wait: true
register: router
- name: Assert router
assert:
that:
- router is changed
- name: Delete router again
openstack.cloud.resource:
service: network
type: router
attributes:
name: ansible_router
state: absent
wait: true
register: router
- name: Assert router again
assert:
that:
- router is not changed
- name: Delete internal port 2
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_internal2
state: absent
register: port_internal2
- name: Assert internal port 2
assert:
that:
- port_internal2 is changed
- name: Delete internal port 2 again
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_internal2
state: absent
register: port_internal2
- name: Assert internal port 2 again
assert:
that:
- port_internal2 is not changed
- name: Delete internal port 1
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_internal1
state: absent
register: port_internal1
- name: Assert internal port 1
assert:
that:
- port_internal1 is changed
- name: Delete internal port 1 again
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_internal1
state: absent
register: port_internal1
- name: Assert internal port 1 again
assert:
that:
- port_internal1 is not changed
- name: Delete internal subnet
openstack.cloud.resource:
service: network
type: subnet
attributes:
name: ansible_internal_subnet
state: absent
register: subnet_internal
- name: Assert internal subnet
assert:
that:
- subnet_internal is changed
- name: Delete internal subnet again
openstack.cloud.resource:
service: network
type: subnet
attributes:
name: ansible_internal_subnet
state: absent
register: subnet_internal
- name: Assert internal subnet again
assert:
that:
- subnet_internal is not changed
- name: Delete internal network
openstack.cloud.resource:
service: network
type: network
attributes:
name: ansible_network_internal
state: absent
wait: true
register: network_internal
- name: Assert internal network
assert:
that:
- network_internal is changed
- name: Delete internal network again
openstack.cloud.resource:
service: network
type: network
attributes:
name: ansible_network_internal
state: absent
wait: true
register: network_internal
- name: Assert internal network again
assert:
that:
- network_internal is not changed
- name: Delete external port
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_external
state: absent
register: port_external
- name: Assert external port
assert:
that:
- port_external is changed
- name: Delete external port again
openstack.cloud.resource:
service: network
type: port
attributes:
name: ansible_port_external
state: absent
register: port_external
- name: Assert external port again
assert:
that:
- port_external is not changed
- name: Delete external subnet
openstack.cloud.resource:
service: network
type: subnet
attributes:
name: ansible_external_subnet
state: absent
register: subnet_external
- name: Assert external subnet
assert:
that:
- subnet_external is changed
- name: Delete external subnet again
openstack.cloud.resource:
service: network
type: subnet
attributes:
name: ansible_external_subnet
state: absent
register: subnet_external
- name: Assert external subnet again
assert:
that:
- subnet_external is not changed
- name: Delete external network
openstack.cloud.resource:
service: network
type: network
attributes:
name: ansible_network_external
state: absent
wait: true
register: network_external
- name: Assert external network
assert:
that:
- network_external is changed
- name: Delete external network again
openstack.cloud.resource:
service: network
type: network
attributes:
name: ansible_network_external
state: absent
wait: true
register: network_external
- name: Assert external network again
assert:
that:
- network_external is not changed
- name: Verify resource's check mode
import_tasks: check_mode.yml