summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Jensås <hjensas@redhat.com>2018-07-12 18:27:08 +0200
committerHarald Jensås <hjensas@redhat.com>2019-01-03 19:07:20 +0100
commit2f2d8183e6b85510ff041be97255f23e916127c7 (patch)
tree9a6b8042185409024d02f52df014d8fbdcad6aa1
parent2c44fe081bda5da81e6b30b98e59830d89d0d406 (diff)
L3 routed networks - subnet fixed_ips (3/3)
When using neutron routed networks we need to specify either the subnet or a ip address in the fixed-ips-request when creating neutron ports. a) For the Vip's: Adds VipSubnetMap and VipSubnetMapDefaults parameters in service_net_map.yaml. The two maps are merged, so that the operator can override the subnet where VIP port should be hosted. For example: parameter_defaults: VipSubnetMap: ctlplane: ctlplane-leaf1 InternalApi: internal_api_leaf1 Storage: storage_leaf1 redis: internal_api_leaf1 b) For overcloud node ports: Enrich 'networks' in roles defenition to include both network and subnet data. Changes the list to a map instead of a list of strings. New schema: - name: <role_name> networks: <network_name> subnet: <subnet_name> For backward compatibility a conditional is used to check if the data is a map or not. In either case the internal list of role networks is created as '_role_networks' in the jinja2 templates. When the data is a map, and the map contains the 'subnet' key the subnet specified in roles_data.yaml is used as the subnet in the fixed-ips-reqest when ports are created. If subnet is not set (or role.networks is not a map) the default will be {{network.name_lower}}_subnet. Also, since the fixed_ips request passed to Vip ports are no longer [] by default, the conditinal has been updated to test for 'ip_address' entries in the request. Partial: blueprint tripleo-routed-networks-templates Depends-On: I773a38fd903fe287132151a4d178326a46890969 Change-Id: I77edc82723d00bfece6752b5dd2c79137db93443
Notes
Notes (review): Code-Review+2: Bob Fournier <bfournie@redhat.com> Code-Review+2: Alex Schultz <aschultz@redhat.com> Verified+1: RDO Third Party CI <dmsimard+rdothirdparty@redhat.com> Workflow+1: Juan Antonio Osorio Robles <jaosorior@redhat.com> Verified+2: Zuul Submitted-by: Zuul Submitted-at: Fri, 04 Jan 2019 20:38:01 +0000 Reviewed-on: https://review.openstack.org/582301 Project: openstack/tripleo-heat-templates Branch: refs/heads/master
-rw-r--r--environments/network-isolation-no-tunneling.j2.yaml23
-rw-r--r--environments/network-isolation-v6.j2.yaml25
-rw-r--r--environments/network-isolation.j2.yaml21
-rw-r--r--network/config/2-linux-bonds-vlans/role.role.j2.yaml23
-rw-r--r--network/config/bond-with-vlans/role.role.j2.yaml15
-rw-r--r--network/config/multiple-nics/role.role.j2.yaml15
-rw-r--r--network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml17
-rw-r--r--network/config/single-nic-vlans/role.role.j2.yaml13
-rw-r--r--network/ports/ctlplane_vip.yaml4
-rw-r--r--network/ports/port.j24
-rw-r--r--network/ports/vip.yaml4
-rw-r--r--network/ports/vip_v6.yaml4
-rw-r--r--network/service_net_map.j2.yaml36
-rw-r--r--overcloud.j2.yaml50
-rw-r--r--puppet/role.role.j2.yaml7
-rw-r--r--releasenotes/notes/composable-network-subnets-fbfcb6283a54ace7.yaml48
-rw-r--r--roles/BlockStorage.yaml9
-rw-r--r--roles/CephAll.yaml6
-rw-r--r--roles/CephFile.yaml6
-rw-r--r--roles/CephObject.yaml6
-rw-r--r--roles/CephStorage.yaml6
-rw-r--r--roles/Compute.yaml9
-rw-r--r--roles/ComputeAlt.yaml9
-rw-r--r--roles/ComputeDVR.yaml9
-rw-r--r--roles/ComputeHCI.yaml12
-rw-r--r--roles/ComputeInstanceHA.yaml9
-rw-r--r--roles/ComputeLiquidio.yaml9
-rw-r--r--roles/ComputeOvsDpdk.yaml9
-rw-r--r--roles/ComputeOvsDpdkRT.yaml9
-rw-r--r--roles/ComputePPC64LE.yaml9
-rw-r--r--roles/ComputeRealTime.yaml9
-rw-r--r--roles/ComputeSriov.yaml9
-rw-r--r--roles/ComputeSriovRT.yaml9
-rw-r--r--roles/Controller.yaml15
-rw-r--r--roles/ControllerAllNovaStandalone.yaml15
-rw-r--r--roles/ControllerNoCeph.yaml15
-rw-r--r--roles/ControllerNovaStandalone.yaml15
-rw-r--r--roles/ControllerOpenstack.yaml15
-rw-r--r--roles/ControllerStorageNfs.yaml18
-rw-r--r--roles/Database.yaml3
-rw-r--r--roles/HciCephAll.yaml12
-rw-r--r--roles/HciCephFile.yaml12
-rw-r--r--roles/HciCephMon.yaml12
-rw-r--r--roles/HciCephObject.yaml12
-rw-r--r--roles/IronicConductor.yaml6
-rw-r--r--roles/Messaging.yaml3
-rw-r--r--roles/Networker.yaml6
-rw-r--r--roles/Novacontrol.yaml6
-rw-r--r--roles/ObjectStorage.yaml9
-rw-r--r--roles/OpenShiftAllInOne.yaml9
-rw-r--r--roles/OpenShiftInfra.yaml6
-rw-r--r--roles/OpenShiftMaster.yaml9
-rw-r--r--roles/OpenShiftWorker.yaml6
-rw-r--r--roles/Standalone.yaml15
-rw-r--r--roles/Telemetry.yaml6
-rw-r--r--roles/Undercloud.yaml15
-rw-r--r--roles_data.yaml48
-rw-r--r--roles_data_undercloud.yaml15
-rwxr-xr-xtools/yaml-validate.py4
59 files changed, 559 insertions, 201 deletions
diff --git a/environments/network-isolation-no-tunneling.j2.yaml b/environments/network-isolation-no-tunneling.j2.yaml
index 6bf00f1..df978de 100644
--- a/environments/network-isolation-no-tunneling.j2.yaml
+++ b/environments/network-isolation-no-tunneling.j2.yaml
@@ -23,12 +23,23 @@ resource_registry:
23 23
24 # Port assignments for each role are determined by the role definition. 24 # Port assignments for each role are determined by the role definition.
25{%- for role in roles %} 25{%- for role in roles %}
26{#- Convert net map or net list to internal list of networks #}
27{#- NOTE(hjensas): For backward compatibility support role data with both #}
28{#- networks map (new schema) and network list (old schema). #}
29{%- set _role_networks = [] %}
30{%- if role.networks is mapping %}
31{%- for key,val in role.networks.items() %}
32{%- set _role_networks = _role_networks.append(key) %}
33{%- endfor %}
34{%- else %}
35{%- set _role_networks = role.networks %}
36{%- endif %}
26 # Port assignments for the {{role.name}} role. 37 # Port assignments for the {{role.name}} role.
27 {%- for network in networks %} 38{%- for network in networks %}
28 {%- if network.name in role.networks|default([]) and network.enabled|default(true) and network.name != 'Tenant'%} 39{%- if network.name in _role_networks and network.enabled|default(true) and network.name != 'Tenant'%}
29 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml 40 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml
30 {%- elif network.enabled|default(true) %} 41{%- elif network.enabled|default(true) %}
31 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/noop.yaml 42 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/noop.yaml
32 {%- endif %} 43{%- endif %}
33 {%- endfor %} 44{%- endfor %}
34{% endfor %} 45{%- endfor %}
diff --git a/environments/network-isolation-v6.j2.yaml b/environments/network-isolation-v6.j2.yaml
index 1a0a71c..27cdba4 100644
--- a/environments/network-isolation-v6.j2.yaml
+++ b/environments/network-isolation-v6.j2.yaml
@@ -35,16 +35,27 @@ resource_registry:
35 35
36 # Port assignments by role, edit role definition to assign networks to roles. 36 # Port assignments by role, edit role definition to assign networks to roles.
37{%- for role in roles %} 37{%- for role in roles %}
38{#- Convert net map or net list to internal list of networks #}
39{#- NOTE(hjensas): For backward compatibility support role data with both #}
40{#- networks map (new schema) and network list (old schema). #}
41{%- set _role_networks = [] %}
42{%- if role.networks is mapping %}
43{%- for key,val in role.networks.items() %}
44{%- set _role_networks = _role_networks.append(key) %}
45{%- endfor %}
46{%- else %}
47{%- set _role_networks = role.networks %}
48{%- endif %}
38 # Port assignments for the {{role.name}} 49 # Port assignments for the {{role.name}}
39 {%- for network in networks %} 50{%- for network in networks %}
40 {%- if network.name in role.networks|default([]) and network.enabled|default(true) and network.name != 'Tenant' %} 51{%- if network.name in _role_networks and network.enabled|default(true) and network.name != 'Tenant' %}
41 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}_v6.yaml 52 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}_v6.yaml
42 {%- elif network.name in role.networks|default([]) and network.enabled|default(true) and network.name == 'Tenant' %} 53{%- elif network.name in _role_networks and network.enabled|default(true) and network.name == 'Tenant' %}
43 # IPv4 until OVS and Neutron support IPv6 tunnel endpoints 54 # IPv4 until OVS and Neutron support IPv6 tunnel endpoints
44 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml 55 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml
45 {%- endif %} 56{%- endif %}
46 {%- endfor %} 57{%- endfor %}
47{% endfor %} 58{%- endfor %}
48 59
49 60
50parameter_defaults: 61parameter_defaults:
diff --git a/environments/network-isolation.j2.yaml b/environments/network-isolation.j2.yaml
index 3d4f59b..6ed4fb6 100644
--- a/environments/network-isolation.j2.yaml
+++ b/environments/network-isolation.j2.yaml
@@ -24,10 +24,21 @@ resource_registry:
24 24
25 # Port assignments by role, edit role definition to assign networks to roles. 25 # Port assignments by role, edit role definition to assign networks to roles.
26{%- for role in roles %} 26{%- for role in roles %}
27{#- Convert net map or net list to internal list of networks #}
28{#- NOTE(hjensas): For backward compatibility support role data with both #}
29{#- networks map (new schema) and network list (old schema). #}
30{%- set _role_networks = [] %}
31{%- if role.networks is mapping %}
32{%- for key,val in role.networks.items() %}
33{%- set _role_networks = _role_networks.append(key) %}
34{%- endfor %}
35{%- else %}
36{%- set _role_networks = role.networks %}
37{%- endif %}
27 # Port assignments for the {{role.name}} 38 # Port assignments for the {{role.name}}
28 {%- for network in networks %} 39{%- for network in networks %}
29 {%- if network.name in role.networks|default([]) and network.enabled|default(true) %} 40{%- if network.name in _role_networks and network.enabled|default(true) %}
30 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml 41 OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml
31 {%- endif %} 42{%- endif %}
32 {%- endfor %} 43{%- endfor %}
33{% endfor %} 44{%- endfor %}
diff --git a/network/config/2-linux-bonds-vlans/role.role.j2.yaml b/network/config/2-linux-bonds-vlans/role.role.j2.yaml
index 3356dc2..696a0dc 100644
--- a/network/config/2-linux-bonds-vlans/role.role.j2.yaml
+++ b/network/config/2-linux-bonds-vlans/role.role.j2.yaml
@@ -1,3 +1,14 @@
1{#- Convert net map or net list to internal list of networks #}
2{#- NOTE(hjensas): For backward compatibility support role data with both #}
3{#- networks map (new schema) and network list (old schema). #}
4{%- set _role_networks = [] %}
5{%- if role.networks is mapping %}
6{%- for key,val in role.networks.items() %}
7{%- set _role_networks = _role_networks.append(key) %}
8{%- endfor %}
9{%- else %}
10{%- set _role_networks = role.networks %}
11{%- endif %}
1heat_template_version: rocky 12heat_template_version: rocky
2description: > 13description: >
3 Software Config to drive os-net-config with 2 Linux bonds. One bond is on a 14 Software Config to drive os-net-config with 2 Linux bonds. One bond is on a
@@ -32,7 +43,7 @@ parameters:
32 guaranteed to pass through the data path of the segments in the network. 43 guaranteed to pass through the data path of the segments in the network.
33 (The parameter is automatically resolved from the ctlplane network's mtu attribute.) 44 (The parameter is automatically resolved from the ctlplane network's mtu attribute.)
34 type: number 45 type: number
35{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} 46{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
36 47
37 {{network.name}}IpSubnet: 48 {{network.name}}IpSubnet:
38 default: '' 49 default: ''
@@ -110,7 +121,7 @@ resources:
110 expression: $.data.max() 121 expression: $.data.max()
111 data: 122 data:
112 - {get_param: ControlPlaneMtu} 123 - {get_param: ControlPlaneMtu}
113{%- for network in networks if network.enabled|default(true) and network.name in role.networks and not network.name.startswith('Tenant') %} 124{%- for network in networks if network.enabled|default(true) and network.name in _role_networks and not network.name.startswith('Tenant') %}
114 - {get_param: {{network.name}}Mtu} 125 - {get_param: {{network.name}}Mtu}
115{%- endfor %} 126{%- endfor %}
116 127
@@ -127,7 +138,7 @@ resources:
127 expression: $.data.max() 138 expression: $.data.max()
128 data: 139 data:
129 - {get_param: ControlPlaneMtu} 140 - {get_param: ControlPlaneMtu}
130{%- for network in networks if network.name.startswith('Tenant') and network.enabled|default(true) and network.name in role.networks %} 141{%- for network in networks if network.name.startswith('Tenant') and network.enabled|default(true) and network.name in _role_networks %}
131 - {get_param: {{network.name}}Mtu} 142 - {get_param: {{network.name}}Mtu}
132{%- endfor %} 143{%- endfor %}
133 144
@@ -183,7 +194,7 @@ resources:
183 name: nic3 194 name: nic3
184 mtu: 195 mtu:
185 get_attr: [MinViableMtuBondApi, value] 196 get_attr: [MinViableMtuBondApi, value]
186{%- for network in networks if network.enabled|default(true) and network.name in role.networks and not network.name.startswith('Tenant') %} 197{%- for network in networks if network.enabled|default(true) and network.name in _role_networks and not network.name.startswith('Tenant') %}
187 - type: vlan 198 - type: vlan
188 device: bond_api 199 device: bond_api
189 mtu: 200 mtu:
@@ -224,7 +235,7 @@ resources:
224 name: nic5 235 name: nic5
225 mtu: 236 mtu:
226 get_attr: [MinViableMtuBondData, value] 237 get_attr: [MinViableMtuBondData, value]
227 {%- for network in networks if network.name.startswith('Tenant') and network.name in role.networks and network.enabled|default(true) %} 238 {%- for network in networks if network.name.startswith('Tenant') and network.name in _role_networks and network.enabled|default(true) %}
228 - type: vlan 239 - type: vlan
229 device: bond-data 240 device: bond-data
230 mtu: 241 mtu:
@@ -247,7 +258,7 @@ resources:
247 - type: ovs_user_bridge 258 - type: ovs_user_bridge
248 name: br-dpdk0 259 name: br-dpdk0
249 use_dhcp: false 260 use_dhcp: false
250 {%- for network in networks if network.name.startswith('Tenant') and network.name in role.networks and network.enabled|default(true) %} 261 {%- for network in networks if network.name.startswith('Tenant') and network.name in _role_networks and network.enabled|default(true) %}
251 ovs_extra: 262 ovs_extra:
252 - str_replace: 263 - str_replace:
253 template: set port br-dpdk0 tag=_VLAN_TAG_ 264 template: set port br-dpdk0 tag=_VLAN_TAG_
diff --git a/network/config/bond-with-vlans/role.role.j2.yaml b/network/config/bond-with-vlans/role.role.j2.yaml
index 7d55720..2bd747c 100644
--- a/network/config/bond-with-vlans/role.role.j2.yaml
+++ b/network/config/bond-with-vlans/role.role.j2.yaml
@@ -1,3 +1,14 @@
1{#- Convert net map or net list to internal list of networks #}
2{#- NOTE(hjensas): For backward compatibility support role data with both #}
3{#- networks map (new schema) and network list (old schema). #}
4{%- set _role_networks = [] %}
5{%- if role.networks is mapping %}
6{%- for key,val in role.networks.items() %}
7{%- set _role_networks = _role_networks.append(key) %}
8{%- endfor %}
9{%- else %}
10{%- set _role_networks = role.networks %}
11{%- endif %}
1heat_template_version: rocky 12heat_template_version: rocky
2description: > 13description: >
3 Software Config to drive os-net-config with 2 bonded nics on a bridge with VLANs attached for the {{role.name}} role. 14 Software Config to drive os-net-config with 2 bonded nics on a bridge with VLANs attached for the {{role.name}} role.
@@ -168,7 +179,7 @@ resources:
168 name: nic3 179 name: nic3
169 mtu: 180 mtu:
170 get_attr: [MinViableMtu, value] 181 get_attr: [MinViableMtu, value]
171{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} 182{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
172 - type: vlan 183 - type: vlan
173 mtu: 184 mtu:
174 get_param: {{network.name}}Mtu 185 get_param: {{network.name}}Mtu
@@ -207,7 +218,7 @@ resources:
207 name: nic3 218 name: nic3
208 mtu: 219 mtu:
209 get_attr: [MinViableMtu, value] 220 get_attr: [MinViableMtu, value]
210{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} 221{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
211 - type: vlan 222 - type: vlan
212 device: bond_api 223 device: bond_api
213 mtu: 224 mtu:
diff --git a/network/config/multiple-nics/role.role.j2.yaml b/network/config/multiple-nics/role.role.j2.yaml
index bad3016..e58207a 100644
--- a/network/config/multiple-nics/role.role.j2.yaml
+++ b/network/config/multiple-nics/role.role.j2.yaml
@@ -1,3 +1,14 @@
1{#- Convert net map or net list to internal list of networks #}
2{#- NOTE(hjensas): For backward compatibility support role data with both #}
3{#- networks map (new schema) and network list (old schema). #}
4{%- set _role_networks = [] %}
5{%- if role.networks is mapping %}
6{%- for key,val in role.networks.items() %}
7{%- set _role_networks = _role_networks.append(key) %}
8{%- endfor %}
9{%- else %}
10{%- set _role_networks = role.networks %}
11{%- endif %}
1heat_template_version: rocky 12heat_template_version: rocky
2description: > 13description: >
3 Software Config to drive os-net-config to configure multiple interfaces for the {{role.name}} role. 14 Software Config to drive os-net-config to configure multiple interfaces for the {{role.name}} role.
@@ -123,7 +134,7 @@ resources:
123{%- set nics_used = [1] %} 134{%- set nics_used = [1] %}
124{%- for network in networks if network.enabled|default(true) and network.name not in role.networks_skip_config|default([]) %} 135{%- for network in networks if network.enabled|default(true) and network.name not in role.networks_skip_config|default([]) %}
125{%- if network.name not in ["External", "Tenant"] %} 136{%- if network.name not in ["External", "Tenant"] %}
126{%- if network.name in role.networks %} 137{%- if network.name in _role_networks %}
127 - type: interface 138 - type: interface
128 name: nic{{loop.index + 1}} 139 name: nic{{loop.index + 1}}
129 mtu: 140 mtu:
@@ -153,7 +164,7 @@ resources:
153 dns_servers: 164 dns_servers:
154 get_param: DnsServers 165 get_param: DnsServers
155 use_dhcp: false 166 use_dhcp: false
156{%- if network.name in role.networks %} 167{%- if network.name in _role_networks %}
157 addresses: 168 addresses:
158 - ip_netmask: 169 - ip_netmask:
159 get_param: {{network.name}}IpSubnet 170 get_param: {{network.name}}IpSubnet
diff --git a/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml b/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml
index 14b1d8f..2c73894 100644
--- a/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml
+++ b/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml
@@ -1,3 +1,14 @@
1{#- Convert net map or net list to internal list of networks #}
2{#- NOTE(hjensas): For backward compatibility support role data with both #}
3{#- networks map (new schema) and network list (old schema). #}
4{%- set _role_networks = [] %}
5{%- if role.networks is mapping %}
6{%- for key,val in role.networks.items() %}
7{%- set _role_networks = _role_networks.append(key) %}
8{%- endfor %}
9{%- else %}
10{%- set _role_networks = role.networks %}
11{%- endif %}
1heat_template_version: rocky 12heat_template_version: rocky
2description: > 13description: >
3 Software Config to drive os-net-config to configure VLANs for the {{role.name}} role. 14 Software Config to drive os-net-config to configure VLANs for the {{role.name}} role.
@@ -31,7 +42,7 @@ parameters:
31 guaranteed to pass through the data path of the segments in the network. 42 guaranteed to pass through the data path of the segments in the network.
32 (The parameter is automatically resolved from the ctlplane network's mtu attribute.) 43 (The parameter is automatically resolved from the ctlplane network's mtu attribute.)
33 type: number 44 type: number
34{% for network in networks if network.enabled|default(true) and network.name in role.networks %} 45{% for network in networks if network.enabled|default(true) and network.name in _role_networks %}
35 {{network.name}}IpSubnet: 46 {{network.name}}IpSubnet:
36 default: '' 47 default: ''
37 description: IP address/subnet on the {{network.name_lower}} network 48 description: IP address/subnet on the {{network.name_lower}} network
@@ -93,7 +104,7 @@ resources:
93 expression: $.data.max() 104 expression: $.data.max()
94 data: 105 data:
95 - {get_param: ControlPlaneMtu} 106 - {get_param: ControlPlaneMtu}
96{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} 107{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
97 - {get_param: {{network.name}}Mtu} 108 - {get_param: {{network.name}}Mtu}
98{%- endfor %} 109{%- endfor %}
99 110
@@ -142,7 +153,7 @@ resources:
142 mtu: 153 mtu:
143 get_attr: [MinViableMtu, value] 154 get_attr: [MinViableMtu, value]
144 primary: true 155 primary: true
145{%- for network in networks if network.enabled|default(true) and network.name in role.networks 156{%- for network in networks if network.enabled|default(true) and network.name in _role_networks
146 and network.name not in role.networks_skip_config|default([]) %} 157 and network.name not in role.networks_skip_config|default([]) %}
147 - type: vlan 158 - type: vlan
148 mtu: 159 mtu:
diff --git a/network/config/single-nic-vlans/role.role.j2.yaml b/network/config/single-nic-vlans/role.role.j2.yaml
index d7fb2e3..54eb7f1 100644
--- a/network/config/single-nic-vlans/role.role.j2.yaml
+++ b/network/config/single-nic-vlans/role.role.j2.yaml
@@ -1,3 +1,14 @@
1{#- Convert net map or net list to internal list of networks #}
2{#- NOTE(hjensas): For backward compatibility support role data with both #}
3{#- networks map (new schema) and network list (old schema). #}
4{%- set _role_networks = [] %}
5{%- if role.networks is mapping %}
6{%- for key,val in role.networks.items() %}
7{%- set _role_networks = _role_networks.append(key) %}
8{%- endfor %}
9{%- else %}
10{%- set _role_networks = role.networks %}
11{%- endif %}
1heat_template_version: rocky 12heat_template_version: rocky
2description: > 13description: >
3 Software Config to drive os-net-config to configure VLANs for the {{role.name}} role. 14 Software Config to drive os-net-config to configure VLANs for the {{role.name}} role.
@@ -143,7 +154,7 @@ resources:
143 get_attr: [MinViableMtu, value] 154 get_attr: [MinViableMtu, value]
144 # force the MAC address of the bridge to this interface 155 # force the MAC address of the bridge to this interface
145 primary: true 156 primary: true
146{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} 157{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
147 - type: vlan 158 - type: vlan
148 mtu: 159 mtu:
149 get_param: {{network.name}}Mtu 160 get_param: {{network.name}}Mtu
diff --git a/network/ports/ctlplane_vip.yaml b/network/ports/ctlplane_vip.yaml
index 4d3aa58..a4b32be 100644
--- a/network/ports/ctlplane_vip.yaml
+++ b/network/ports/ctlplane_vip.yaml
@@ -45,7 +45,9 @@ parameters:
45conditions: 45conditions:
46 fixed_ip_not_set: 46 fixed_ip_not_set:
47 equals: 47 equals:
48 - get_param: FixedIPs 48 - yaql:
49 expression: $.data.where($.get('ip_address'))
50 data: {get_param: FixedIPs}
49 - [] 51 - []
50 52
51resources: 53resources:
diff --git a/network/ports/port.j2 b/network/ports/port.j2
index 19ac0d9..587da45 100644
--- a/network/ports/port.j2
+++ b/network/ports/port.j2
@@ -51,7 +51,9 @@ conditions:
51 - ctlplane 51 - ctlplane
52 fixed_ip_not_set: 52 fixed_ip_not_set:
53 equals: 53 equals:
54 - get_param: FixedIPs 54 - yaql:
55 expression: $.data.where($.get('ip_address'))
56 data: {get_param: FixedIPs}
55 - [] 57 - []
56 net_is_ctlplane_and_fixed_ip_not_set: 58 net_is_ctlplane_and_fixed_ip_not_set:
57 and: 59 and:
diff --git a/network/ports/vip.yaml b/network/ports/vip.yaml
index 4cbe70c..4010ea1 100644
--- a/network/ports/vip.yaml
+++ b/network/ports/vip.yaml
@@ -49,7 +49,9 @@ conditions:
49 - ctlplane 49 - ctlplane
50 fixed_ip_not_set: 50 fixed_ip_not_set:
51 equals: 51 equals:
52 - get_param: FixedIPs 52 - yaql:
53 expression: $.data.where($.get('ip_address'))
54 data: {get_param: FixedIPs}
53 - [] 55 - []
54 net_is_ctlplane_and_fixed_ip_not_set: 56 net_is_ctlplane_and_fixed_ip_not_set:
55 and: 57 and:
diff --git a/network/ports/vip_v6.yaml b/network/ports/vip_v6.yaml
index 6cc5510..ca15dc9 100644
--- a/network/ports/vip_v6.yaml
+++ b/network/ports/vip_v6.yaml
@@ -49,7 +49,9 @@ conditions:
49 - ctlplane 49 - ctlplane
50 fixed_ip_not_set: 50 fixed_ip_not_set:
51 equals: 51 equals:
52 - get_param: FixedIPs 52 - yaql:
53 expression: $.data.where($.get('ip_address'))
54 data: {get_param: FixedIPs}
53 - [] 55 - []
54 net_is_ctlplane_and_fixed_ip_not_set: 56 net_is_ctlplane_and_fixed_ip_not_set:
55 and: 57 and:
diff --git a/network/service_net_map.j2.yaml b/network/service_net_map.j2.yaml
index c5f9c49..0083d73 100644
--- a/network/service_net_map.j2.yaml
+++ b/network/service_net_map.j2.yaml
@@ -95,6 +95,26 @@ parameters:
95 via parameter_defaults in the resource registry. 95 via parameter_defaults in the resource registry.
96 type: json 96 type: json
97 97
98 ControlPlaneSubnet:
99 description: The name of the undercloud Neutron control plane subnet
100 default: ctlplane-subnet
101 type: string
102
103 VipSubnetMap:
104 description: Map of (network_name or service_name) -> subnet_name that
105 defines which subnet to host the VIP.
106 default: {}
107 type: json
108
109 VipSubnetMapDefaults:
110 default:
111 ctlplane: ctlplane-subnet
112{%- for network in networks if network.vip|default(false) %}
113 {{network.name}}: {{network.name_lower}}_subnet
114{%- endfor %}
115 redis: internal_api_subnet
116 type: json
117
98 # We define mappings to work around names that break when doing the 118 # We define mappings to work around names that break when doing the
99 # CamelCase to snake_case conversion to align with service_names 119 # CamelCase to snake_case conversion to align with service_names
100 ServiceNetMapDeprecatedMapping: 120 ServiceNetMapDeprecatedMapping:
@@ -141,6 +161,19 @@ resources:
141 - {get_param: ServiceNetMap} 161 - {get_param: ServiceNetMap}
142 - keys: {get_param: ServiceNetMapDeprecatedMapping} 162 - keys: {get_param: ServiceNetMapDeprecatedMapping}
143 163
164 VipSubnetMapValue:
165 type: OS::Heat::Value
166 properties:
167 type: json
168 value:
169 map_merge:
170 # (hjensas): We need to map_replace the ctlplane-subnet to support
171 # legacy parameter ControlPlaneSubnet.
172 - map_replace:
173 - {get_param: VipSubnetMapDefaults}
174 - values:
175 ctlplane-subnet: {get_param: ControlPlaneSubnet}
176 - {get_param: VipSubnetMap}
144 177
145outputs: 178outputs:
146 service_net_map: 179 service_net_map:
@@ -155,3 +188,6 @@ outputs:
155 expression: dict($.data.map.items().select([ regex(`([a-z0-9])([A-Z])`).replace($[0], '\\1_\\2').toLower(), $[1]])) 188 expression: dict($.data.map.items().select([ regex(`([a-z0-9])([A-Z])`).replace($[0], '\\1_\\2').toLower(), $[1]]))
156 data: 189 data:
157 map: {get_attr: [ServiceNetMapValue, value]} 190 map: {get_attr: [ServiceNetMapValue, value]}
191
192 vip_subnet_map:
193 value: {get_attr: [VipSubnetMapValue, value]}
diff --git a/overcloud.j2.yaml b/overcloud.j2.yaml
index ca38be9..da18dfe 100644
--- a/overcloud.j2.yaml
+++ b/overcloud.j2.yaml
@@ -110,8 +110,6 @@ parameters:
110 Control the IP allocation for the ControlVirtualIP port. E.g. 110 Control the IP allocation for the ControlVirtualIP port. E.g.
111 [{'ip_address':'1.2.3.4'}] 111 [{'ip_address':'1.2.3.4'}]
112 type: json 112 type: json
113{%- for network in networks if network.vip|default(false) %}
114{%- if network.name == 'External' %}
115 # TODO (dsneddon) Legacy name, eventually refactor to match network name 113 # TODO (dsneddon) Legacy name, eventually refactor to match network name
116 PublicVirtualFixedIPs: 114 PublicVirtualFixedIPs:
117 default: [] 115 default: []
@@ -119,14 +117,13 @@ parameters:
119 Control the IP allocation for the PublicVirtualInterface port. E.g. 117 Control the IP allocation for the PublicVirtualInterface port. E.g.
120 [{'ip_address':'1.2.3.4'}] 118 [{'ip_address':'1.2.3.4'}]
121 type: json 119 type: json
122{%- else %} 120{%- for network in networks if network.vip|default(false) and network.name != 'External' %}
123 {{network.name}}VirtualFixedIPs: 121 {{network.name}}VirtualFixedIPs:
124 default: [] 122 default: []
125 description: > 123 description: >
126 Control the IP allocation for the {{network.name}}VirtualInterface port. E.g. 124 Control the IP allocation for the {{network.name}}VirtualInterface port. E.g.
127 [{'ip_address':'1.2.3.4'}] 125 [{'ip_address':'1.2.3.4'}]
128 type: json 126 type: json
129{%- endif %}
130{%- endfor %} 127{%- endfor %}
131 RabbitCookieSalt: 128 RabbitCookieSalt:
132 type: string 129 type: string
@@ -269,6 +266,23 @@ conditions:
269 ctlplane_subnet_cidr_set: 266 ctlplane_subnet_cidr_set:
270 not: 267 not:
271 equals: [{get_param: ControlPlaneSubnetCidr}, ''] 268 equals: [{get_param: ControlPlaneSubnetCidr}, '']
269{%- for network in networks if network.name != 'External' %}
270 {{network.name_lower}}_virtual_fixed_ip_set:
271 not:
272 equals:
273 - get_param: {{network.name}}VirtualFixedIPs
274 - []
275{%- endfor %}
276 public_virtual_fixed_ip_set:
277 not:
278 equals:
279 - get_param: PublicVirtualFixedIPs
280 - []
281 redis_virtual_fixed_ip_set:
282 not:
283 equals:
284 - get_param: RedisVirtualFixedIPs
285 - []
272 286
273resources: 287resources:
274 288
@@ -799,20 +813,20 @@ resources:
799 type: OS::TripleO::Network 813 type: OS::TripleO::Network
800 814
801 ControlVirtualIP: 815 ControlVirtualIP:
816 depends_on: [Networks, ServiceNetMap]
802 type: OS::TripleO::Network::Ports::ControlPlaneVipPort 817 type: OS::TripleO::Network::Ports::ControlPlaneVipPort
803 depends_on: Networks
804 properties: 818 properties:
805 name: control_virtual_ip 819 name: control_virtual_ip
806 network: {get_param: NeutronControlPlaneID} 820 network: {get_param: NeutronControlPlaneID}
807 fixed_ips: 821 fixed_ips:
808 if: 822 if:
809 - control_fixed_ip_not_set 823 - control_fixed_ip_not_set
810 - [{subnet: {get_param: ControlPlaneSubnet}}] 824 - [{subnet: {get_attr: [ServiceNetMap, vip_subnet_map, ctlplane]}}]
811 - get_param: ControlFixedIPs 825 - get_param: ControlFixedIPs
812 replacement_policy: AUTO 826 replacement_policy: AUTO
813 827
814 RedisVirtualIP: 828 RedisVirtualIP:
815 depends_on: Networks 829 depends_on: [Networks, ServiceNetMap]
816 type: OS::TripleO::Network::Ports::RedisVipPort 830 type: OS::TripleO::Network::Ports::RedisVipPort
817 properties: 831 properties:
818 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} 832 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
@@ -825,13 +839,17 @@ resources:
825 PortName: redis_virtual_ip 839 PortName: redis_virtual_ip
826 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]} 840 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
827 ServiceName: redis 841 ServiceName: redis
828 FixedIPs: {get_param: RedisVirtualFixedIPs} 842 FixedIPs:
843 if:
844 - redis_virtual_fixed_ip_set
845 - {get_param: RedisVirtualFixedIPs}
846 - [{subnet: {get_attr: [ServiceNetMap, vip_subnet_map, redis]}}]
829 847
830{%- for network in networks if network.vip|default(false) %} 848{%- for network in networks if network.vip|default(false) %}
831{%- if network.name == 'External' %} 849{%- if network.name == 'External' %}
832 # The public VIP is on the External net, falls back to ctlplane 850 # The public VIP is on the External net, falls back to ctlplane
833 PublicVirtualIP: 851 PublicVirtualIP:
834 depends_on: Networks 852 depends_on: [Networks, ServiceNetMap]
835 type: OS::TripleO::Network::Ports::ExternalVipPort 853 type: OS::TripleO::Network::Ports::ExternalVipPort
836 properties: 854 properties:
837 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} 855 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
@@ -842,10 +860,14 @@ resources:
842 - {str_split: ['/', {get_attr: [ControlVirtualIP, subnets, 0, cidr]}, 1]} 860 - {str_split: ['/', {get_attr: [ControlVirtualIP, subnets, 0, cidr]}, 1]}
843 ControlPlaneNetwork: {get_param: NeutronControlPlaneID} 861 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
844 PortName: public_virtual_ip 862 PortName: public_virtual_ip
845 FixedIPs: {get_param: PublicVirtualFixedIPs} 863 FixedIPs:
864 if:
865 - public_virtual_fixed_ip_set
866 - {get_param: PublicVirtualFixedIPs}
867 - [{subnet: {get_attr: [ServiceNetMap, vip_subnet_map, {{network.name}}]}}]
846{%- else %} 868{%- else %}
847 {{network.name}}VirtualIP: 869 {{network.name}}VirtualIP:
848 depends_on: Networks 870 depends_on: [Networks, ServiceNetMap]
849 type: OS::TripleO::Network::Ports::{{network.name}}VipPort 871 type: OS::TripleO::Network::Ports::{{network.name}}VipPort
850 properties: 872 properties:
851 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} 873 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
@@ -855,7 +877,11 @@ resources:
855 - {get_param: ControlPlaneSubnetCidr} 877 - {get_param: ControlPlaneSubnetCidr}
856 - {str_split: ['/', {get_attr: [ControlVirtualIP, subnets, 0, cidr]}, 1]} 878 - {str_split: ['/', {get_attr: [ControlVirtualIP, subnets, 0, cidr]}, 1]}
857 PortName: {{network.name_lower}}_virtual_ip 879 PortName: {{network.name_lower}}_virtual_ip
858 FixedIPs: {get_param: {{network.name}}VirtualFixedIPs} 880 FixedIPs:
881 if:
882 - {{network.name_lower}}_virtual_fixed_ip_set
883 - {get_param: {{network.name}}VirtualFixedIPs}
884 - [{subnet: {get_attr: [ServiceNetMap, vip_subnet_map, {{network.name}}]}}]
859{%- endif %} 885{%- endif %}
860{%- endfor %} 886{%- endfor %}
861 887
diff --git a/puppet/role.role.j2.yaml b/puppet/role.role.j2.yaml
index 1b22467..de3cd57 100644
--- a/puppet/role.role.j2.yaml
+++ b/puppet/role.role.j2.yaml
@@ -466,7 +466,11 @@ resources:
466 if: 466 if:
467 - {{role.name}}_{{network.name}}_fixed_ip_set 467 - {{role.name}}_{{network.name}}_fixed_ip_set
468 - [{ip_address: {get_param: [{{role.name}}IPs, '{{network.name_lower}}', {get_param: NodeIndex}]}}] 468 - [{ip_address: {get_param: [{{role.name}}IPs, '{{network.name_lower}}', {get_param: NodeIndex}]}}]
469 - [] 469{%- if role.networks is mapping and role.networks.get(network.name) %}
470 - [{subnet: {{role.networks[network.name].get('subnet', network.name_lower + '_subnet')}}}]
471{%- else %}
472 - [{subnet: {{network.name_lower}}_subnet}]
473{%- endif %}
470 ControlPlaneSubnetCidr: 474 ControlPlaneSubnetCidr:
471 if: 475 if:
472 - ctlplane_subnet_cidr_set 476 - ctlplane_subnet_cidr_set
@@ -476,7 +480,6 @@ resources:
476 - yaql: 480 - yaql:
477 expression: str("{0}".format($.data).split("/")[-1]) 481 expression: str("{0}".format($.data).split("/")[-1])
478 data: {get_attr: [{{server_resource_name}}, addresses, ctlplane, 0, subnets, 0, cidr]} 482 data: {get_attr: [{{server_resource_name}}, addresses, ctlplane, 0, subnets, 0, cidr]}
479
480 IPPool: 483 IPPool:
481 map_merge: 484 map_merge:
482{%- if role.deprecated_param_ips is defined %} 485{%- if role.deprecated_param_ips is defined %}
diff --git a/releasenotes/notes/composable-network-subnets-fbfcb6283a54ace7.yaml b/releasenotes/notes/composable-network-subnets-fbfcb6283a54ace7.yaml
new file mode 100644
index 0000000..40142a7
--- /dev/null
+++ b/releasenotes/notes/composable-network-subnets-fbfcb6283a54ace7.yaml
@@ -0,0 +1,48 @@
1---
2features:
3 - |
4 Composable Networks now support creating L3 routed networks. L3 networks
5 use multiple L2 network segments and multiple ip subnets. In addition to
6 the base subnet automatically created for any composable network,
7 additional subnets can be defined under the ``subnets`` key for each
8 network in the data file (``network_data.yaml``) used by composable
9 networks. Please refer to the ``network_data_subnets_routed.yaml`` file for
10 an example demonstrating how to define composable L3 routed networks.
11 - |
12 For composable roles it is now possible to control which subnet in a L3
13 routed network will host network ports for the role. This is done by
14 setting the subnet for each network in the role defenition
15 (``roles_data.yaml``). For example::
16
17 - name: <role_name>
18 networks:
19 InternalApi:
20 subnet: internal_api_leaf2
21 Tenant:
22 subnet: tenant_leaf2
23 Storage:
24 subnet: storage_leaf2
25 - |
26 To enable control of which subnet is used for virtual IPs on L3 routed
27 composable networks the new parameter ``VipSubnetMap`` where added. This
28 allow the user to override the subnet where the VIP port should be hosted.
29 For example::
30
31 parameter_defaults:
32 VipSubnetMap:
33 ctlplane: ctlplane-leaf1
34 InternalApi: internal_api_leaf1
35 Storage: storage_leaf1
36 redis: internal_api_leaf1
37upgrade:
38 - |
39 Deployments using custom names for subnets must also set the subnet to use
40 for the roles used in the deployment. I.e if ``NetworkNameSubnetName``
41 parameter was used to define a non-default subnet name for any network, the
42 role defenition (``roles_data.yaml``) and ``VipSubnetMap`` parameter
43 must use the same value.
44
45 .. Warning:: The update will fail if ``<NetworkName>SubnetName`` was used
46 to set a custom subnet name, and the role defenition and/or
47 the ``VipSubnetMap`` is not set to match the custom subnet
48 name.
diff --git a/roles/BlockStorage.yaml b/roles/BlockStorage.yaml
index 1348d0a..48faf5e 100644
--- a/roles/BlockStorage.yaml
+++ b/roles/BlockStorage.yaml
@@ -5,9 +5,12 @@
5 description: | 5 description: |
6 Cinder Block Storage node role 6 Cinder Block Storage node role
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Storage 9 subnet: internal_api_subnet
10 - StorageMgmt 10 Storage:
11 subnet: storage_subnet
12 StorageMgmt:
13 subnet: storage_mgmt_subnet
11 uses_deprecated_params: False 14 uses_deprecated_params: False
12 deprecated_nic_config_name: 'cinder-storage.yaml' 15 deprecated_nic_config_name: 'cinder-storage.yaml'
13 ServicesDefault: 16 ServicesDefault:
diff --git a/roles/CephAll.yaml b/roles/CephAll.yaml
index cda4765..bc91899 100644
--- a/roles/CephAll.yaml
+++ b/roles/CephAll.yaml
@@ -5,8 +5,10 @@
5 description: | 5 description: |
6 Standalone Storage Full Role (OSD + MON + RGW + MDS + MGR + RBD Mirroring) 6 Standalone Storage Full Role (OSD + MON + RGW + MDS + MGR + RBD Mirroring)
7 networks: 7 networks:
8 - Storage 8 Storage:
9 - StorageMgmt 9 subnet: storage_subnet
10 StorageMgmt:
11 subnet: storage_mgmt_subnet
10 HostnameFormatDefault: '%stackname%-ceph-all-%index%' 12 HostnameFormatDefault: '%stackname%-ceph-all-%index%'
11 ServicesDefault: 13 ServicesDefault:
12 - OS::TripleO::Services::Aide 14 - OS::TripleO::Services::Aide
diff --git a/roles/CephFile.yaml b/roles/CephFile.yaml
index a03c3ef..a8ad4d1 100644
--- a/roles/CephFile.yaml
+++ b/roles/CephFile.yaml
@@ -5,8 +5,10 @@
5 description: | 5 description: |
6 Standalone Scale-out File Role (OSD + MDS) 6 Standalone Scale-out File Role (OSD + MDS)
7 networks: 7 networks:
8 - Storage 8 Storage:
9 - StorageMgmt 9 subnet: storage_subnet
10 StorageMgmt:
11 subnet: storage_mgmt_subnet
10 HostnameFormatDefault: '%stackname%-ceph-file-%index%' 12 HostnameFormatDefault: '%stackname%-ceph-file-%index%'
11 ServicesDefault: 13 ServicesDefault:
12 - OS::TripleO::Services::Aide 14 - OS::TripleO::Services::Aide
diff --git a/roles/CephObject.yaml b/roles/CephObject.yaml
index 7175112..2dc1527 100644
--- a/roles/CephObject.yaml
+++ b/roles/CephObject.yaml
@@ -5,8 +5,10 @@
5 description: | 5 description: |
6 Standalone Scale-out Object Role (OSD + RGW) 6 Standalone Scale-out Object Role (OSD + RGW)
7 networks: 7 networks:
8 - Storage 8 Storage:
9 - StorageMgmt 9 subnet: storage_subnet
10 StorageMgmt:
11 subnet: storage_mgmt_subnet
10 HostnameFormatDefault: '%stackname%-ceph-object-%index%' 12 HostnameFormatDefault: '%stackname%-ceph-object-%index%'
11 ServicesDefault: 13 ServicesDefault:
12 - OS::TripleO::Services::Aide 14 - OS::TripleO::Services::Aide
diff --git a/roles/CephStorage.yaml b/roles/CephStorage.yaml
index 79fb0be..c52a60a 100644
--- a/roles/CephStorage.yaml
+++ b/roles/CephStorage.yaml
@@ -5,8 +5,10 @@
5 description: | 5 description: |
6 Ceph OSD Storage node role 6 Ceph OSD Storage node role
7 networks: 7 networks:
8 - Storage 8 Storage:
9 - StorageMgmt 9 subnet: storage_subnet
10 StorageMgmt:
11 subnet: storage_mgmt_subnet
10 uses_deprecated_params: False 12 uses_deprecated_params: False
11 deprecated_nic_config_name: 'ceph-storage.yaml' 13 deprecated_nic_config_name: 'ceph-storage.yaml'
12 ServicesDefault: 14 ServicesDefault:
diff --git a/roles/Compute.yaml b/roles/Compute.yaml
index 561af88..4352565 100644
--- a/roles/Compute.yaml
+++ b/roles/Compute.yaml
@@ -6,9 +6,12 @@
6 Basic Compute Node role 6 Basic Compute Node role
7 CountDefault: 1 7 CountDefault: 1
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 HostnameFormatDefault: '%stackname%-novacompute-%index%' 15 HostnameFormatDefault: '%stackname%-novacompute-%index%'
13 RoleParametersDefault: 16 RoleParametersDefault:
14 TunedProfileName: "virtual-host" 17 TunedProfileName: "virtual-host"
diff --git a/roles/ComputeAlt.yaml b/roles/ComputeAlt.yaml
index dda7ed3..3222e24 100644
--- a/roles/ComputeAlt.yaml
+++ b/roles/ComputeAlt.yaml
@@ -6,9 +6,12 @@
6 Alternate Compute Node role 6 Alternate Compute Node role
7 CountDefault: 0 7 CountDefault: 0
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 HostnameFormatDefault: '%stackname%-novacomputealt-%index%' 15 HostnameFormatDefault: '%stackname%-novacomputealt-%index%'
13 disable_constraints: True 16 disable_constraints: True
14 RoleParametersDefault: 17 RoleParametersDefault:
diff --git a/roles/ComputeDVR.yaml b/roles/ComputeDVR.yaml
index bbbc9b0..6a33cd1 100644
--- a/roles/ComputeDVR.yaml
+++ b/roles/ComputeDVR.yaml
@@ -6,9 +6,12 @@
6 DVR enabled Compute Node role 6 DVR enabled Compute Node role
7 CountDefault: 1 7 CountDefault: 1
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 HostnameFormatDefault: '%stackname%-novacompute-dvr-%index%' 15 HostnameFormatDefault: '%stackname%-novacompute-dvr-%index%'
13 RoleParametersDefault: 16 RoleParametersDefault:
14 TunedProfileName: "virtual-host" 17 TunedProfileName: "virtual-host"
diff --git a/roles/ComputeHCI.yaml b/roles/ComputeHCI.yaml
index 8e513b8..3483b85 100644
--- a/roles/ComputeHCI.yaml
+++ b/roles/ComputeHCI.yaml
@@ -5,10 +5,14 @@
5 description: | 5 description: |
6 Compute Node role hosting Ceph OSD too 6 Compute Node role hosting Ceph OSD too
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Tenant 9 subnet: internal_api_subnet
10 - Storage 10 Tenant:
11 - StorageMgmt 11 subnet: tenant_subnet
12 Storage:
13 subnet: storage_subnet
14 StorageMgmt:
15 subnet: storage_mgmt_subnet
12 RoleParametersDefault: 16 RoleParametersDefault:
13 TunedProfileName: "throughput-performance" 17 TunedProfileName: "throughput-performance"
14 ServicesDefault: 18 ServicesDefault:
diff --git a/roles/ComputeInstanceHA.yaml b/roles/ComputeInstanceHA.yaml
index b235d52..0bc5197 100644
--- a/roles/ComputeInstanceHA.yaml
+++ b/roles/ComputeInstanceHA.yaml
@@ -6,9 +6,12 @@
6 Compute Instance HA Node role to be used with -e environments/compute-instanceha.yaml 6 Compute Instance HA Node role to be used with -e environments/compute-instanceha.yaml
7 CountDefault: 1 7 CountDefault: 1
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 HostnameFormatDefault: '%stackname%-novacomputeiha-%index%' 15 HostnameFormatDefault: '%stackname%-novacomputeiha-%index%'
13 RoleParametersDefault: 16 RoleParametersDefault:
14 TunedProfileName: "virtual-host" 17 TunedProfileName: "virtual-host"
diff --git a/roles/ComputeLiquidio.yaml b/roles/ComputeLiquidio.yaml
index d79118b..2be1e33 100644
--- a/roles/ComputeLiquidio.yaml
+++ b/roles/ComputeLiquidio.yaml
@@ -6,9 +6,12 @@
6 Compute Node with Cavium Liquidio smart NIC 6 Compute Node with Cavium Liquidio smart NIC
7 CountDefault: 1 7 CountDefault: 1
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 networks_skip_config: 15 networks_skip_config:
13 - Tenant 16 - Tenant
14 HostnameFormatDefault: '%stackname%-lionovacompute-%index%' 17 HostnameFormatDefault: '%stackname%-lionovacompute-%index%'
diff --git a/roles/ComputeOvsDpdk.yaml b/roles/ComputeOvsDpdk.yaml
index f1892cf..471fb50 100644
--- a/roles/ComputeOvsDpdk.yaml
+++ b/roles/ComputeOvsDpdk.yaml
@@ -6,9 +6,12 @@
6 Compute OvS DPDK Role 6 Compute OvS DPDK Role
7 CountDefault: 1 7 CountDefault: 1
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 deprecated_nic_config_name: 'compute-dpdk.yaml' 15 deprecated_nic_config_name: 'compute-dpdk.yaml'
13 RoleParametersDefault: 16 RoleParametersDefault:
14 VhostuserSocketGroup: "hugetlbfs" 17 VhostuserSocketGroup: "hugetlbfs"
diff --git a/roles/ComputeOvsDpdkRT.yaml b/roles/ComputeOvsDpdkRT.yaml
index 5d1667b..7af4604 100644
--- a/roles/ComputeOvsDpdkRT.yaml
+++ b/roles/ComputeOvsDpdkRT.yaml
@@ -6,9 +6,12 @@
6 Compute OvS DPDK RealTime Role 6 Compute OvS DPDK RealTime Role
7 CountDefault: 1 7 CountDefault: 1
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 ImageDefault: overcloud-realtime-compute 15 ImageDefault: overcloud-realtime-compute
13 RoleParametersDefault: 16 RoleParametersDefault:
14 VhostuserSocketGroup: "hugetlbfs" 17 VhostuserSocketGroup: "hugetlbfs"
diff --git a/roles/ComputePPC64LE.yaml b/roles/ComputePPC64LE.yaml
index 378678b..989cc2a 100644
--- a/roles/ComputePPC64LE.yaml
+++ b/roles/ComputePPC64LE.yaml
@@ -6,9 +6,12 @@
6 Basic Compute Node role for ppc64le servers 6 Basic Compute Node role for ppc64le servers
7 CountDefault: 0 7 CountDefault: 0
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 HostnameFormatDefault: '%stackname%-novacomputeppc64le-%index%' 15 HostnameFormatDefault: '%stackname%-novacomputeppc64le-%index%'
13 ImageDefault: ppc64le-overcloud-full 16 ImageDefault: ppc64le-overcloud-full
14 RoleParametersDefault: 17 RoleParametersDefault:
diff --git a/roles/ComputeRealTime.yaml b/roles/ComputeRealTime.yaml
index af53314..335a2cb 100644
--- a/roles/ComputeRealTime.yaml
+++ b/roles/ComputeRealTime.yaml
@@ -9,9 +9,12 @@
9 accordingly to the hardware of the real-time compute nodes. 9 accordingly to the hardware of the real-time compute nodes.
10 CountDefault: 1 10 CountDefault: 1
11 networks: 11 networks:
12 - InternalApi 12 InternalApi:
13 - Tenant 13 subnet: internal_api_subnet
14 - Storage 14 Tenant:
15 subnet: tenant_subnet
16 Storage:
17 subnet: storage_subnet
15 HostnameFormatDefault: '%stackname%-computerealtime-%index%' 18 HostnameFormatDefault: '%stackname%-computerealtime-%index%'
16 ImageDefault: overcloud-realtime-compute 19 ImageDefault: overcloud-realtime-compute
17 RoleParametersDefault: 20 RoleParametersDefault:
diff --git a/roles/ComputeSriov.yaml b/roles/ComputeSriov.yaml
index f2a0f8a..6cace0c 100644
--- a/roles/ComputeSriov.yaml
+++ b/roles/ComputeSriov.yaml
@@ -6,9 +6,12 @@
6 Compute SR-IOV Role 6 Compute SR-IOV Role
7 CountDefault: 1 7 CountDefault: 1
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 RoleParametersDefault: 15 RoleParametersDefault:
13 TunedProfileName: "cpu-partitioning" 16 TunedProfileName: "cpu-partitioning"
14 ServicesDefault: 17 ServicesDefault:
diff --git a/roles/ComputeSriovRT.yaml b/roles/ComputeSriovRT.yaml
index 2975a93..70c9b78 100644
--- a/roles/ComputeSriovRT.yaml
+++ b/roles/ComputeSriovRT.yaml
@@ -6,9 +6,12 @@
6 Compute SR-IOV RealTime Role 6 Compute SR-IOV RealTime Role
7 CountDefault: 1 7 CountDefault: 1
8 networks: 8 networks:
9 - InternalApi 9 InternalApi:
10 - Tenant 10 subnet: internal_api_subnet
11 - Storage 11 Tenant:
12 subnet: tenant_subnet
13 Storage:
14 subnet: storage_subnet
12 ImageDefault: overcloud-realtime-compute 15 ImageDefault: overcloud-realtime-compute
13 RoleParametersDefault: 16 RoleParametersDefault:
14 TunedProfileName: "realtime-virtual-host" 17 TunedProfileName: "realtime-virtual-host"
diff --git a/roles/Controller.yaml b/roles/Controller.yaml
index d13e5e4..1d54caf 100644
--- a/roles/Controller.yaml
+++ b/roles/Controller.yaml
@@ -10,11 +10,16 @@
10 - primary 10 - primary
11 - controller 11 - controller
12 networks: 12 networks:
13 - External 13 External:
14 - InternalApi 14 subnet: external_subnet
15 - Storage 15 InternalApi:
16 - StorageMgmt 16 subnet: internal_api_subnet
17 - Tenant 17 Storage:
18 subnet: storage_subnet
19 StorageMgmt:
20 subnet: storage_mgmt_subnet
21 Tenant:
22 subnet: tenant_subnet
18 # For systems with both IPv4 and IPv6, you may specify a gateway network for 23 # For systems with both IPv4 and IPv6, you may specify a gateway network for
19 # each, such as ['ControlPlane', 'External'] 24 # each, such as ['ControlPlane', 'External']
20 default_route_networks: ['External'] 25 default_route_networks: ['External']
diff --git a/roles/ControllerAllNovaStandalone.yaml b/roles/ControllerAllNovaStandalone.yaml
index 6b66f93..ed81443 100644
--- a/roles/ControllerAllNovaStandalone.yaml
+++ b/roles/ControllerAllNovaStandalone.yaml
@@ -10,11 +10,16 @@
10 - primary 10 - primary
11 - controller 11 - controller
12 networks: 12 networks:
13 - External 13 External:
14 - InternalApi 14 subnet: external_subnet
15 - Storage 15 InternalApi:
16 - StorageMgmt 16 subnet: internal_api_subnet
17 - Tenant 17 Storage:
18 subnet: storage_subnet
19 StorageMgmt:
20 subnet: storage_mgmt_subnet
21 Tenant:
22 subnet: tenant_subnet
18 default_route_networks: ['External'] 23 default_route_networks: ['External']
19 HostnameFormatDefault: '%stackname%-controller-%index%' 24 HostnameFormatDefault: '%stackname%-controller-%index%'
20 ServicesDefault: 25 ServicesDefault:
diff --git a/roles/ControllerNoCeph.yaml b/roles/ControllerNoCeph.yaml
index 5a8028e..7f8cd28 100644
--- a/roles/ControllerNoCeph.yaml
+++ b/roles/ControllerNoCeph.yaml
@@ -10,11 +10,16 @@
10 - primary 10 - primary
11 - controller 11 - controller
12 networks: 12 networks:
13 - External 13 External:
14 - InternalApi 14 subnet: external_subnet
15 - Storage 15 InternalApi:
16 - StorageMgmt 16 subnet: internal_api_subnet
17 - Tenant 17 Storage:
18 subnet: storage_subnet
19 StorageMgmt:
20 subnet: storage_mgmt_subnet
21 Tenant:
22 subnet: tenant_subnet
18 default_route_networks: ['External'] 23 default_route_networks: ['External']
19 HostnameFormatDefault: '%stackname%-controller-no-ceph-%index%' 24 HostnameFormatDefault: '%stackname%-controller-no-ceph-%index%'
20 # Deprecated & backward-compatible values (FIXME: Make parameters consistent) 25 # Deprecated & backward-compatible values (FIXME: Make parameters consistent)
diff --git a/roles/ControllerNovaStandalone.yaml b/roles/ControllerNovaStandalone.yaml
index 5e43152..ab8ff2c 100644
--- a/roles/ControllerNovaStandalone.yaml
+++ b/roles/ControllerNovaStandalone.yaml
@@ -9,11 +9,16 @@
9 - primary 9 - primary
10 - controller 10 - controller
11 networks: 11 networks:
12 - External 12 External:
13 - InternalApi 13 subnet: external_subnet
14 - Storage 14 InternalApi:
15 - StorageMgmt 15 subnet: interanl_api_subnet
16 - Tenant 16 Storage:
17 subnet: storage_subnet
18 StorageMgmt:
19 subnet: storage_mgmt_subnet
20 Tenant:
21 subnet: tenant_subnet
17 default_route_networks: ['External'] 22 default_route_networks: ['External']
18 HostnameFormatDefault: '%stackname%-controller-%index%' 23 HostnameFormatDefault: '%stackname%-controller-%index%'
19 ServicesDefault: 24 ServicesDefault:
diff --git a/roles/ControllerOpenstack.yaml b/roles/ControllerOpenstack.yaml
index 1d2be05..84a29aa 100644
--- a/roles/ControllerOpenstack.yaml
+++ b/roles/ControllerOpenstack.yaml
@@ -10,11 +10,16 @@
10 - primary 10 - primary
11 - controller 11 - controller
12 networks: 12 networks:
13 - External 13 External:
14 - InternalApi 14 subnet: external_subnet
15 - Storage 15 InternalApi:
16 - StorageMgmt 16 subnet: internal_api_subnet
17 - Tenant 17 Storage:
18 subnet: storage_subnet
19 StorageMgmt:
20 subnet: storage_mgmt_subnet
21 Tenant:
22 subnet: tenant_subnet
18 default_route_networks: ['External'] 23 default_route_networks: ['External']
19 HostnameFormatDefault: '%stackname%-controller-%index%' 24 HostnameFormatDefault: '%stackname%-controller-%index%'
20 ServicesDefault: 25 ServicesDefault:
diff --git a/roles/ControllerStorageNfs.yaml b/roles/ControllerStorageNfs.yaml
index 1d1cd93..fe83651 100644
--- a/roles/ControllerStorageNfs.yaml
+++ b/roles/ControllerStorageNfs.yaml
@@ -13,12 +13,18 @@
13 - primary 13 - primary
14 - controller 14 - controller
15 networks: 15 networks:
16 - External 16 External:
17 - InternalApi 17 subnet: external_subnet
18 - Storage 18 InternalApi:
19 - StorageMgmt 19 subnet: internal_api_subnet
20 - StorageNFS 20 Storage:
21 - Tenant 21 subnet: storage_subnet
22 StorageMgmt:
23 subnet: storage_mgmt_subnet
24 StorageNFS:
25 subnet: storage_nfs_subnet
26 Tenant:
27 subnet: tenant_subnet
22 HostnameFormatDefault: '%stackname%-controller-%index%' 28 HostnameFormatDefault: '%stackname%-controller-%index%'
23 # Deprecated & backward-compatible values (FIXME: Make parameters consistent) 29 # Deprecated & backward-compatible values (FIXME: Make parameters consistent)
24 # Set uses_deprecated_params to True if any deprecated params are used. 30 # Set uses_deprecated_params to True if any deprecated params are used.
diff --git a/roles/Database.yaml b/roles/Database.yaml
index 7b694cf..92d0323 100644
--- a/roles/Database.yaml
+++ b/roles/Database.yaml
@@ -5,7 +5,8 @@
5 description: | 5 description: |
6 Standalone database role with the database being managed via Pacemaker 6 Standalone database role with the database being managed via Pacemaker
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 subnet: internal_api_subnet
9 HostnameFormatDefault: '%stackname%-database-%index%' 10 HostnameFormatDefault: '%stackname%-database-%index%'
10 ServicesDefault: 11 ServicesDefault:
11 - OS::TripleO::Services::Aide 12 - OS::TripleO::Services::Aide
diff --git a/roles/HciCephAll.yaml b/roles/HciCephAll.yaml
index 552d652..543c551 100644
--- a/roles/HciCephAll.yaml
+++ b/roles/HciCephAll.yaml
@@ -5,10 +5,14 @@
5 description: | 5 description: |
6 HCI Full Stack Role (OSD + MON + Nova + RGW + MDS + MGR + RBD Mirroring) 6 HCI Full Stack Role (OSD + MON + Nova + RGW + MDS + MGR + RBD Mirroring)
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Tenant 9 subnet: internal_api_subnet
10 - Storage 10 Tenant:
11 - StorageMgmt 11 subnet: tenant_subnet
12 Storage:
13 subnet: storage_subnet
14 StorageMgmt:
15 subnet: storage_mgmt_subnet
12 HostnameFormatDefault: '%stackname%-hci-ceph-all-%index%' 16 HostnameFormatDefault: '%stackname%-hci-ceph-all-%index%'
13 RoleParametersDefault: 17 RoleParametersDefault:
14 TunedProfileName: "throughput-performance" 18 TunedProfileName: "throughput-performance"
diff --git a/roles/HciCephFile.yaml b/roles/HciCephFile.yaml
index 3fa6a38..f23a70c 100644
--- a/roles/HciCephFile.yaml
+++ b/roles/HciCephFile.yaml
@@ -5,10 +5,14 @@
5 description: | 5 description: |
6 HCI Scale-out File Role (OSD + Nova + MDS) 6 HCI Scale-out File Role (OSD + Nova + MDS)
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Tenant 9 subnet: internal_api_subnet
10 - Storage 10 Tenant:
11 - StorageMgmt 11 subnet: tenant_subnet
12 Storage:
13 subnet: storage_subnet
14 StorageMgmt:
15 subnet: storage_mgmt_subnet
12 HostnameFormatDefault: '%stackname%-hci-ceph-file-%index%' 16 HostnameFormatDefault: '%stackname%-hci-ceph-file-%index%'
13 RoleParametersDefault: 17 RoleParametersDefault:
14 TunedProfileName: "throughput-performance" 18 TunedProfileName: "throughput-performance"
diff --git a/roles/HciCephMon.yaml b/roles/HciCephMon.yaml
index c3290c0..a25fa99 100644
--- a/roles/HciCephMon.yaml
+++ b/roles/HciCephMon.yaml
@@ -5,10 +5,14 @@
5 description: | 5 description: |
6 HCI Scale-out Block Full Role (OSD + MON + MGR + Nova) 6 HCI Scale-out Block Full Role (OSD + MON + MGR + Nova)
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Tenant 9 subnet: internal_api_subnet
10 - Storage 10 Tenant:
11 - StorageMgmt 11 subnet: tenant_subnet
12 Storage:
13 subnet: storage_subnet
14 StorageMgmt:
15 subnet: storage_mgmt_subnet
12 HostnameFormatDefault: '%stackname%-hci-ceph-mon-%index%' 16 HostnameFormatDefault: '%stackname%-hci-ceph-mon-%index%'
13 RoleParametersDefault: 17 RoleParametersDefault:
14 TunedProfileName: "throughput-performance" 18 TunedProfileName: "throughput-performance"
diff --git a/roles/HciCephObject.yaml b/roles/HciCephObject.yaml
index ccf5701..5420bc0 100644
--- a/roles/HciCephObject.yaml
+++ b/roles/HciCephObject.yaml
@@ -5,10 +5,14 @@
5 description: | 5 description: |
6 HCI Scale-out Object Role (OSD + Nova + RGW) 6 HCI Scale-out Object Role (OSD + Nova + RGW)
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Tenant 9 subnet: internal_api_subnet
10 - Storage 10 Tenant:
11 - StorageMgmt 11 subnet: tenant_subnet
12 Storage:
13 subnet: storage_subnet
14 StorageMgmt:
15 subnet: storage_mgmt_subnet
12 HostnameFormatDefault: '%stackname%-hci-ceph-object-%index%' 16 HostnameFormatDefault: '%stackname%-hci-ceph-object-%index%'
13 RoleParametersDefault: 17 RoleParametersDefault:
14 TunedProfileName: "throughput-performance" 18 TunedProfileName: "throughput-performance"
diff --git a/roles/IronicConductor.yaml b/roles/IronicConductor.yaml
index 90ba297..46992cf 100644
--- a/roles/IronicConductor.yaml
+++ b/roles/IronicConductor.yaml
@@ -5,8 +5,10 @@
5 description: | 5 description: |
6 Ironic Conductor node role 6 Ironic Conductor node role
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Storage 9 subnet: internal_api_subnet
10 Storage:
11 subnet: storage_subnet
10 HostnameFormatDefault: '%stackname%-ironic-%index%' 12 HostnameFormatDefault: '%stackname%-ironic-%index%'
11 ServicesDefault: 13 ServicesDefault:
12 - OS::TripleO::Services::Aide 14 - OS::TripleO::Services::Aide
diff --git a/roles/Messaging.yaml b/roles/Messaging.yaml
index f4f0794..a5207d9 100644
--- a/roles/Messaging.yaml
+++ b/roles/Messaging.yaml
@@ -5,7 +5,8 @@
5 description: | 5 description: |
6 Standalone messaging role with backends being managed via Pacemaker 6 Standalone messaging role with backends being managed via Pacemaker
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 subnet: internal_api_subnet
9 HostnameFormatDefault: '%stackname%-messaging-%index%' 10 HostnameFormatDefault: '%stackname%-messaging-%index%'
10 ServicesDefault: 11 ServicesDefault:
11 - OS::TripleO::Services::Aide 12 - OS::TripleO::Services::Aide
diff --git a/roles/Networker.yaml b/roles/Networker.yaml
index b73d6cd..33ead99 100644
--- a/roles/Networker.yaml
+++ b/roles/Networker.yaml
@@ -5,8 +5,10 @@
5 description: | 5 description: |
6 Standalone networking role to run Neutron agents on their own. 6 Standalone networking role to run Neutron agents on their own.
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Tenant 9 subnet: internal_api_subnet
10 Tenant:
11 subnet: tenant_subnet
10 HostnameFormatDefault: '%stackname%-networker-%index%' 12 HostnameFormatDefault: '%stackname%-networker-%index%'
11 ServicesDefault: 13 ServicesDefault:
12 - OS::TripleO::Services::Aide 14 - OS::TripleO::Services::Aide
diff --git a/roles/Novacontrol.yaml b/roles/Novacontrol.yaml
index 5cbf623..5beaf26 100644
--- a/roles/Novacontrol.yaml
+++ b/roles/Novacontrol.yaml
@@ -5,8 +5,10 @@
5 description: | 5 description: |
6 Standalone nova-control role to run Nova control agents on their own. 6 Standalone nova-control role to run Nova control agents on their own.
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Storage 9 subnet: internal_api_subnet
10 Storage:
11 subnet: storage_subnet
10 HostnameFormatDefault: '%stackname%-novacontrol-%index%' 12 HostnameFormatDefault: '%stackname%-novacontrol-%index%'
11 ServicesDefault: 13 ServicesDefault:
12 - OS::TripleO::Services::AuditD 14 - OS::TripleO::Services::AuditD
diff --git a/roles/ObjectStorage.yaml b/roles/ObjectStorage.yaml
index 055a4d9..f75da52 100644
--- a/roles/ObjectStorage.yaml
+++ b/roles/ObjectStorage.yaml
@@ -5,9 +5,12 @@
5 description: | 5 description: |
6 Swift Object Storage node role 6 Swift Object Storage node role
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Storage 9 subnet: internal_api_subnet
10 - StorageMgmt 10 Storage:
11 subnet: storage_subnet
12 StorageMgmt:
13 subnet: storage_mgmt_subnet
11 # Deprecated & backward-compatible values (FIXME: Make parameters consistent) 14 # Deprecated & backward-compatible values (FIXME: Make parameters consistent)
12 # Set uses_deprecated_params to True if any deprecated params are used. 15 # Set uses_deprecated_params to True if any deprecated params are used.
13 uses_deprecated_params: True 16 uses_deprecated_params: True
diff --git a/roles/OpenShiftAllInOne.yaml b/roles/OpenShiftAllInOne.yaml
index 69520b1..f3e4919 100644
--- a/roles/OpenShiftAllInOne.yaml
+++ b/roles/OpenShiftAllInOne.yaml
@@ -13,9 +13,12 @@
13 - controller 13 - controller
14 - openshift 14 - openshift
15 networks: 15 networks:
16 - External 16 External:
17 - InternalApi 17 subnet: external_subnet
18 - Storage 18 InternalApi:
19 subnet: internal_api_subnet
20 Storage:
21 subnet: storage_subnet
19 # For systems with both IPv4 and IPv6, you may specify a gateway network for 22 # For systems with both IPv4 and IPv6, you may specify a gateway network for
20 # each, such as ['ControlPlane', 'External'] 23 # each, such as ['ControlPlane', 'External']
21 default_route_networks: ['External'] 24 default_route_networks: ['External']
diff --git a/roles/OpenShiftInfra.yaml b/roles/OpenShiftInfra.yaml
index 3781fe4..6569aa6 100644
--- a/roles/OpenShiftInfra.yaml
+++ b/roles/OpenShiftInfra.yaml
@@ -11,8 +11,10 @@
11 tags: 11 tags:
12 - openshift 12 - openshift
13 networks: 13 networks:
14 - InternalApi 14 InternalApi:
15 - Storage 15 subnet: internal_api_subnet
16 Storage:
17 subnet: storage_subnet
16 # For systems with both IPv4 and IPv6, you may specify a gateway network for 18 # For systems with both IPv4 and IPv6, you may specify a gateway network for
17 # each, such as ['ControlPlane', 'External'] 19 # each, such as ['ControlPlane', 'External']
18 default_route_networks: ['ControlPlane'] 20 default_route_networks: ['ControlPlane']
diff --git a/roles/OpenShiftMaster.yaml b/roles/OpenShiftMaster.yaml
index c16302a..a657ec8 100644
--- a/roles/OpenShiftMaster.yaml
+++ b/roles/OpenShiftMaster.yaml
@@ -13,9 +13,12 @@
13 - controller 13 - controller
14 - openshift 14 - openshift
15 networks: 15 networks:
16 - External 16 External:
17 - InternalApi 17 subnet: external_subnet
18 - Storage 18 InternalApi:
19 subnet: internal_api_subnet
20 Storage:
21 subnet: storage_subnet
19 # For systems with both IPv4 and IPv6, you may specify a gateway network for 22 # For systems with both IPv4 and IPv6, you may specify a gateway network for
20 # each, such as ['ControlPlane', 'External'] 23 # each, such as ['ControlPlane', 'External']
21 default_route_networks: ['External'] 24 default_route_networks: ['External']
diff --git a/roles/OpenShiftWorker.yaml b/roles/OpenShiftWorker.yaml
index 3c4bd2f..572010d 100644
--- a/roles/OpenShiftWorker.yaml
+++ b/roles/OpenShiftWorker.yaml
@@ -11,8 +11,10 @@
11 tags: 11 tags:
12 - openshift 12 - openshift
13 networks: 13 networks:
14 - InternalApi 14 InternalApi:
15 - Storage 15 subnet: internal_api_subnet
16 Storage:
17 subnet: storage_subnet
16 # For systems with both IPv4 and IPv6, you may specify a gateway network for 18 # For systems with both IPv4 and IPv6, you may specify a gateway network for
17 # each, such as ['ControlPlane', 'External'] 19 # each, such as ['ControlPlane', 'External']
18 default_route_networks: ['ControlPlane'] 20 default_route_networks: ['ControlPlane']
diff --git a/roles/Standalone.yaml b/roles/Standalone.yaml
index cbfcc1f..9b70024 100644
--- a/roles/Standalone.yaml
+++ b/roles/Standalone.yaml
@@ -12,11 +12,16 @@
12 - primary 12 - primary
13 - controller 13 - controller
14 networks: 14 networks:
15 - External 15 External:
16 - InternalApi 16 subnet: external_subnet
17 - Storage 17 InternalApi:
18 - StorageMgmt 18 subnet: internal_api_subnet
19 - Tenant 19 Storage:
20 subnet: storage_subnet
21 StorageMgmt:
22 subnet: storage_mgmt_subnet
23 Tenant:
24 subnet: tenant_subnet
20 disable_constraints: True 25 disable_constraints: True
21 ServicesDefault: 26 ServicesDefault:
22 - OS::TripleO::Services::Aide 27 - OS::TripleO::Services::Aide
diff --git a/roles/Telemetry.yaml b/roles/Telemetry.yaml
index ca7ceb3..fd2019a 100644
--- a/roles/Telemetry.yaml
+++ b/roles/Telemetry.yaml
@@ -5,8 +5,10 @@
5 description: | 5 description: |
6 Telemetry role that has all the telemetry services. 6 Telemetry role that has all the telemetry services.
7 networks: 7 networks:
8 - InternalApi 8 InternalApi:
9 - Storage 9 subnet: internal_api_subnet
10 Storage:
11 subnet: storage_subnet
10 HostnameFormatDefault: '%stackname%-telemetry-%index%' 12 HostnameFormatDefault: '%stackname%-telemetry-%index%'
11 ServicesDefault: 13 ServicesDefault:
12 - OS::TripleO::Services::Aide 14 - OS::TripleO::Services::Aide
diff --git a/roles/Undercloud.yaml b/roles/Undercloud.yaml
index aa11222..f3f9315 100644
--- a/roles/Undercloud.yaml
+++ b/roles/Undercloud.yaml
@@ -11,11 +11,16 @@
11 - primary 11 - primary
12 - controller 12 - controller
13 networks: 13 networks:
14 - External 14 External:
15 - InternalApi 15 subnet: external_subnet
16 - Storage 16 InternalApi:
17 - StorageMgmt 17 subnet: internal_api_subnet
18 - Tenant 18 Storage:
19 subnet: storage_subnet
20 StorageMgmt:
21 subnet: storage_mgmt_subnet
22 Tenant:
23 subnet: tenant_subnet
19 ServicesDefault: 24 ServicesDefault:
20 - OS::TripleO::Services::Aide 25 - OS::TripleO::Services::Aide
21 - OS::TripleO::Services::AodhApi 26 - OS::TripleO::Services::AodhApi
diff --git a/roles_data.yaml b/roles_data.yaml
index b214b2e..6a7a741 100644
--- a/roles_data.yaml
+++ b/roles_data.yaml
@@ -13,11 +13,16 @@
13 - primary 13 - primary
14 - controller 14 - controller
15 networks: 15 networks:
16 - External 16 External:
17 - InternalApi 17 subnet: external_subnet
18 - Storage 18 InternalApi:
19 - StorageMgmt 19 subnet: internal_api_subnet
20 - Tenant 20 Storage:
21 subnet: storage_subnet
22 StorageMgmt:
23 subnet: storage_mgmt_subnet
24 Tenant:
25 subnet: tenant_subnet
21 # For systems with both IPv4 and IPv6, you may specify a gateway network for 26 # For systems with both IPv4 and IPv6, you may specify a gateway network for
22 # each, such as ['ControlPlane', 'External'] 27 # each, such as ['ControlPlane', 'External']
23 default_route_networks: ['External'] 28 default_route_networks: ['External']
@@ -193,9 +198,12 @@
193 Basic Compute Node role 198 Basic Compute Node role
194 CountDefault: 1 199 CountDefault: 1
195 networks: 200 networks:
196 - InternalApi 201 InternalApi:
197 - Tenant 202 subnet: internal_api_subnet
198 - Storage 203 Tenant:
204 subnet: tenant_subnet
205 Storage:
206 subnet: storage_subnet
199 HostnameFormatDefault: '%stackname%-novacompute-%index%' 207 HostnameFormatDefault: '%stackname%-novacompute-%index%'
200 RoleParametersDefault: 208 RoleParametersDefault:
201 TunedProfileName: "virtual-host" 209 TunedProfileName: "virtual-host"
@@ -265,9 +273,12 @@
265 description: | 273 description: |
266 Cinder Block Storage node role 274 Cinder Block Storage node role
267 networks: 275 networks:
268 - InternalApi 276 InternalApi:
269 - Storage 277 subnet: internal_api_subnet
270 - StorageMgmt 278 Storage:
279 subnet: storage_subnet
280 StorageMgmt:
281 subnet: storage_mgmt_subnet
271 uses_deprecated_params: False 282 uses_deprecated_params: False
272 deprecated_nic_config_name: 'cinder-storage.yaml' 283 deprecated_nic_config_name: 'cinder-storage.yaml'
273 ServicesDefault: 284 ServicesDefault:
@@ -307,9 +318,12 @@
307 description: | 318 description: |
308 Swift Object Storage node role 319 Swift Object Storage node role
309 networks: 320 networks:
310 - InternalApi 321 InternalApi:
311 - Storage 322 subnet: internal_api_subnet
312 - StorageMgmt 323 Storage:
324 subnet: storage_subnet
325 StorageMgmt:
326 subnet: storage_mgmt_subnet
313 # Deprecated & backward-compatible values (FIXME: Make parameters consistent) 327 # Deprecated & backward-compatible values (FIXME: Make parameters consistent)
314 # Set uses_deprecated_params to True if any deprecated params are used. 328 # Set uses_deprecated_params to True if any deprecated params are used.
315 uses_deprecated_params: True 329 uses_deprecated_params: True
@@ -355,8 +369,10 @@
355 description: | 369 description: |
356 Ceph OSD Storage node role 370 Ceph OSD Storage node role
357 networks: 371 networks:
358 - Storage 372 Storage:
359 - StorageMgmt 373 subnet: storage_subnet
374 StorageMgmt:
375 subnet: storage_mgmt_subnet
360 uses_deprecated_params: False 376 uses_deprecated_params: False
361 deprecated_nic_config_name: 'ceph-storage.yaml' 377 deprecated_nic_config_name: 'ceph-storage.yaml'
362 ServicesDefault: 378 ServicesDefault:
diff --git a/roles_data_undercloud.yaml b/roles_data_undercloud.yaml
index 0b2b85f..d2289d5 100644
--- a/roles_data_undercloud.yaml
+++ b/roles_data_undercloud.yaml
@@ -14,11 +14,16 @@
14 - primary 14 - primary
15 - controller 15 - controller
16 networks: 16 networks:
17 - External 17 External:
18 - InternalApi 18 subnet: external_subnet
19 - Storage 19 InternalApi:
20 - StorageMgmt 20 subnet: internal_api_subnet
21 - Tenant 21 Storage:
22 subnet: storage_subnet
23 StorageMgmt:
24 subnet: storage_mgmt_subnet
25 Tenant:
26 subnet: tenant_subnet
22 ServicesDefault: 27 ServicesDefault:
23 - OS::TripleO::Services::Aide 28 - OS::TripleO::Services::Aide
24 - OS::TripleO::Services::AodhApi 29 - OS::TripleO::Services::AodhApi
diff --git a/tools/yaml-validate.py b/tools/yaml-validate.py
index d0fbce6..a8690a8 100755
--- a/tools/yaml-validate.py
+++ b/tools/yaml-validate.py
@@ -478,7 +478,7 @@ def validate_multiarch_compute_roles(role_filename, role_tpl):
478 errors = 0 478 errors = 0
479 roles_dir = os.path.dirname(role_filename) 479 roles_dir = os.path.dirname(role_filename)
480 compute_services = set(role_tpl[0].get('ServicesDefault', [])) 480 compute_services = set(role_tpl[0].get('ServicesDefault', []))
481 compute_networks = set(role_tpl[0].get('networks', [])) 481 compute_networks = role_tpl[0].get('networks', [])
482 482
483 for arch in ['ppc64le']: 483 for arch in ['ppc64le']:
484 arch_filename = os.path.join(roles_dir, 484 arch_filename = os.path.join(roles_dir,
@@ -493,7 +493,7 @@ def validate_multiarch_compute_roles(role_filename, role_tpl):
493 print('ERROR problems with: %s' % (','.join(compute_services.symmetric_difference(arch_services)))) 493 print('ERROR problems with: %s' % (','.join(compute_services.symmetric_difference(arch_services))))
494 errors = 1 494 errors = 1
495 495
496 arch_networks = set(arch_tpl[0].get('networks', [])) 496 arch_networks = arch_tpl[0].get('networks', [])
497 if compute_networks != arch_networks: 497 if compute_networks != arch_networks:
498 print('ERROR networks in %s and %s do not match' % 498 print('ERROR networks in %s and %s do not match' %
499 (role_filename, arch_filename)) 499 (role_filename, arch_filename))