Home > Storage > PowerFlex > White Papers > Red Hat OpenStack Platform 16.1 with Dell EMC PowerFlex family > Custom yamls for OpenStack overcloud deployment
resource_registry:
OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/custom-nic/controller.yaml
OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/custom-nic/compute.yaml
parameter_defaults:
# Gateway router for the provisioning network (or Undercloud IP)
ControlPlaneDefaultRoute: 192.x.x.x
EC2MetadataIp: 192.x.x.x # Generally the IP of the Undercloud
StorageNetCidr: '172.16.2.0/24'
StorageAllocationPools: [{'start': '172.16.2.50', 'end': '172.16.2.250'}]
StorageNetworkVlanID: 320
StorageMgmtNetCidr: '172.16.3.0/24'
StorageMgmtAllocationPools: [{'start': '172.16.3.50', 'end': '172.16.3.250'}]
StorageMgmtNetworkVlanID: 330
InternalApiNetCidr: '172.16.1.0/24'
InternalApiAllocationPools: [{'start': '172.16.1.50', 'end': '172.16.1.250'}]
InternalApiNetworkVlanID: 310
TenantNetCidr: '172.16.4.0/24'
TenantAllocationPools: [{'start': '172.16.4.50', 'end': '172.16.4.250'}]
TenantNetworkVlanID: 340
TenantNetPhysnetMtu: 1500
ExternalNetCidr: '192.168.10.0/24'
ExternalAllocationPools: [{'start': '192.168.10.200', 'end': '192.168.10.220'}]
ExternalInterfaceDefaultRoute: '192.168.10.1'
ExternalNetworkVlanID: 105
DnsServers: ["x.x.x.x","x.x.x.x"]
NeutronNetworkType: 'geneve,vlan'
NeutronNetworkVLANRanges: 'datacentre:1:1000'
BondInterfaceOvsOptions: "bond_mode=active-backup"
- name: Storage
vip: true
vlan: 320
name_lower: storage
ip_subnet: '172.16.2.0/24'
allocation_pools: [{'start': '172.16.2.50', 'end': '172.16.2.250'}]
mtu: 1500
- name: StorageMgmt
name_lower: storage_mgmt
vip: true
vlan: 330
ip_subnet: '172.16.3.0/24'
allocation_pools: [{'start': '172.16.3.50', 'end': '172.16.3.250'}]
mtu: 1500
- name: InternalApi
name_lower: internal_api
vip: true
vlan: 310
ip_subnet: '172.16.1.0/24'
allocation_pools: [{'start': '172.16.1.50', 'end': '172.16.1.250'}]
mtu: 1500
- name: Tenant
vip: false # Tenant network does not use VIPs
name_lower: tenant
vlan: 340
ip_subnet: '172.16.4.0/24'
allocation_pools: [{'start': '172.16.4.50', 'end': '172.16.4.250'}]
mtu: 1500
- name: External
vip: true
name_lower: external
vlan: 105
ip_subnet: '192.168.10.0/24'
allocation_pools: [{'start': '192.168.10.200', 'end': '192.168.10.220'}]
gateway_ip: '192.168.10.1'
mtu: 1500
- name: Management
enabled: true
vip: false # Management network does not use VIPs
name_lower: management
vlan: 350
ip_subnet: '172.16.5.0/24'
allocation_pools: [{'start': '172.16.5.50', 'end': '172.16.5.250'}]
gateway_ip: '172.16.5.1'
mtu: 1500
heat_template_version: rocky
description: >
Software Config to drive os-net-config to configure VLANs for the Compute role.
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ControlPlaneSubnetCidr:
default: ''
description: >
The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute:
default: ''
description: The default route of the control plane network.
type: string
ControlPlaneStaticRoutes:
default: []
description: >
Routes for the ctlplane network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
ControlPlaneMtu:
default: 1500
description: The maximum transmission unit size(in bytes)
type: number
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMtu:
default: 1500
description: The maximum transmission unit size (in bytes)
type: number
StorageInterfaceRoutes:
default: []
description: >
Routes for the storage network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal_api network
type: string
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
InternalApiMtu:
default: 1500
description: The maximum transmission unit size (in bytes)
type: number
InternalApiInterfaceRoutes:
default: []
description: >
Routes for the internal_api network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
TenantMtu:
default: 1500
description: The maximum transmission unit size(in bytes)
type: number
TenantInterfaceRoutes:
default: []
description: >
Routes for the tenant network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
DnsServers: # Override this via parameter_defaults
default: []
description: >
DNS servers to use for the Overcloud (2 max for some implementations). If not set the nameservers configured in the ctlplane subnet's
dns_nameservers attribute will be used.
type: comma_delimited_list
DnsSearchDomains: # Override this via parameter_defaults
default: []
description: A list of DNS search domains to be added (in order) to resolv.conf.
type: comma_delimited_list
resources:
MinViableMtu:
type: OS::Heat::Value
properties:
type: number
value:
yaql:
expression: $.data.max()
data:
- {get_param: ControlPlaneMtu}
- {get_param: StorageMtu}
- {get_param: InternalApiMtu}
- {get_param: TenantMtu}
OsNetConfigImpl:
type: OS::Heat::SoftwareConfig
properties:
group: script
config:
str_replace:
template:
get_file: run-os-net-config.sh
params:
$network_config:
network_config:
- type: interface
name: nic1
mtu:
get_attr: [MinViableMtu, value]
use_dhcp: false
dns_servers:
get_param: DnsServers
domain:
get_param: DnsSearchDomains
addresses:
- ip_netmask:
list_join:
- /
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
- type: ovs_bridge
name: br-ex
dns_server:
get_param: DnsServers
use_dhcp: false
members:
- type: interface
name: nic2
mtu:
get_attr: [MinViableMtu, value]
# force the MAC address of the bridge to this interface
primary: true
- type: vlan
mtu:
get_param: StorageMtu
vlan_id:
get_param: StorageNetworkVlanID
addresses:
- ip_netmask:
get_param: StorageIpSubnet
routes:
list_concat_unique:
- get_param: StorageInterfaceRoutes
- type: vlan
mtu:
get_param: InternalApiMtu
vlan_id:
get_param: InternalApiNetworkVlanID
addresses:
- ip_netmask:
get_param: InternalApiIpSubnet
routes:
list_concat_unique:
- get_param: InternalApiInterfaceRoutes
- type: vlan
mtu:
get_param: TenantMtu
vlan_id:
get_param: TenantNetworkVlanID
addresses:
- ip_netmask:
get_param: TenantIpSubnet
routes:
list_concat_unique:
- get_param: TenantInterfaceRoutes
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value:
get_resource: OsNetConfigImpl
heat_template_version: rocky
description: >
Software Config to drive os-net-config to configure multiple interfaces for the Controller role.
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ControlPlaneSubnetCidr:
default: ''
description: >
The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute:
default: ''
description: The default route of the control plane network.
type: string
ControlPlaneStaticRoutes:
default: []
description: >
Routes for the ctlplane network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
ControlPlaneMtu:
default: 1500
description: The maximum transmission unit size(in bytes)
type: number
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMtu:
default: 1500
description: The maximum transmission unit size(in bytes)
type: number
StorageInterfaceRoutes:
default: []
description: >
Routes for the storage network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage_mgmt network
type: string
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage_mgmt network traffic.
type: number
StorageMgmtMtu:
default: 1500
description: The maximum transmission unit size(in bytes)
type: number
StorageMgmtInterfaceRoutes:
default: []
description: >
Routes for the storage_mgmt network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal_api network
type: string
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
InternalApiMtu:
default: 1500
description: The maximum transmission unit size(in bytes)
type: number
InternalApiInterfaceRoutes:
default: []
description: >
Routes for the internal_api network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
TenantMtu:
default: 1500
description: The maximum transmission unit size(in bytes)
type: number
TenantInterfaceRoutes:
default: []
description: >
Routes for the tenant network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
ExternalMtu:
default: 1500
description: The maximum transmission unit size(in bytes)
type: number
ExternalInterfaceDefaultRoute:
default: ''
description: default route for the external network
type: string
ExternalInterfaceRoutes:
default: []
description: >
Routes for the external network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.
type: json
DnsServers: # Override this via parameter_defaults
default: []
description: >
DNS servers to use for the Overcloud (2 max for some implementations). If not set the nameservers configured in the ctlplane subnet's dns_nameservers attribute will be used.
type: comma_delimited_list
DnsSearchDomains: # Override this via parameter_defaults
default: []
description: A list of DNS search domains to be added (in order) to resolv.conf.
type: comma_delimited_list
resources:
OsNetConfigImpl:
type: OS::Heat::SoftwareConfig
properties:
group: script
config:
str_replace:
template:
get_file: run-os-net-config.sh
params:
$network_config:
network_config:
- type: interface
name: nic1
mtu:
get_param: ControlPlaneMtu
use_dhcp: false
dns_servers:
get_param: DnsServers
domain:
get_param: DnsSearchDomains
addresses:
- ip_netmask:
list_join:
- /
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
- type: interface
name: nic2
mtu:
get_param: StorageMtu
use_dhcp: false
addresses:
- ip_netmask:
get_param: StorageIpSubnet
routes:
list_concat_unique:
- get_param: StorageInterfaceRoutes
- type: interface
name: nic3
mtu:
get_param: StorageMgmtMtu
use_dhcp: false
addresses:
- ip_netmask:
get_param: StorageMgmtIpSubnet
routes:
list_concat_unique:
- get_param: StorageMgmtInterfaceRoutes
- type: interface
name: nic4
mtu:
get_param: InternalApiMtu
use_dhcp: false
addresses:
- ip_netmask:
get_param: InternalApiIpSubnet
routes:
list_concat_unique:
- get_param: InternalApiInterfaceRoutes
- type: ovs_bridge
name: br-tenant
mtu:
get_param: TenantMtu
dns_servers:
get_param: DnsServers
use_dhcp: false
addresses:
- ip_netmask:
get_param: TenantIpSubnet
routes:
list_concat_unique:
- get_param: TenantInterfaceRoutes
members:
- type: interface
name: nic5
mtu:
get_param: TenantMtu
use_dhcp: false
primary: true
- type: ovs_bridge
name: br_ext
mtu:
get_param: ExternalMtu
dns_servers:
get_param: DnsServers
use_dhcp: false
addresses:
- ip_netmask:
get_param: ExternalIpSubnet
routes:
list_concat_unique:
- get_param: ExternalInterfaceRoutes
- - default: true
next_hop:
get_param: ExternalInterfaceDefaultRoute
members:
- type: interface
name: nic6
mtu:
get_param: ExternalMtu
use_dhcp: false
primary: true
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value:
get_resource: OsNetConfigImpl
parameter_defaults:
GlanceBackend: cinder
ControllerExtraConfig:
cinder::config::cinder_config:
powerflex/volume_driver:
value: cinder.volume.drivers.dell_emc.powerflex.driver.PowerFlexDriver
powerflex/volume_backend_name:
value: powerflex
powerflex/san_ip:
value: 172.x.x.x
powerflex/san_login:
value: admin
powerflex/san_password:
value: <password>
powerflex/powerflex_storage_pools:
value: pd1:sp1
cinder_user_enabled_backends: ['powerflex']
parameter_defaults:
NovaComputeOptVolumes:
- /opt/emc/scaleio:/opt/emc/scaleio
CinderVolumeOptVolumes:
- /opt/emc/scaleio:/opt/emc/scaleio
GlanceApiOptVolumes:
- /opt/emc/scaleio:/opt/emc/scaleio
.