Execution
Date 14 Dec 2025 10:21:40 +0000
Duration 00:43:55.98
Controller aio1.openstack.local
User root
Versions
Ansible 2.18.6
ara 1.7.4 / 1.7.4
Python 3.13.5
Summary
13 Hosts
2438 Tasks
2413 Results
107 Plays
511 Files
0 Records

File: /etc/ansible/ansible_collections/openstack/osa/roles/openstack_resources/tasks/network.yml

---
# Copyright 2023, Cleura AB.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- name: Create address scopes
  openstack.cloud.address_scope:
    cloud: "{{ openstack_resources_cloud_name }}"
    interface: "{{ openstack_resources_interface }}"
    name: "{{ scope['name'] }}"
    ip_version: "{{ scope['ip_version'] | default(4) }}"
    is_shared: "{{ scope['shared'] | default(false) }}"
    project: "{{ scope['project'] | default(omit) }}"
    state: "{{ scope['state'] | default('present') }}"
  loop: "{{ openstack_resources_network['address_scopes'] | default([]) }}"
  loop_control:
    loop_var: "scope"
    label: "{{ loop_label | to_json }}"
  vars:
    loop_label:
      name: "{{ scope['name'] }}"
      state: "{{ scope['state'] | default('present') }}"
      shared: "{{ scope['shared'] | default('false') }}"
      ip_version: "{{ scope['ip_version'] | default(4) }}"

- name: Create subnet pools
  openstack.cloud.subnet_pool:
    cloud: "{{ openstack_resources_cloud_name }}"
    interface: "{{ openstack_resources_interface }}"
    name: "{{ pool['name'] }}"
    project: "{{ pool['project'] | default(omit) }}"
    description: "{{ pool['description'] | default(omit) }}"
    address_scope: "{{ pool['address_scope'] | default(omit) }}"
    prefixes: "{{ pool['prefixes'] | default(omit) }}"
    default_prefix_length: "{{ pool['default_prefix'] | default(omit) }}"
    maximum_prefix_length: "{{ pool['max_prefix'] | default(omit) }}"
    minimum_prefix_length: "{{ pool['min_prefix'] | default(omit) }}"
    default_quota: "{{ pool['quota'] | default(omit) }}"
    extra_specs: "{{ pool['extra_specs'] | default(omit) }}"
    is_default: "{{ pool['default'] | default(false) }}"
    is_shared: "{{ pool['shared'] | default(false) }}"
    state: "{{ pool['state'] | default('present') }}"
  loop: "{{ openstack_resources_network['subnet_pools'] | default([]) }}"
  loop_control:
    loop_var: "pool"
    label: "{{ loop_label | to_json }}"
  vars:
    loop_label:
      name: "{{ pool['name'] }}"
      state: "{{ pool['state'] | default('present') }}"
      shared: "{{ pool['shared'] | default('false') }}"
      default: "{{ pool['default'] | default('false') }}"

- name: Create network
  openstack.cloud.network:
    cloud: "{{ openstack_resources_cloud_name }}"
    interface: "{{ openstack_resources_interface }}"
    name: "{{ network['name'] }}"
    state: "{{ network['state'] | default(omit) }}"
    external: "{{ network['external'] | default(omit) }}"
    shared: "{{ network['shared'] | default(omit) }}"
    project: "{{ network['project'] | default(omit) }}"
    mtu_size: "{{ network['mtu'] | default(omit) }}"
    provider_network_type: "{{ network['network_type'] | default(omit) }}"
    provider_physical_network: "{{ network['physical_network'] | default(omit) }}"
    provider_segmentation_id: "{{ network['segmentation_id'] | default(omit) }}"
  loop: "{{ openstack_resources_network['networks'] | default([]) }}"
  register: _provisioned_networks
  loop_control:
    loop_var: "network"
    label: "{{ loop_label | to_json }}"
  vars:
    loop_label:
      name: "{{ network['name'] }}"
      state: "{{ network['state'] | default('present') }}"
      external: "{{ network['external'] | default('false') }}"
      shared: "{{ network['shared'] | default('false') }}"

- name: Creating subnets for each network
  ansible.builtin.include_tasks:
    file: network_subnets.yml
  loop: "{{ openstack_resources_network['networks'] | default([]) | selectattr('subnets', 'defined') }}"
  loop_control:
    loop_var: network

- name: Creating routers
  openstack.cloud.router:
    cloud: "{{ openstack_resources_cloud_name }}"
    interface: "{{ openstack_resources_interface }}"
    name: "{{ router['name'] }}"
    network: "{{ router['network'] | default(omit) }}"
    interfaces: "{{ router['interfaces'] | default(omit) }}"
    enable_snat: "{{ router['snat'] | default(omit) }}"
    external_fixed_ips: "{{ router['fixed_ips'] | default(omit) }}"
    project: "{{ router['project'] | default(omit) }}"
    state: "{{ router['state'] | default(omit) }}"
  loop: "{{ openstack_resources_network['routers'] | default([]) }}"
  loop_control:
    loop_var: router

- name: Creating security groups
  openstack.cloud.security_group:
    cloud: "{{ openstack_resources_cloud_name }}"
    interface: "{{ openstack_resources_interface }}"
    name: "{{ security_group['name'] }}"
    description: "{{ security_group['description'] | default(omit) }}"
    project: "{{ security_group['project'] | default(omit) }}"
    state: "{{ security_group['state'] | default('present') }}"
    security_group_rules: "{{ security_group['security_group_rules'] | default(omit) }}"
  loop: "{{ openstack_resources_network['security_groups'] | default([]) }}"
  loop_control:
    loop_var: security_group