1
0
mirror of https://github.com/openshift/installer.git synced 2026-02-05 06:46:36 +01:00
Files
installer/upi/openstack/network.yaml
Martin André e16528494b Drop ansible-utils
Ansible utils we get from the openstack-17-for-rhel-9-rpms is too old
(version 2.3.0-2.el9ost) and doesn't have any of the needed filters
added in v2.5.
2024-09-03 10:27:07 +02:00

146 lines
4.1 KiB
YAML

# Required Python packages:
#
# ansible
# openstackclient
# openstacksdk
# netaddr
- ansible.builtin.import_playbook: common.yaml
- hosts: all
gather_facts: no
tasks:
- name: 'Create the cluster network'
openstack.cloud.network:
name: "{{ os_network }}"
- name: 'Create the cluster IPv4 subnet'
openstack.cloud.subnet:
name: "{{ os_subnet }}"
network_name: "{{ os_network }}"
cidr: "{{ os_subnet_range }}"
allocation_pool_start: "{{ os_subnet_range | next_nth_usable(10) }}"
allocation_pool_end: "{{ os_subnet_range | ipaddr('last_usable') }}"
dns_nameservers: "{{ os_external_dns }}"
- name: 'Create the cluster IPv6 subnet'
openstack.cloud.subnet:
name: "{{ os_subnet6 }}"
network_name: "{{ os_network }}"
cidr: "{{ os_subnet6_range }}"
ip_version: 6
ipv6_address_mode: "{{ os_subnet6_address_mode }}"
ipv6_ra_mode: "{{ os_subnet6_router_advertisements_mode }}"
when: os_subnet6_range is defined
- name: 'Create external router for IPv4'
openstack.cloud.router:
name: "{{ os_router }}"
network: "{{ os_external_network }}"
interfaces: "{{ os_subnet }}"
when:
- os_external_network is defined
- os_external_network|length>0
- os_subnet6_range is not defined
- name: 'Create external router for dualstack'
openstack.cloud.router:
name: "{{ os_router }}"
network: "{{ os_external_network }}"
interfaces:
- "{{ os_subnet }}"
- "{{ os_subnet6 }}"
when:
- os_external_network is defined
- os_external_network|length>0
- os_subnet6_range is defined
- name: 'Create the API port'
openstack.cloud.port:
name: "{{ os_port_api }}"
network: "{{ os_network }}"
fixed_ips:
- subnet: "{{ os_subnet }}"
ip_address: "{{ os_apiVIP }}"
register: _api_ports
when: os_subnet6_range is not defined
- set_fact:
api_ports: "{{ _api_ports }}"
when: _api_ports.changed
- name: 'Create the dualstack API port'
openstack.cloud.port:
name: "{{ os_port_api }}"
network: "{{ os_network }}"
register: _api_ports
when: os_subnet6_range is defined
- set_fact:
api_ports: "{{ _api_ports }}"
when: _api_ports.changed
- name: 'Create the Ingress port'
openstack.cloud.port:
name: "{{ os_port_ingress }}"
network: "{{ os_network }}"
fixed_ips:
- subnet: "{{ os_subnet }}"
ip_address: "{{ os_ingressVIP }}"
register: _ingress_ports
when: os_subnet6_range is not defined
- set_fact:
ingress_ports: "{{ _ingress_ports }}"
when: _ingress_ports.changed
- name: 'Create the dualstack Ingress port'
openstack.cloud.port:
name: "{{ os_port_ingress }}"
network: "{{ os_network }}"
register: _ingress_ports
when: os_subnet6_range is defined
- set_fact:
ingress_ports: "{{ _ingress_ports }}"
when: _ingress_ports.changed
- name: 'Populate inventory with API addresses'
shell: |
python -c 'import yaml
path = "inventory.yaml"
ipv4 = "{{ item.ip_address|ipv4 }}"
ipv6 = "{{ item.ip_address|ipv6 }}"
if ipv4 != "False":
key = "os_apiVIP"
ip = ipv4
else:
key = "os_apiVIP6"
ip = ipv6
data = yaml.safe_load(open(path))
data["all"]["hosts"]["localhost"][key] = ip
open(path, "w").write(yaml.dump(data, default_flow_style=False))'
when:
- api_ports.port is defined
loop: "{{ api_ports.port.fixed_ips }}"
- name: 'Populate inventory with Ingress addresses'
shell: |
python -c 'import yaml
path = "inventory.yaml"
ipv4 = "{{ item.ip_address|ipv4 }}"
ipv6 = "{{ item.ip_address|ipv6 }}"
if ipv4 != "False":
key = "os_ingressVIP"
ip = ipv4
else:
key = "os_ingressVIP6"
ip = ipv6
data = yaml.safe_load(open(path))
data["all"]["hosts"]["localhost"][key] = ip
open(path, "w").write(yaml.dump(data, default_flow_style=False))'
when:
- ingress_ports.port is defined
loop: "{{ ingress_ports.port.fixed_ips }}"