Files
ansible-collections-openstack/ci/roles/router/tasks/shared_network.yml
Jakob Meng eaa26c6b9c Refactored project{,_info} modules
Change-Id: I863d08c42b4c708444b74e3d47f0ca70a8ff94fd
2023-01-11 07:39:17 +01:00

128 lines
3.2 KiB
YAML

---
- name: Create the first project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: present
name: "shared_net_test_1"
description: "Project that contains the subnet to be shared"
domain: default
is_enabled: True
register: project_1
- name: Create the network to be shared
openstack.cloud.network:
cloud: "{{ cloud }}"
state: present
name: "my_shared_network"
project: "shared_net_test_1"
external: False
provider_network_type: vxlan
register: shared_network
- name: Create ipv4 subnet
openstack.cloud.subnet:
cloud: "{{ cloud }}"
state: present
network_name: "{{ shared_network.id }}"
name: "my_shared_subnet"
project: "shared_net_test_1"
ip_version: "4"
cidr: "10.0.0.0/24"
gateway_ip: "10.0.0.1"
register: shared_subnet
- name: Create the second project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: present
name: "shared_net_test_2"
description: "Project that contains the subnet to be shared"
domain: default
is_enabled: True
register: project_2
- name: Share the network with the second project
openstack.cloud.neutron_rbac_policy:
cloud: "{{ cloud }}"
action: 'access_as_shared'
object_id: "{{ shared_network.id }}"
object_type: 'network'
target_project_id: "{{ project_2.project.id }}"
project_id: "{{ project_1.project.id }}"
register: rbac_rule
- name: Create router with interface in shared network
openstack.cloud.router:
cloud: "{{ cloud }}"
state: present
name: "shared_net_test2_router"
project: "shared_net_test_2"
interfaces:
- net: "{{ shared_network.id }}"
portip: "10.0.0.42"
subnet: "{{ shared_subnet.id }}"
register: router
- name: Gather routers info
openstack.cloud.routers_info:
cloud: "{{ cloud }}"
name: "shared_net_test2_router"
register: routers
- name: List ports of first router
openstack.cloud.port_info:
cloud: "{{ cloud }}"
filters:
device_id: "{{ routers.routers.0.id }}"
register: ports
- name: Verify routers info
assert:
that:
- routers.routers.0.id == router.router.id
- ports.ports
|rejectattr('device_owner', 'equalto', 'network:router_gateway')
|sum(attribute='fixed_ips', start=[])
|map(attribute='ip_address')
|sort|list == ["10.0.0.42"]
- name: delete router
openstack.cloud.router:
cloud: "{{ cloud }}"
state: absent
name: "shared_net_test2_router"
project: "shared_net_test_2"
- name: delete rbac rule
openstack.cloud.neutron_rbac_policy:
cloud: "{{ cloud }}"
policy_id: "{{ rbac_rule.policy.id }}"
state: absent
- name: delete subnet
openstack.cloud.subnet:
cloud: "{{ cloud }}"
state: absent
network_name: "{{ shared_network.id }}"
name: "my_shared_subnet"
project: "shared_net_test_1"
- name: delete network
openstack.cloud.network:
cloud: "{{ cloud }}"
state: absent
name: "my_shared_network"
project: "shared_net_test_1"
- name: delete project 2
openstack.cloud.project:
cloud: "{{ cloud }}"
state: absent
name: "shared_net_test_2"
- name: delete project 1
openstack.cloud.project:
cloud: "{{ cloud }}"
state: absent
name: "shared_net_test_1"