Merge branch '2.0-dev'

This commit is contained in:
Ben Nemec 2019-01-10 12:07:32 -06:00
commit 626b458b0a
94 changed files with 1823 additions and 5540 deletions

View File

@ -87,7 +87,7 @@ def _generate_environment(input_env, parent_env=None):
param_names = []
sample_values = env.get('sample_values', {})
static_names = env.get('static', [])
for template_file, template_data in env['files'].items():
for template_file, template_data in env.get('files', {}).items():
with open(template_file) as f:
f_data = yaml.safe_load(f)
f_params = f_data['parameters']

View File

@ -5,7 +5,7 @@ set -x
# install python2-crypto from EPEL
# python-[nova|neutron]client are in a similar situation. They were renamed
# in RDO to python2-*
required_packages="python-pip os-net-config git jq python2-os-client-config"
required_packages="python-pip os-net-config git jq python2-os-client-config python2-openstackclient"
function have_packages() {
for i in $required_packages; do
@ -59,12 +59,9 @@ print(yaml.safe_dump(clouds, default_flow_style=False))' > ~/.config/openstack/c
rm -f /tmp/bmc-cloud-data
export OS_CLOUD=host_cloud
# At some point neutronclient started returning a python list repr from this
# command instead of just the value. This sed will strip off the bits we
# don't care about without messing up the output from older clients.
private_subnet=$(neutron net-show -f value -c subnets $private_net | sed "s/\[u'\(.*\)'\]/\1/")
default_gw=$(neutron subnet-show $private_subnet -f value -c gateway_ip)
prefix_len=$(neutron subnet-show -f value -c cidr $private_subnet | awk -F / '{print $2}')
private_subnet=$(openstack network show -f value -c subnets $private_net)
default_gw=$(openstack subnet show -f value -c gateway_ip $private_subnet)
prefix_len=$(openstack subnet show -f value -c cidr $private_subnet | awk -F / '{print $2}')
cache_status=
if [ "$bmc_use_cache" != "False" ]; then
cache_status="--cache-status"
@ -103,14 +100,9 @@ EOF
for i in $(seq 1 $bm_node_count)
do
bm_port="$bm_prefix_$(($i-1))"
bm_instance=$(neutron port-show $bm_port -c device_id -f value)
bm_instance=$(openstack port show -c device_id -f value $bm_port)
bmc_port="$bmc_prefix_$(($i-1))"
bmc_ip=$(neutron port-show $bmc_port -c fixed_ips -f value | jq -r .ip_address)
# Newer neutronclient requires explicit json output and a slightly
# different jq query
if [ -z "$bmc_ip" ]; then
bmc_ip=$(neutron port-show $bmc_port -c fixed_ips -f json | jq -r .fixed_ips[0].ip_address)
fi
bmc_ip=$(openstack port show -c fixed_ips -f value $bmc_port | awk -F \' '{print $2}')
unit="openstack-bmc-$bm_port.service"
cat <<EOF >/usr/lib/systemd/system/$unit
@ -144,6 +136,21 @@ do
unit="openstack-bmc-$bm_port.service"
systemctl enable $unit
systemctl start $unit
systemctl status $unit
done
sleep 5
for i in $(seq 1 $bm_node_count)
do
bm_port="$bm_prefix_$(($i-1))"
unit="openstack-bmc-$bm_port.service"
if ! systemctl status $unit
then
$signal_command --data-binary '{"status": "FAILURE"}'
echo "********** $unit failed to start **********"
exit 1
fi
done
$signal_command --data-binary '{"status": "SUCCESS"}'

View File

@ -49,9 +49,9 @@ then
fi
echo 'resource_registry:' >> env.yaml
echo ' OS::OVB::UndercloudFloating: templates/undercloud-floating.yaml' >> env.yaml
echo ' OS::OVB::BaremetalPorts: templates/baremetal-ports-default-port-security.yaml' >> env.yaml
echo ' OS::OVB::BMCPort: templates/bmc-port-port-security.yaml' >> env.yaml
echo ' OS::OVB::UndercloudPorts: templates/undercloud-ports-port-security.yaml' >> env.yaml
echo ' OS::OVB::BaremetalPorts: templates/baremetal-ports-default.yaml' >> env.yaml
echo ' OS::OVB::BMCPort: templates/bmc-port.yaml' >> env.yaml
echo ' OS::OVB::UndercloudPorts: templates/undercloud-ports.yaml' >> env.yaml
echo ' OS::OVB::PrivateNetwork: templates/private-net-create.yaml' >> env.yaml
cp -r $BIN_DIR ./bin

View File

@ -52,7 +52,7 @@ fi
cp -r $BIN_DIR ./bin
cp -r $BIN_DIR/../openstack_virtual_baremetal .
STACK_NAME=$MY_ID
$BIN_DIR/deploy.py --quintupleo --id $MY_ID --name $STACK_NAME --poll -e env.yaml -e environments/create-private-network.yaml -e environments/all-networks-port-security.yaml
$BIN_DIR/deploy.py --quintupleo --id $MY_ID --name $STACK_NAME --poll -e env.yaml -e environments/create-private-network.yaml -e environments/all-networks.yaml
UNDERCLOUD_IP=$(heat output-show $STACK_NAME undercloud_host_floating_ip | sed -e 's/"//g')
bin/build-nodes-json --env env-$MY_ID.yaml --driver ipmi
SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=Verbose -o PasswordAuthentication=no -o ConnectionAttempts=32 "

View File

@ -1,3 +0,0 @@
WARNING: This directory is deprecated and may be removed in the future.
A duplicate copy of these network templates can be found in the
overcloud-templates directory in a sub-directory with the same name as this one.

View File

@ -1,23 +0,0 @@
Generated Network Isolation Templates
-------------------------------------
These templates were generated by the UI tool at
https://github.com/cybertron/tripleo-scripts#net-iso-genpy
ui-settings.pickle is specific to the tool. TripleO will not use it when
doing deployments with these templates, but it is needed to be able to
load the templates into the UI again. Note that the UI only reads this file,
so any changes made by hand to the templates will not be reflected in the UI.
The network-isolation.yaml file needs to reference the port files shipped with
tripleo-heat-templates, so by default the tool generates the paths assuming
network-isolation.yaml will be copied into the environments/ directory of
tripleo-heat-templates.
If the standard tripleo-heat-templates are in use, then the
network-isolation-absolute.yaml file can be used instead. It has hard-coded
references to the port files in /usr/share/openstack-tripleo-heat-templates.
If the generated network isolation templates are at ~/generated-templates, an
example deployment command would look like:
openstack overcloud deploy --templates -e ~/generated-templates/network-isolation-absolute.yaml -e ~/generated-templates/network-environment.yaml

View File

@ -1,26 +0,0 @@
resource_registry:
OS::TripleO::BlockStorage::Net::SoftwareConfig: nic-configs/cinder-storage.yaml
OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml
OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: nic-configs/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: nic-configs/ceph-storage.yaml
parameter_defaults:
ControlPlaneSubnetCidr: '24'
ControlPlaneDefaultRoute: 192.0.2.1
EC2MetadataIp: 192.0.2.1
ExternalNetCidr: 10.0.0.0/24
ExternalAllocationPools: [{"start": "10.0.0.10", "end": "10.0.0.50"}]
ExternalInterfaceDefaultRoute: 10.0.0.1
NeutronExternalNetworkBridge: "''"
InternalApiNetCidr: 172.17.0.0/24
InternalApiAllocationPools: [{"start": "172.17.0.10", "end": "172.17.0.250"}]
StorageNetCidr: 172.18.0.0/24
StorageAllocationPools: [{"start": "172.18.0.10", "end": "172.18.0.250"}]
StorageMgmtNetCidr: 172.19.0.0/24
StorageMgmtAllocationPools: [{"start": "172.19.0.10", "end": "172.19.0.250"}]
TenantNetCidr: 172.16.0.0/24
TenantAllocationPools: [{"start": "172.16.0.10", "end": "172.16.0.250"}]
DnsServers: ["8.8.8.8", "8.8.4.4"]
BondInterfaceOvsOptions: bond_mode=balance-slb

View File

@ -1,28 +0,0 @@
resource_registry:
# Redis
OS::TripleO::Network::Ports::RedisVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml
# External
OS::TripleO::Network::External: /usr/share/openstack-tripleo-heat-templates/network/external.yaml
OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
# InternalApi
OS::TripleO::Network::InternalApi: /usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
# Storage
OS::TripleO::Network::Storage: /usr/share/openstack-tripleo-heat-templates/network/storage.yaml
OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
# StorageMgmt
OS::TripleO::Network::StorageMgmt: /usr/share/openstack-tripleo-heat-templates/network/storage_mgmt.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
OS::TripleO::CephStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
# Tenant
OS::TripleO::Network::Tenant: /usr/share/openstack-tripleo-heat-templates/network/tenant.yaml
OS::TripleO::Network::Ports::TenantVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml

View File

@ -1,28 +0,0 @@
resource_registry:
# Redis
OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip.yaml
# External
OS::TripleO::Network::External: ../network/external.yaml
OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external.yaml
OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external.yaml
# InternalApi
OS::TripleO::Network::InternalApi: ../network/internal_api.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/internal_api.yaml
OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api.yaml
OS::TripleO::Compute::Ports::InternalApiPort: ../network/ports/internal_api.yaml
# Storage
OS::TripleO::Network::Storage: ../network/storage.yaml
OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/storage.yaml
OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage.yaml
OS::TripleO::Compute::Ports::StoragePort: ../network/ports/storage.yaml
OS::TripleO::CephStorage::Ports::StoragePort: ../network/ports/storage.yaml
# StorageMgmt
OS::TripleO::Network::StorageMgmt: ../network/storage_mgmt.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/storage_mgmt.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
OS::TripleO::CephStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
# Tenant
OS::TripleO::Network::Tenant: ../network/tenant.yaml
OS::TripleO::Network::Ports::TenantVipPort: ../network/ports/tenant.yaml
OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant.yaml
OS::TripleO::Compute::Ports::TenantPort: ../network/ports/tenant.yaml

View File

@ -1,119 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config:
- type: interface
name: nic1
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- /
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- default: true
next_hop: {get_param: ControlPlaneDefaultRoute}
- type: interface
name: nic5
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: interface
name: nic6
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageMgmtIpSubnet}
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,92 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config: []
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,130 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config:
- type: interface
name: nic1
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- /
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- default: true
next_hop: {get_param: ControlPlaneDefaultRoute}
- type: interface
name: nic4
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
- type: interface
name: nic5
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: ovs_bridge
name: br-tenant
dns_servers: {get_param: DnsServers}
use_dhcp: false
addresses:
- ip_netmask: {get_param: TenantIpSubnet}
members:
- type: interface
name: nic7
mtu: 1350
primary: true
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,156 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config:
- type: interface
name: nic1
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- /
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- type: ovs_bridge
name: br-ex
dns_servers: {get_param: DnsServers}
use_dhcp: false
addresses:
- ip_netmask: {get_param: ExternalIpSubnet}
routes:
- ip_netmask: 0.0.0.0/0
next_hop: {get_param: ExternalInterfaceDefaultRoute}
members:
- type: ovs_bond
name: bond1
ovs_options: {get_param: BondInterfaceOvsOptions}
members:
- type: interface
name: nic2
mtu: 1350
primary: true
- type: interface
name: nic3
mtu: 1350
primary: false
- type: interface
name: nic4
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
- type: interface
name: nic5
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: interface
name: nic6
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageMgmtIpSubnet}
- type: ovs_bridge
name: br-tenant
dns_servers: {get_param: DnsServers}
use_dhcp: false
addresses:
- ip_netmask: {get_param: TenantIpSubnet}
members:
- type: interface
name: nic7
mtu: 1350
primary: true
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,92 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config: []
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,699 +0,0 @@
(dp0
S'global_data'
p1
(dp2
S'control'
p3
(dp4
S'route'
p5
V192.0.2.1
p6
sS'mask'
p7
I24
sS'ec2'
p8
V192.0.2.1
p9
ssS'major'
p10
I1
sS'management'
p11
(dp12
S'start'
p13
V172.20.0.10
p14
sS'cidr'
p15
V172.20.0.0/24
p16
sS'vlan'
p17
I6
sS'end'
p18
V172.20.0.250
p19
ssS'dns2'
p20
V8.8.4.4
p21
sS'dns1'
p22
V8.8.8.8
p23
sS'storage'
p24
(dp25
g13
V172.18.0.10
p26
sg15
V172.18.0.0/24
p27
sg17
I3
sg18
V172.18.0.250
p28
ssS'auto_routes'
p29
I01
sS'bond_options'
p30
Vbond_mode=balance-slb
p31
sS'version'
p32
I1
sS'external'
p33
(dp34
S'bridge'
p35
V''
p36
sg18
V10.0.0.50
p37
sg17
I1
sg13
V10.0.0.10
p38
sg15
V10.0.0.0/24
p39
sS'gateway'
p40
V10.0.0.1
p41
ssS'internal_api'
p42
(dp43
g13
V172.17.0.10
p44
sg15
V172.17.0.0/24
p45
sg17
I2
sg18
V172.17.0.250
p46
ssS'ipv6'
p47
I00
sS'storage_mgmt'
p48
(dp49
g13
V172.19.0.10
p50
sg15
V172.19.0.0/24
p51
sg17
I4
sg18
V172.19.0.250
p52
ssS'minor'
p53
I2
sS'tenant'
p54
(dp55
g13
V172.16.0.10
p56
sg15
V172.16.0.0/24
p57
sg17
I5
sg18
V172.16.0.250
p58
sssS'data'
p59
(dp60
S'cinder-storage.yaml'
p61
(lp62
sS'ceph-storage.yaml'
p63
(lp64
(dp65
Vaddresses
p66
(lp67
sVnetwork
p68
VControlPlane
p69
sVprimary
p70
I01
sVmtu
p71
I1350
sS'members'
p72
(lp73
sVroutes
p74
(lp75
sVuse_dhcp
p76
I00
sVtype
p77
Vinterface
p78
sVname
p79
Vnic1
p80
sa(dp81
Vaddresses
p82
(lp83
sVnetwork
p84
VStorage
p85
sVprimary
p86
I01
sVmtu
p87
I1350
sg72
(lp88
sVroutes
p89
(lp90
sVuse_dhcp
p91
I00
sVtype
p92
Vinterface
p93
sVname
p94
Vnic5
p95
sa(dp96
Vaddresses
p97
(lp98
sVnetwork
p99
VStorageMgmt
p100
sVprimary
p101
I01
sVmtu
p102
I1350
sg72
(lp103
sVroutes
p104
(lp105
sVuse_dhcp
p106
I00
sVtype
p107
Vinterface
p108
sVname
p109
Vnic6
p110
sasS'controller.yaml'
p111
(lp112
(dp113
Vaddresses
p114
(lp115
sVnetwork
p116
VControlPlane
p117
sVprimary
p118
I01
sVmtu
p119
I1350
sg72
(lp120
sVroutes
p121
(lp122
sVuse_dhcp
p123
I00
sVtype
p124
Vinterface
p125
sVname
p126
Vnic1
p127
sa(dp128
Vdns_servers
p129
V{get_param: DnsServers}
p130
sVaddresses
p131
(lp132
sVnetwork
p133
VExternal
p134
sVmtu
p135
I-1
sg72
(lp136
(dp137
Vnetwork
p138
VNone
p139
sVbond_type
p140
Vovs
p141
sVovs_options
p142
V{get_param: BondInterfaceOvsOptions}
p143
sVmtu
p144
I-1
sg72
(lp145
(dp146
Vaddresses
p147
(lp148
sVnetwork
p149
VNone
p150
sVprimary
p151
I01
sVmtu
p152
I1350
sVroutes
p153
(lp154
sVuse_dhcp
p155
I00
sVtype
p156
Vinterface
p157
sVname
p158
Vnic2
p159
sa(dp160
Vaddresses
p161
(lp162
sVnetwork
p163
VNone
p164
sVprimary
p165
I00
sVmtu
p166
I1350
sVroutes
p167
(lp168
sVuse_dhcp
p169
I00
sVtype
p170
Vinterface
p171
sVname
p172
Vnic3
p173
sasVroutes
p174
(lp175
sVtype
p176
Vovs_bond
p177
sVname
p178
Vbond1
p179
sasVroutes
p180
(lp181
sVuse_dhcp
p182
I00
sVtype
p183
Vovs_bridge
p184
sVname
p185
Vbr-ex
p186
sa(dp187
Vaddresses
p188
(lp189
sVnetwork
p190
VInternalApi
p191
sVprimary
p192
I01
sVmtu
p193
I1350
sg72
(lp194
sVroutes
p195
(lp196
sVuse_dhcp
p197
I00
sVtype
p198
Vinterface
p199
sVname
p200
Vnic4
p201
sa(dp202
Vaddresses
p203
(lp204
sVnetwork
p205
VStorage
p206
sVprimary
p207
I01
sVmtu
p208
I1350
sg72
(lp209
sVroutes
p210
(lp211
sVuse_dhcp
p212
I00
sVtype
p213
Vinterface
p214
sVname
p215
Vnic5
p216
sa(dp217
Vaddresses
p218
(lp219
sVnetwork
p220
VStorageMgmt
p221
sVprimary
p222
I01
sVmtu
p223
I1350
sg72
(lp224
sVroutes
p225
(lp226
sVuse_dhcp
p227
I00
sVtype
p228
Vinterface
p229
sVname
p230
Vnic6
p231
sa(dp232
Vdns_servers
p233
V{get_param: DnsServers}
p234
sVaddresses
p235
(lp236
sVnetwork
p237
VTenant
p238
sVmtu
p239
I-1
sg72
(lp240
(dp241
Vaddresses
p242
(lp243
sVnetwork
p244
VNone
p245
sVprimary
p246
I01
sVmtu
p247
I1350
sg72
(lp248
sVroutes
p249
(lp250
sVuse_dhcp
p251
I00
sVtype
p252
Vinterface
p253
sVname
p254
Vnic7
p255
sasVroutes
p256
(lp257
sVuse_dhcp
p258
I00
sVtype
p259
Vovs_bridge
p260
sVname
p261
Vbr-tenant
p262
sasS'swift-storage.yaml'
p263
(lp264
sS'compute.yaml'
p265
(lp266
(dp267
Vaddresses
p268
(lp269
sVnetwork
p270
VControlPlane
p271
sVprimary
p272
I01
sVmtu
p273
I1350
sg72
(lp274
sVroutes
p275
(lp276
sVuse_dhcp
p277
I00
sVtype
p278
Vinterface
p279
sVname
p280
Vnic1
p281
sa(dp282
Vaddresses
p283
(lp284
sVnetwork
p285
VInternalApi
p286
sVprimary
p287
I01
sVmtu
p288
I1350
sg72
(lp289
sVroutes
p290
(lp291
sVuse_dhcp
p292
I00
sVtype
p293
Vinterface
p294
sVname
p295
Vnic4
p296
sa(dp297
Vaddresses
p298
(lp299
sVnetwork
p300
VStorage
p301
sVprimary
p302
I01
sVmtu
p303
I1350
sg72
(lp304
sVroutes
p305
(lp306
sVuse_dhcp
p307
I00
sVtype
p308
Vinterface
p309
sVname
p310
Vnic5
p311
sa(dp312
Vdns_servers
p313
V{get_param: DnsServers}
p314
sVaddresses
p315
(lp316
sVnetwork
p317
VTenant
p318
sVmtu
p319
I-1
sg72
(lp320
(dp321
Vaddresses
p322
(lp323
sVnetwork
p324
VNone
p325
sVprimary
p326
I01
sVmtu
p327
I1350
sg72
(lp328
sVroutes
p329
(lp330
sVuse_dhcp
p331
I00
sVtype
p332
Vinterface
p333
sVname
p334
Vnic7
p335
sasVroutes
p336
(lp337
sVuse_dhcp
p338
I00
sVtype
p339
Vovs_bridge
p340
sVname
p341
Vbr-tenant
p342
sass.

View File

@ -28,6 +28,7 @@ sys.path.insert(0, os.path.abspath('../../openstack_virtual_baremetal'))
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
'sphinx.ext.autosectionlabel',
]
@ -95,6 +96,7 @@ pygments_style = 'sphinx'
# -- Options for HTML output ---------------------------------------------------
html_theme = 'sphinx_rtd_theme'
html_static_path = []
# html_style = 'custom.css'
templates_path = []

View File

@ -37,7 +37,7 @@ method, which creates most of the resources needed automatically.
::
neutron net-create provision
neutron subnet-create --name provision --no-gateway --disable-dhcp provision 192.0.2.0/24
neutron subnet-create --name provision --no-gateway --disable-dhcp provision 192.168.24.0/24
#. Create "public" network.
@ -94,8 +94,7 @@ method, which creates most of the resources needed automatically.
neutron port-list
neutron floatingip-associate [floatingip uuid] [undercloud instance port id]
#. (Optional) If not using the Noop firewall driver, turn off port-security on
the undercloud provisioning port::
#. Turn off port-security on the undercloud provisioning port::
neutron port-update [UUID of undercloud port on the provision network] --no-security-groups --port-security-enabled=False

View File

@ -1,30 +1,6 @@
Sample Environment Index
========================
Deploy with All Networks Enabled
--------------------------------
**File:** environments/all-networks-port-security.yaml
**Description:** Deploy an OVB stack that adds interfaces for all the standard TripleO
network isolation networks. This version uses the port-security
Neutron extension to allow OVB to be run on clouds with security
groups enabled.
Deploy with All Networks Enabled and Two Public Interfaces
----------------------------------------------------------
**File:** environments/all-networks-public-bond-port-security.yaml
**Description:** Deploy an OVB stack that adds interfaces for all the standard TripleO
network isolation networks. This version will deploy duplicate
public network interfaces on the baremetal instances so that the
public network can be configured as a bond. It will also use the
port-security Neutron extension to allow OVB to be run on clouds with
security groups enabled.
Deploy with All Networks Enabled and Two Public Interfaces
----------------------------------------------------------
@ -118,13 +94,14 @@ Create a Private Network
existing one.
Deploy a Basic OVB Environment Using Neutron port-security
----------------------------------------------------------
Public Network External Router
------------------------------
**File:** environments/port-security.yaml
**File:** environments/public-router.yaml
**Description:** Deploy an OVB stack that uses the Neutron port-security extension to
allow OVB functionality in clouds with security groups enabled.
**Description:** Deploy a router that connects the public and external networks. This
allows the public network to be used as a gateway instead of routing all
traffic through the undercloud.
Disable the Undercloud in a QuintupleO Stack
@ -136,6 +113,38 @@ Disable the Undercloud in a QuintupleO Stack
instance.
Configuration for Routed Networks
---------------------------------
**File:** environments/routed-networks-configuration.yaml
**Description:** Contains the available parameters that need to be configured when using
a routed networks environment. Requires the routed-networks.yaml
environment.
Base Role Configuration for Routed Networks
-------------------------------------------
**File:** environments/routed-networks-role.yaml
**Description:** A base role environment that contains the necessary parameters for
deploying with routed networks.
Enable Routed Networks
----------------------
**File:** environments/routed-networks.yaml
**Description:** Enable use of routed networks, where there may be multiple separate
networks connected with a router and DHCP relay. Do not pass any other
network configuration environments after this one or they may override
the changes made by this environment. When this environment is in use,
the routed-networks-configuration environment should usually be
included as well.
Assign the Undercloud an Existing Floating IP
---------------------------------------------

View File

@ -19,7 +19,7 @@ however.
with some older clouds. See below for details on customizing an OVB
deployment for your particular situation::
bin/deploy.py --quintupleo -e env.yaml -e environments/all-networks-port-security.yaml -e environments/create-private-network.yaml
bin/deploy.py --quintupleo -e env.yaml -e environments/all-networks.yaml -e environments/create-private-network.yaml
.. note:: There is a quintupleo-specific option ``--id`` in deploy.py.
It appends the value passed in to the name of all resources
@ -97,10 +97,10 @@ There are also a number of advanced options that can be enabled for a
QuintupleO deployment. For each such option there is a sample environment
to be passed to the deploy command.
For example, to deploy using the Neutron port-security extension to allow
DHCP and PXE booting, the following command could be used::
For example, to deploy all networks needed for TripleO network isolation, the
following command could be used::
bin/deploy.py --quintupleo -e env.yaml -e environments/port-security.yaml
bin/deploy.py --quintupleo -e env.yaml -e environments/all-networks.yaml
.. important:: When deploying with multiple environment files, ``env.yaml``
*must* be explicitly passed to the deploy command.
@ -110,7 +110,7 @@ DHCP and PXE booting, the following command could be used::
Some options may have additional configuration parameters. These parameters
will be listed in the environment file.
A full list of the option environments available can be found at
A full list of the environments available can be found at
:doc:`environment-index`.
Network Isolation
@ -144,15 +144,163 @@ Three primary networking layouts are included:
OVB environment. The ``bond-*`` overcloud templates must be used with this
type of environment.
Each of the networking layouts has two variations: with and without the use of
Neutron's port-security extension. The reason for this is that older releases
of OpenStack did not support port-security, so those templates cannot be used.
However, use of the port-security extension allows OVB to work on a much larger
number of clouds because it does not require insecure Neutron settings.
QuintupleO and routed networks
------------------------------
While the port-security extension existed as far back as the Liberty release,
it has only been successfully tested with OVB on Newton and above.
TripleO supports deploying OpenStack with nodes on multiple network segments
which is connected via L3 routing. OVB can set up a full development
environment with routers and DHCP-relay service. This environment is targeted
for TripleO development, however it should be useful for non-TripleO users of
OVB as well.
The port-security environments can be recognized by the presence of
`port-security` somewhere in the filename. Network environments without that
substring are the standard ones that require the noop Neutron firewall driver.
#. When deploying QuintupleO with routed networks environment files to enable
routed networks must be included, as well as one or more role environment
files. See :ref:`Enable Routed Networks`,
:ref:`Configuration for Routed Networks`, and
:ref:`Base Role Configuration for Routed Networks` in the
:doc:`environment-index` for details.
#. Copy the example env file and edit it to reflect the host environment::
cp environments/base.yaml env.yaml
vi env.yaml
#. Copy the ``routed-networks-configuration.yaml`` sample environment file and
edit it to reflect the host environment::
cp environments/routed-networks-configuration.yaml env-routed-networks.yaml
vi env-routed-networks.yaml
#. For each desired role, copy the ``routed-networks-role.yaml`` sample
environment file and edit it to reflect the host environment::
cp environments/routed-networks-role.yaml env-leaf1.yaml
vi env-leaf1.yaml
#. Deploy the QuintupleO routed networks environment by running the deploy.py
command. For example::
./bin/deploy.py --env env.yaml \
--quintupleo \
--env environments/all-networks.yaml \
--env environments/routed-networks.yaml \
--env env-routed-networks.yaml \
--role env-leaf1.yaml
#. When generating the ``nodes.json`` file for TripleO undercloud node import,
the environment ``env-routed.yaml`` should be specified. Also, to include
physical network attributes of the node ports in ``nodes.json`` specify the
``--physical_network`` option when running ``build-nodes-json``. For
example::
bin/build-nodes-json --physical_network
The following is an example node definition produced when using the
``--physical_network`` options. Notice that ports are defined with both
``address`` and ``physical_network`` attributes.
::
{
"pm_password": "password",
"name": "baremetal-leaf1-0",
"memory": 8192,
"pm_addr": "10.0.1.13",
"ports": [
{
"physical_network": "provision2",
"address": "fa:16:3e:2f:a1:cf"
}
],
"capabilities": "boot_option:local,profile:leaf1",
"pm_type": "pxe_ipmitool",
"disk": 80,
"arch": "x86_64",
"cpu": 4,
"pm_user": "admin"
}
.. NOTE:: Due to technical debet (backward compatibility) the TripleO
Undercloud uses ``ctlplane`` as the physical network name for the
subnet that is local to the Undercloud itself. Either override
the name of the provision network in the ovb environment by
setting: ``provision_net: ctlplane`` in the
``parameters_defaults`` section or edit the generated nodes.json
file, replacing:
``"physical_network": "<name-used-for-provision_net>"`` with
``"physical_network": "ctlplane"``.
#. For convenience router addresses are made available via the
``network_environment_data`` key in the stack output of the quintupleo heat
stack. To retrieve this data run the ``openstack stack show`` command. For
example::
$ openstack stack show quintupleo -c outputs -f yaml
outputs:
- description: floating ip of the undercloud instance
output_key: undercloud_host_floating_ip
output_value: 38.145.35.98
- description: Network environment data, router addresses etc.
output_key: network_environment_data
output_value:
internal2_router: 172.17.1.204
internal_router_address: 172.17.0.201
provision2_router: 192.168.25.254
provision3_router: 192.168.26.254
provision_router: 192.168.24.254
storage2_router_address: 172.18.1.254
storage_mgmt2_router_address: 172.19.1.254
storage_mgmt_router_address: 172.19.0.254
storage_router_address: 172.18.0.254
tenant2_router_address: 172.16.1.254
tenant_router_address: 172.16.0.254
- description: ip of the undercloud instance on the private network
output_key: undercloud_host_private_ip
output_value: 10.0.1.14
#. Below is an example TripleO Undercloud configuration (``undercloud.conf``)
with routed networks support enabled and the three provisioning networks
defined.
::
[DEFAULT]
enable_routed_networks = true
enable_ui = false
overcloud_domain_name = localdomain
scheduler_max_attempts = 2
undercloud_ntp_servers = pool.ntp.org
undercloud_hostname = undercloud.rdocloud
local_interface = eth1
local_mtu = 1450
local_ip = 192.168.24.1/24
undercloud_public_host = 192.168.24.2
undercloud_admin_host = 192.168.24.3
undercloud_nameservers = 8.8.8.8,8.8.4.4
local_subnet = provision
subnets = provision,provision2,provision3
[provision]
cidr = 192.168.24.0/24
dhcp_start = 192.168.24.10
dhcp_end = 192.168.24.30
gateway = 192.168.24.254
inspection_iprange = 192.168.24.100,192.168.24.120
masquerade = true
[provision2]
cidr = 192.168.25.0/24
dhcp_start = 192.168.25.10
dhcp_end = 192.168.25.30
gateway = 192.168.25.254
inspection_iprange = 192.168.25.100,192.168.25.120
masquerade = true
[provision3]
cidr = 192.168.26.0/24
dhcp_start = 192.168.26.10
dhcp_end = 192.168.26.30
gateway = 192.168.26.254
inspection_iprange = 192.168.26.100,192.168.26.120
masquerade = true

View File

@ -7,19 +7,8 @@ all of it will provide the optimal experience.
The changes described in this document apply to compute nodes in the
host cloud.
#. Neutron must be configured to use the NoopFirewallDriver. Edit
``/etc/neutron/plugins/ml2/ml2_conf.ini`` and set the option
``firewall_driver`` in the ``[securitygroup]`` section as follows::
firewall_driver = neutron.agent.firewall.NoopFirewallDriver
#. In Liberty and later versions, arp spoofing must be disabled. Edit
``/etc/neutron/plugins/ml2/ml2_conf.ini`` and set the option
``prevent_arp_spoofing`` in the ``[agent]`` section as follows::
prevent_arp_spoofing = False
#. The Nova option ``force_config_drive`` must _not_ be set.
#. The Nova option ``force_config_drive`` must _not_ be set. If you have to
change this option, restart ``nova-compute`` to apply it.
#. Ideally, jumbo frames should be enabled on the host cloud. This
avoids MTU problems when deploying to instances over tunneled
@ -33,6 +22,3 @@ host cloud.
such a change on the host cloud), it will likely be necessary to
configure a smaller MTU on the deployed virtual instances. Details
on doing so can be found on the :doc:`../usage/usage` page.
#. Restart ``nova-compute`` and ``neutron-openvswitch-agent`` to apply the
changes above.

View File

@ -6,9 +6,6 @@ Instructions for setting up the host cloud[1].
1: The host cloud is any OpenStack cloud providing the necessary functionality
to run OVB. The host cloud must be running on real baremetal.
.. warning:: This process requires patches and configuration settings that
may not be appropriate for production clouds.
.. toctree::
patches

View File

@ -49,10 +49,8 @@ VM, but responses never get to the baremetal instances.
**Cause**: Neutron port security blocking DHCP from the undercloud.
**Solution**: Neutron either needs to be configured to use the Noop firewall
driver, or the port-security extension must be used to disable
port-security on the appropriate ports. As of this writing that
requires use of the port-security branch of OVB.
**Solution**: Ensure that the Neutron port-security extension is present in
the host cloud. It is required for OVB to function properly.
The BMC does not respond to IPMI requests
-----------------------------------------
@ -62,11 +60,10 @@ on arbitrary addresses. The BMC deployment may have failed for some
reason.
**Solution**: Neutron must be configured to allow the BMC to listen on
arbitrary addresses. This requires use of the Noop firewall driver
or port-security extension as in the previous solution. If this
is already configured correctly, then the BMC may have failed to
deploy properly. This can usually be determined by looking at the
nova console-log of the BMC instance. A correctly working BMC will
arbitrary addresses. This requires the port-security extension as in the
previous solution. If this is already configured correctly, then the BMC may
have failed to deploy properly. This can usually be determined by looking at
the nova console-log of the BMC instance. A correctly working BMC will
display 'Managing instance [uuid]' for each baremetal node in the
environment. If those messages are not found, then the BMC has
failed to start properly. The relevant error messages should be

View File

@ -43,15 +43,12 @@ After an OVB environment has been deployed, there are a few things to know.
this is a brief explanation of each:
- **network-templates:** IPv4 multi-nic. Usable with the network layout
deployed by the ``all-networks.yaml`` and
``all-networks-port-security.yaml`` environments.
deployed by the ``all-networks.yaml`` environment.
- **ipv6-network-templates:** IPv6 multi-nic. Usable with the network layout
deployed by the ``all-networks.yaml`` and
``all-networks-port-security.yaml`` environments.
deployed by the ``all-networks.yaml`` environment.
- **bond-network-templates:** IPv4 multi-nic, with duplicate `public`
interfaces for testing bonded nics. Usable with the network layout
deployed by the ``all-networks-public-bond.yaml`` and
``all-networks-public-bond-port-security.yaml`` environments.
deployed by the ``all-networks-public-bond.yaml`` environment.
The undercloud's ``public`` interface should be configured with the address
of the default route from the templates in use. Firewall rules for

View File

@ -1,54 +0,0 @@
# *******************************************************************
# This file was created automatically by the sample environment
# generator. Developers should use `tox -e genconfig` to update it.
# Users are recommended to make changes to a copy of the file instead
# of the original, if any customizations are needed.
# *******************************************************************
# title: Deploy with All Networks Enabled
# description: |
# Deploy an OVB stack that adds interfaces for all the standard TripleO
# network isolation networks. This version uses the port-security
# Neutron extension to allow OVB to be run on clouds with security
# groups enabled.
parameter_defaults:
# Name of internal API network
# Type: string
overcloud_internal_net: overcloud_internal
# CIDR for internal API network subnet. This is typically irrelevant and
# does not need to be changed.
# Type: string
overcloud_internal_net_cidr: 172.17.0.0/24
# Name of storage management network
# Type: string
overcloud_storage_mgmt_net: overcloud_storage_mgmt
# CIDR for storage management network subnet. This is typically irrelevant
# and does not need to be changed.
# Type: string
overcloud_storage_mgmt_net_cidr: 172.19.0.0/24
# Name of storage network
# Type: string
overcloud_storage_net: overcloud_storage
# CIDR for storage network subnet. This is typically irrelevant and
# does not need to be changed.
# Type: string
overcloud_storage_net_cidr: 172.18.0.0/24
# Name of tenant network
# Type: string
overcloud_tenant_net: overcloud_tenant
# CIDR for tenant network subnet. This is typically irrelevant and
# does not need to be changed.
# Type: string
overcloud_tenant_net_cidr: 172.16.0.0/24
resource_registry:
OS::OVB::BMCPort: ../templates/bmc-port-port-security.yaml
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-all-port-security.yaml
OS::OVB::UndercloudPorts: ../templates/undercloud-ports-port-security.yaml

View File

@ -0,0 +1 @@
all-networks.yaml

View File

@ -1,56 +0,0 @@
# *******************************************************************
# This file was created automatically by the sample environment
# generator. Developers should use `tox -e genconfig` to update it.
# Users are recommended to make changes to a copy of the file instead
# of the original, if any customizations are needed.
# *******************************************************************
# title: Deploy with All Networks Enabled and Two Public Interfaces
# description: |
# Deploy an OVB stack that adds interfaces for all the standard TripleO
# network isolation networks. This version will deploy duplicate
# public network interfaces on the baremetal instances so that the
# public network can be configured as a bond. It will also use the
# port-security Neutron extension to allow OVB to be run on clouds with
# security groups enabled.
parameter_defaults:
# Name of internal API network
# Type: string
overcloud_internal_net: overcloud_internal
# CIDR for internal API network subnet. This is typically irrelevant and
# does not need to be changed.
# Type: string
overcloud_internal_net_cidr: 172.17.0.0/24
# Name of storage management network
# Type: string
overcloud_storage_mgmt_net: overcloud_storage_mgmt
# CIDR for storage management network subnet. This is typically irrelevant
# and does not need to be changed.
# Type: string
overcloud_storage_mgmt_net_cidr: 172.19.0.0/24
# Name of storage network
# Type: string
overcloud_storage_net: overcloud_storage
# CIDR for storage network subnet. This is typically irrelevant and
# does not need to be changed.
# Type: string
overcloud_storage_net_cidr: 172.18.0.0/24
# Name of tenant network
# Type: string
overcloud_tenant_net: overcloud_tenant
# CIDR for tenant network subnet. This is typically irrelevant and
# does not need to be changed.
# Type: string
overcloud_tenant_net_cidr: 172.16.0.0/24
resource_registry:
OS::OVB::BMCPort: ../templates/bmc-port-port-security.yaml
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-public-bond-port-security.yaml
OS::OVB::UndercloudPorts: ../templates/undercloud-ports-port-security.yaml

View File

@ -0,0 +1 @@
all-networks-public-bond.yaml

View File

@ -33,4 +33,4 @@ parameter_defaults:
role: extra
resource_registry:
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-extra-node-port-security.yaml
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-extra-node.yaml

View File

@ -4,11 +4,10 @@
# Users are recommended to make changes to a copy of the file instead
# of the original, if any customizations are needed.
# *******************************************************************
# title: Deploy a Basic OVB Environment Using Neutron port-security
# title: Public Network External Router
# description: |
# Deploy an OVB stack that uses the Neutron port-security extension to
# allow OVB functionality in clouds with security groups enabled.
# Deploy a router that connects the public and external networks. This
# allows the public network to be used as a gateway instead of routing all
# traffic through the undercloud.
resource_registry:
OS::OVB::BMCPort: ../templates/bmc-port-port-security.yaml
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-default-port-security.yaml
OS::OVB::UndercloudPorts: ../templates/undercloud-ports-port-security.yaml
OS::OVB::UndercloudNetworks: ../templates/undercloud-networks-public-router.yaml

View File

@ -0,0 +1,21 @@
# *******************************************************************
# This file was created automatically by the sample environment
# generator. Developers should use `tox -e genconfig` to update it.
# Users are recommended to make changes to a copy of the file instead
# of the original, if any customizations are needed.
# *******************************************************************
# title: Configuration for Routed Networks
# description: |
# Contains the available parameters that need to be configured when using
# a routed networks environment. Requires the routed-networks.yaml
# environment.
parameter_defaults:
# The Nova flavor to use for the dhcrelay instance
# Type: string
dhcp_relay_flavor: m1.small
# The base image for the dhcrelay instance. A CentOS 7 image is currently
# the only one supported.
# Type: string
dhcp_relay_image: CentOS-7-x86_64-GenericCloud

View File

@ -0,0 +1,48 @@
# *******************************************************************
# This file was created automatically by the sample environment
# generator. Developers should use `tox -e genconfig` to update it.
# Users are recommended to make changes to a copy of the file instead
# of the original, if any customizations are needed.
# *******************************************************************
# title: Base Role Configuration for Routed Networks
# description: |
# A base role environment that contains the necessary parameters for
# deploying with routed networks.
parameter_defaults:
# Recommended to be at least 1 vcpu, 4 GB RAM, 50 GB disk
# Type: string
baremetal_flavor: baremetal
# Nova keypair to inject into the undercloud and bmc
# Type: string
key_name: default
# Number of baremetal nodes to deploy
# Type: number
node_count: 2
# Name of internal API network
# Type: string
overcloud_internal_net: overcloud_internal2
# Name of storage management network
# Type: string
overcloud_storage_mgmt_net: overcloud_storage_mgmt2
# Name of storage network
# Type: string
overcloud_storage_net: overcloud_storage2
# Name of tenant network
# Type: string
overcloud_tenant_net: overcloud_tenant2
# Name of a network that will be used for provisioning traffic
# Type: string
provision_net: provision2
# The default role for nodes in this environment. This parameter is
# ignored by Heat, but used by build-nodes-json.
# Type: string
role: leaf1

View File

@ -0,0 +1,18 @@
# *******************************************************************
# This file was created automatically by the sample environment
# generator. Developers should use `tox -e genconfig` to update it.
# Users are recommended to make changes to a copy of the file instead
# of the original, if any customizations are needed.
# *******************************************************************
# title: Enable Routed Networks
# description: |
# Enable use of routed networks, where there may be multiple separate
# networks connected with a router and DHCP relay. Do not pass any other
# network configuration environments after this one or they may override
# the changes made by this environment. When this environment is in use,
# the routed-networks-configuration environment should usually be
# included as well.
resource_registry:
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-routed.yaml
OS::OVB::DHCPRelay: ../templates/dhcp-relay.yaml
OS::OVB::UndercloudNetworks: ../templates/undercloud-networks-routed.yaml

View File

@ -1,3 +0,0 @@
WARNING: This directory is deprecated and may be removed in the future.
A duplicate copy of these network templates can be found in the
overcloud-templates directory in a sub-directory with the same name as this one.

View File

@ -1,23 +0,0 @@
Generated Network Isolation Templates
-------------------------------------
These templates were generated by the UI tool at
https://github.com/cybertron/tripleo-scripts#net-iso-genpy
ui-settings.pickle is specific to the tool. TripleO will not use it when
doing deployments with these templates, but it is needed to be able to
load the templates into the UI again. Note that the UI only reads this file,
so any changes made by hand to the templates will not be reflected in the UI.
The network-isolation.yaml file needs to reference the port files shipped with
tripleo-heat-templates, so by default the tool generates the paths assuming
network-isolation.yaml will be copied into the environments/ directory of
tripleo-heat-templates.
If the standard tripleo-heat-templates are in use, then the
network-isolation-absolute.yaml file can be used instead. It has hard-coded
references to the port files in /usr/share/openstack-tripleo-heat-templates.
If the generated network isolation templates are at ~/generated-templates, an
example deployment command would look like:
openstack overcloud deploy --templates -e ~/generated-templates/network-isolation-absolute.yaml -e ~/generated-templates/network-environment.yaml

View File

@ -1,25 +0,0 @@
resource_registry:
OS::TripleO::BlockStorage::Net::SoftwareConfig: nic-configs/cinder-storage.yaml
OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml
OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: nic-configs/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: nic-configs/ceph-storage.yaml
parameter_defaults:
ControlPlaneSubnetCidr: '24'
ControlPlaneDefaultRoute: 192.0.2.1
EC2MetadataIp: 192.0.2.1
ExternalNetCidr: 2001:db8:fd00:1000::/64
ExternalAllocationPools: [{"start": "2001:db8:fd00:1000::10", "end": "2001:db8:fd00:1000:ffff:ffff:ffff:fffe"}]
ExternalInterfaceDefaultRoute: 2001:db8:fd00:1000::1
NeutronExternalNetworkBridge: "''"
InternalApiNetCidr: fd00:fd00:fd00:2000::/64
InternalApiAllocationPools: [{"start": "fd00:fd00:fd00:2000::10", "end": "fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe"}]
StorageNetCidr: fd00:fd00:fd00:3000::/64
StorageAllocationPools: [{"start": "fd00:fd00:fd00:3000::10", "end": "fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe"}]
StorageMgmtNetCidr: fd00:fd00:fd00:4000::/64
StorageMgmtAllocationPools: [{"start": "fd00:fd00:fd00:4000::10", "end": "fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe"}]
TenantNetCidr: 172.16.0.0/24
TenantAllocationPools: [{"start": "172.16.0.10", "end": "172.16.0.250"}]
DnsServers: ["8.8.8.8", "8.8.4.4"]

View File

@ -1,35 +0,0 @@
resource_registry:
# Redis
OS::TripleO::Network::Ports::RedisVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/vip_v6.yaml
# External
OS::TripleO::Network::External: /usr/share/openstack-tripleo-heat-templates/network/external_v6.yaml
OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external_v6.yaml
OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external_v6.yaml
# InternalApi
OS::TripleO::Network::InternalApi: /usr/share/openstack-tripleo-heat-templates/network/internal_api_v6.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api_v6.yaml
OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api_v6.yaml
OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api_v6.yaml
# Storage
OS::TripleO::Network::Storage: /usr/share/openstack-tripleo-heat-templates/network/storage_v6.yaml
OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_v6.yaml
OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_v6.yaml
OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_v6.yaml
OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_v6.yaml
# StorageMgmt
OS::TripleO::Network::StorageMgmt: /usr/share/openstack-tripleo-heat-templates/network/storage_mgmt_v6.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_v6.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_v6.yaml
OS::TripleO::CephStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_v6.yaml
# Tenant
OS::TripleO::Network::Tenant: /usr/share/openstack-tripleo-heat-templates/network/tenant.yaml
OS::TripleO::Network::Ports::TenantVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
parameter_defaults:
CephIPv6: True
CorosyncIPv6: True
MongoDbIPv6: True
NovaIPv6: True
RabbitIPv6: True
MemcachedIPv6: True

View File

@ -1,35 +0,0 @@
resource_registry:
# Redis
OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip_v6.yaml
# External
OS::TripleO::Network::External: ../network/external_v6.yaml
OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external_v6.yaml
OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external_v6.yaml
# InternalApi
OS::TripleO::Network::InternalApi: ../network/internal_api_v6.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/internal_api_v6.yaml
OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api_v6.yaml
OS::TripleO::Compute::Ports::InternalApiPort: ../network/ports/internal_api_v6.yaml
# Storage
OS::TripleO::Network::Storage: ../network/storage_v6.yaml
OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/storage_v6.yaml
OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage_v6.yaml
OS::TripleO::Compute::Ports::StoragePort: ../network/ports/storage_v6.yaml
OS::TripleO::CephStorage::Ports::StoragePort: ../network/ports/storage_v6.yaml
# StorageMgmt
OS::TripleO::Network::StorageMgmt: ../network/storage_mgmt_v6.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/storage_mgmt_v6.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt_v6.yaml
OS::TripleO::CephStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt_v6.yaml
# Tenant
OS::TripleO::Network::Tenant: ../network/tenant.yaml
OS::TripleO::Network::Ports::TenantVipPort: ../network/ports/tenant.yaml
OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant.yaml
OS::TripleO::Compute::Ports::TenantPort: ../network/ports/tenant.yaml
parameter_defaults:
CephIPv6: True
CorosyncIPv6: True
MongoDbIPv6: True
NovaIPv6: True
RabbitIPv6: True
MemcachedIPv6: True

View File

@ -1,120 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config:
- type: interface
name: nic1
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- /
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- default: true
ip_netmask: 0.0.0.0/0
next_hop: {get_param: ControlPlaneDefaultRoute}
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- type: interface
name: nic4
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: interface
name: nic5
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageMgmtIpSubnet}
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,92 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config: []
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,131 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config:
- type: interface
name: nic1
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- /
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- default: true
ip_netmask: 0.0.0.0/0
next_hop: {get_param: ControlPlaneDefaultRoute}
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- type: interface
name: nic3
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
- type: interface
name: nic4
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: ovs_bridge
name: br-tenant
dns_servers: {get_param: DnsServers}
use_dhcp: false
addresses:
- ip_netmask: {get_param: TenantIpSubnet}
members:
- type: interface
name: nic6
mtu: 1350
primary: true
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,152 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config:
- type: interface
name: nic1
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- /
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- default: true
ip_netmask: 0.0.0.0/0
next_hop: {get_param: ControlPlaneDefaultRoute}
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- type: ovs_bridge
name: br-ex
dns_servers: {get_param: DnsServers}
use_dhcp: false
addresses:
- ip_netmask: {get_param: ExternalIpSubnet}
routes:
- default: true
ip_netmask: 0.0.0.0/0
next_hop: {get_param: ExternalInterfaceDefaultRoute}
members:
- type: interface
name: nic2
mtu: 1350
primary: true
- type: interface
name: nic3
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
- type: interface
name: nic4
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: interface
name: nic5
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageMgmtIpSubnet}
- type: ovs_bridge
name: br-tenant
dns_servers: {get_param: DnsServers}
use_dhcp: false
addresses:
- ip_netmask: {get_param: TenantIpSubnet}
members:
- type: interface
name: nic6
mtu: 1350
primary: true
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,92 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config: []
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,729 +0,0 @@
(dp0
S'global_data'
p1
(dp2
S'control'
p3
(dp4
S'route'
p5
V192.0.2.1
p6
sS'mask'
p7
I24
sS'ec2'
p8
V192.0.2.1
p9
ssS'major'
p10
I1
sS'management'
p11
(dp12
S'start'
p13
V172.20.0.10
p14
sS'cidr'
p15
V172.20.0.0/24
p16
sS'vlan'
p17
I6
sS'end'
p18
V172.20.0.250
p19
ssS'dns2'
p20
V8.8.4.4
p21
sS'dns1'
p22
V8.8.8.8
p23
sS'storage'
p24
(dp25
g13
Vfd00:fd00:fd00:3000::10
p26
sg15
Vfd00:fd00:fd00:3000::/64
p27
sg17
I3
sg18
Vfd00:fd00:fd00:3000:ffff:ffff:ffff:fffe
p28
ssS'auto_routes'
p29
I00
sS'bond_options'
p30
V
p31
sS'external'
p32
(dp33
S'bridge'
p34
V''
p35
sg18
V2001:db8:fd00:1000:ffff:ffff:ffff:fffe
p36
sg17
I1
sg13
V2001:db8:fd00:1000::10
p37
sg15
V2001:db8:fd00:1000::/64
p38
sS'gateway'
p39
V2001:db8:fd00:1000::1
p40
ssS'internal_api'
p41
(dp42
g13
Vfd00:fd00:fd00:2000::10
p43
sg15
Vfd00:fd00:fd00:2000::/64
p44
sg17
I2
sg18
Vfd00:fd00:fd00:2000:ffff:ffff:ffff:fffe
p45
ssS'ipv6'
p46
I01
sS'storage_mgmt'
p47
(dp48
g13
Vfd00:fd00:fd00:4000::10
p49
sg15
Vfd00:fd00:fd00:4000::/64
p50
sg17
I4
sg18
Vfd00:fd00:fd00:4000:ffff:ffff:ffff:fffe
p51
ssS'minor'
p52
I2
sS'tenant'
p53
(dp54
g13
V172.16.0.10
p55
sg15
V172.16.0.0/24
p56
sg17
I5
sg18
V172.16.0.250
p57
sssS'data'
p58
(dp59
S'cinder-storage.yaml'
p60
(lp61
sS'ceph-storage.yaml'
p62
(lp63
(dp64
Vaddresses
p65
(lp66
sVnetwork
p67
VControlPlane
p68
sVprimary
p69
I01
sVmtu
p70
I1350
sS'members'
p71
(lp72
(dp73
Vip_netmask
p74
V0.0.0.0/0
p75
sVname
p76
VRoute
p77
sVdefault
p78
I01
sVnext_hop
p79
V{get_param: ControlPlaneDefaultRoute}
p80
sg71
(lp81
sVtype
p82
Vroute
p83
sasVroutes
p84
(lp85
sVuse_dhcp
p86
I00
sVtype
p87
Vinterface
p88
sVname
p89
Vnic1
p90
sa(dp91
Vaddresses
p92
(lp93
sVnetwork
p94
VStorage
p95
sVprimary
p96
I01
sVmtu
p97
I1350
sg71
(lp98
sVroutes
p99
(lp100
sVuse_dhcp
p101
I00
sVtype
p102
Vinterface
p103
sVname
p104
Vnic4
p105
sa(dp106
Vaddresses
p107
(lp108
sVnetwork
p109
VStorageMgmt
p110
sVprimary
p111
I01
sVmtu
p112
I1350
sg71
(lp113
sVroutes
p114
(lp115
sVuse_dhcp
p116
I00
sVtype
p117
Vinterface
p118
sVname
p119
Vnic5
p120
sasS'controller.yaml'
p121
(lp122
(dp123
Vaddresses
p124
(lp125
sVnetwork
p126
VControlPlane
p127
sVprimary
p128
I01
sVmtu
p129
I1350
sg71
(lp130
(dp131
Vip_netmask
p132
V0.0.0.0/0
p133
sVname
p134
VRoute
p135
sVdefault
p136
I01
sVnext_hop
p137
V{get_param: ControlPlaneDefaultRoute}
p138
sg71
(lp139
sVtype
p140
Vroute
p141
sasVroutes
p142
(lp143
sVuse_dhcp
p144
I00
sVtype
p145
Vinterface
p146
sVname
p147
Vnic1
p148
sa(dp149
Vdns_servers
p150
V{get_param: DnsServers}
p151
sVaddresses
p152
(lp153
sVnetwork
p154
VExternal
p155
sVmtu
p156
I-1
sg71
(lp157
(dp158
Vaddresses
p159
(lp160
sVnetwork
p161
VNone
p162
sVprimary
p163
I01
sVmtu
p164
I1350
sg71
(lp165
sVroutes
p166
(lp167
sVuse_dhcp
p168
I00
sVtype
p169
Vinterface
p170
sVname
p171
Vnic2
p172
sa(dp173
Vip_netmask
p174
V0.0.0.0/0
p175
sVname
p176
VRoute
p177
sVdefault
p178
I01
sVnext_hop
p179
V{get_param: ExternalInterfaceDefaultRoute}
p180
sg71
(lp181
sVtype
p182
Vroute
p183
sasVroutes
p184
(lp185
sVuse_dhcp
p186
I00
sVtype
p187
Vovs_bridge
p188
sVname
p189
Vbr-ex
p190
sa(dp191
Vaddresses
p192
(lp193
sVnetwork
p194
VInternalApi
p195
sVprimary
p196
I01
sVmtu
p197
I1350
sg71
(lp198
sVroutes
p199
(lp200
sVuse_dhcp
p201
I00
sVtype
p202
Vinterface
p203
sVname
p204
Vnic3
p205
sa(dp206
Vaddresses
p207
(lp208
sVnetwork
p209
VStorage
p210
sVprimary
p211
I01
sVmtu
p212
I1350
sg71
(lp213
sVroutes
p214
(lp215
sVuse_dhcp
p216
I00
sVtype
p217
Vinterface
p218
sVname
p219
Vnic4
p220
sa(dp221
Vaddresses
p222
(lp223
sVnetwork
p224
VStorageMgmt
p225
sVprimary
p226
I01
sVmtu
p227
I1350
sg71
(lp228
sVroutes
p229
(lp230
sVuse_dhcp
p231
I00
sVtype
p232
Vinterface
p233
sVname
p234
Vnic5
p235
sa(dp236
Vdns_servers
p237
V{get_param: DnsServers}
p238
sVaddresses
p239
(lp240
sVnetwork
p241
VTenant
p242
sVmtu
p243
I-1
sg71
(lp244
(dp245
Vaddresses
p246
(lp247
sVnetwork
p248
VNone
p249
sVprimary
p250
I01
sVmtu
p251
I1350
sg71
(lp252
sVroutes
p253
(lp254
sVuse_dhcp
p255
I00
sVtype
p256
Vinterface
p257
sVname
p258
Vnic6
p259
sasVroutes
p260
(lp261
sVuse_dhcp
p262
I00
sVtype
p263
Vovs_bridge
p264
sVname
p265
Vbr-tenant
p266
sasS'swift-storage.yaml'
p267
(lp268
sS'compute.yaml'
p269
(lp270
(dp271
Vaddresses
p272
(lp273
sVnetwork
p274
VControlPlane
p275
sVprimary
p276
I01
sVmtu
p277
I1350
sg71
(lp278
(dp279
Vip_netmask
p280
V0.0.0.0/0
p281
sVname
p282
VRoute
p283
sVdefault
p284
I01
sVnext_hop
p285
V{get_param: ControlPlaneDefaultRoute}
p286
sg71
(lp287
sVtype
p288
Vroute
p289
sasVroutes
p290
(lp291
sVuse_dhcp
p292
I00
sVtype
p293
Vinterface
p294
sVname
p295
Vnic1
p296
sa(dp297
Vaddresses
p298
(lp299
sVnetwork
p300
VInternalApi
p301
sVprimary
p302
I01
sVmtu
p303
I1350
sg71
(lp304
sVroutes
p305
(lp306
sVuse_dhcp
p307
I00
sVtype
p308
Vinterface
p309
sVname
p310
Vnic3
p311
sa(dp312
Vaddresses
p313
(lp314
sVnetwork
p315
VStorage
p316
sVprimary
p317
I01
sVmtu
p318
I1350
sg71
(lp319
sVroutes
p320
(lp321
sVuse_dhcp
p322
I00
sVtype
p323
Vinterface
p324
sVname
p325
Vnic4
p326
sa(dp327
Vdns_servers
p328
V{get_param: DnsServers}
p329
sVaddresses
p330
(lp331
sVnetwork
p332
VTenant
p333
sVmtu
p334
I-1
sg71
(lp335
(dp336
Vaddresses
p337
(lp338
sVnetwork
p339
VNone
p340
sVprimary
p341
I01
sVmtu
p342
I1350
sg71
(lp343
sVroutes
p344
(lp345
sVuse_dhcp
p346
I00
sVtype
p347
Vinterface
p348
sVname
p349
Vnic6
p350
sasVroutes
p351
(lp352
sVuse_dhcp
p353
I00
sVtype
p354
Vovs_bridge
p355
sVname
p356
Vbr-tenant
p357
sass.

View File

@ -1,3 +0,0 @@
WARNING: This directory is deprecated and may be removed in the future.
A duplicate copy of these network templates can be found in the
overcloud-templates directory in a sub-directory with the same name as this one.

View File

@ -1,23 +0,0 @@
Generated Network Isolation Templates
-------------------------------------
These templates were generated by the UI tool at
https://github.com/cybertron/tripleo-scripts#net-iso-genpy
ui-settings.pickle is specific to the tool. TripleO will not use it when
doing deployments with these templates, but it is needed to be able to
load the templates into the UI again. Note that the UI only reads this file,
so any changes made by hand to the templates will not be reflected in the UI.
The network-isolation.yaml file needs to reference the port files shipped with
tripleo-heat-templates, so by default the tool generates the paths assuming
network-isolation.yaml will be copied into the environments/ directory of
tripleo-heat-templates.
If the standard tripleo-heat-templates are in use, then the
network-isolation-absolute.yaml file can be used instead. It has hard-coded
references to the port files in /usr/share/openstack-tripleo-heat-templates.
If the generated network isolation templates are at ~/generated-templates, an
example deployment command would look like:
openstack overcloud deploy --templates -e ~/generated-templates/network-isolation-absolute.yaml -e ~/generated-templates/network-environment.yaml

View File

@ -1,25 +0,0 @@
resource_registry:
OS::TripleO::BlockStorage::Net::SoftwareConfig: nic-configs/cinder-storage.yaml
OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml
OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: nic-configs/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: nic-configs/ceph-storage.yaml
parameter_defaults:
ControlPlaneSubnetCidr: '24'
ControlPlaneDefaultRoute: 192.0.2.1
EC2MetadataIp: 192.0.2.1
ExternalNetCidr: 10.0.0.0/24
ExternalAllocationPools: [{"start": "10.0.0.10", "end": "10.0.0.50"}]
ExternalInterfaceDefaultRoute: 10.0.0.1
NeutronExternalNetworkBridge: "''"
InternalApiNetCidr: 172.17.0.0/24
InternalApiAllocationPools: [{"start": "172.17.0.10", "end": "172.17.0.250"}]
StorageNetCidr: 172.18.0.0/24
StorageAllocationPools: [{"start": "172.18.0.10", "end": "172.18.0.250"}]
StorageMgmtNetCidr: 172.19.0.0/24
StorageMgmtAllocationPools: [{"start": "172.19.0.10", "end": "172.19.0.250"}]
TenantNetCidr: 172.16.0.0/24
TenantAllocationPools: [{"start": "172.16.0.10", "end": "172.16.0.250"}]
DnsServers: ["8.8.8.8", "8.8.4.4"]

View File

@ -1,28 +0,0 @@
resource_registry:
# Redis
OS::TripleO::Network::Ports::RedisVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml
# External
OS::TripleO::Network::External: /usr/share/openstack-tripleo-heat-templates/network/external.yaml
OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
# InternalApi
OS::TripleO::Network::InternalApi: /usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
# Storage
OS::TripleO::Network::Storage: /usr/share/openstack-tripleo-heat-templates/network/storage.yaml
OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
# StorageMgmt
OS::TripleO::Network::StorageMgmt: /usr/share/openstack-tripleo-heat-templates/network/storage_mgmt.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
OS::TripleO::CephStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
# Tenant
OS::TripleO::Network::Tenant: /usr/share/openstack-tripleo-heat-templates/network/tenant.yaml
OS::TripleO::Network::Ports::TenantVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml

View File

@ -1,28 +0,0 @@
resource_registry:
# Redis
OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip.yaml
# External
OS::TripleO::Network::External: ../network/external.yaml
OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external.yaml
OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external.yaml
# InternalApi
OS::TripleO::Network::InternalApi: ../network/internal_api.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/internal_api.yaml
OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api.yaml
OS::TripleO::Compute::Ports::InternalApiPort: ../network/ports/internal_api.yaml
# Storage
OS::TripleO::Network::Storage: ../network/storage.yaml
OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/storage.yaml
OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage.yaml
OS::TripleO::Compute::Ports::StoragePort: ../network/ports/storage.yaml
OS::TripleO::CephStorage::Ports::StoragePort: ../network/ports/storage.yaml
# StorageMgmt
OS::TripleO::Network::StorageMgmt: ../network/storage_mgmt.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/storage_mgmt.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
OS::TripleO::CephStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
# Tenant
OS::TripleO::Network::Tenant: ../network/tenant.yaml
OS::TripleO::Network::Ports::TenantVipPort: ../network/ports/tenant.yaml
OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant.yaml
OS::TripleO::Compute::Ports::TenantPort: ../network/ports/tenant.yaml

View File

@ -1,119 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config:
- type: interface
name: nic1
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- /
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- default: true
next_hop: {get_param: ControlPlaneDefaultRoute}
- type: interface
name: nic4
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: interface
name: nic5
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageMgmtIpSubnet}
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,92 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config: []
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,130 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config:
- type: interface
name: nic1
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- /
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- default: true
next_hop: {get_param: ControlPlaneDefaultRoute}
- type: interface
name: nic3
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
- type: interface
name: nic4
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: ovs_bridge
name: br-tenant
dns_servers: {get_param: DnsServers}
use_dhcp: false
addresses:
- ip_netmask: {get_param: TenantIpSubnet}
members:
- type: interface
name: nic6
mtu: 1350
primary: true
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,148 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config:
- type: interface
name: nic1
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- /
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- type: ovs_bridge
name: br-ex
dns_servers: {get_param: DnsServers}
use_dhcp: false
addresses:
- ip_netmask: {get_param: ExternalIpSubnet}
routes:
- ip_netmask: 0.0.0.0/0
next_hop: {get_param: ExternalInterfaceDefaultRoute}
members:
- type: interface
name: nic2
mtu: 1350
primary: true
- type: interface
name: nic3
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
- type: interface
name: nic4
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: interface
name: nic5
mtu: 1350
use_dhcp: false
addresses:
- ip_netmask: {get_param: StorageMgmtIpSubnet}
- type: ovs_bridge
name: br-tenant
dns_servers: {get_param: DnsServers}
use_dhcp: false
addresses:
- ip_netmask: {get_param: TenantIpSubnet}
members:
- type: interface
name: nic6
mtu: 1350
primary: true
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,92 +0,0 @@
heat_template_version: 2015-04-30
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal API network
type: string
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
BondInterfaceOvsOptions:
default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
type: string
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
ManagementNetworkVlanID:
default: 60
description: Vlan ID for the management network traffic.
type: number
ExternalInterfaceDefaultRoute:
default: '10.0.0.1'
description: default route for the external network
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
type: string
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
DnsServers: # Override this via parameter_defaults
default: []
description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
resources:
OsNetConfigImpl:
properties:
config:
os_net_config:
network_config: []
group: os-apply-config
type: OS::Heat::StructuredConfig
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}

View File

@ -1,641 +0,0 @@
(dp0
S'global_data'
p1
(dp2
S'control'
p3
(dp4
S'route'
p5
V192.0.2.1
p6
sS'mask'
p7
I24
sS'ec2'
p8
V192.0.2.1
p9
ssS'major'
p10
I1
sS'management'
p11
(dp12
S'start'
p13
V172.20.0.10
p14
sS'cidr'
p15
V172.20.0.0/24
p16
sS'vlan'
p17
I6
sS'end'
p18
V172.20.0.250
p19
ssS'dns2'
p20
V8.8.4.4
p21
sS'dns1'
p22
V8.8.8.8
p23
sS'storage'
p24
(dp25
g13
V172.18.0.10
p26
sg15
V172.18.0.0/24
p27
sg17
I3
sg18
V172.18.0.250
p28
ssS'auto_routes'
p29
I01
sS'bond_options'
p30
V
p31
sS'external'
p32
(dp33
S'bridge'
p34
V''
p35
sg18
V10.0.0.50
p36
sg17
I1
sg13
V10.0.0.10
p37
sg15
V10.0.0.0/24
p38
sS'gateway'
p39
V10.0.0.1
p40
ssS'internal_api'
p41
(dp42
g13
V172.17.0.10
p43
sg15
V172.17.0.0/24
p44
sg17
I2
sg18
V172.17.0.250
p45
ssS'ipv6'
p46
I00
sS'storage_mgmt'
p47
(dp48
g13
V172.19.0.10
p49
sg15
V172.19.0.0/24
p50
sg17
I4
sg18
V172.19.0.250
p51
ssS'minor'
p52
I2
sS'tenant'
p53
(dp54
g13
V172.16.0.10
p55
sg15
V172.16.0.0/24
p56
sg17
I5
sg18
V172.16.0.250
p57
sssS'data'
p58
(dp59
S'cinder-storage.yaml'
p60
(lp61
sS'ceph-storage.yaml'
p62
(lp63
(dp64
Vaddresses
p65
(lp66
sVnetwork
p67
VControlPlane
p68
sVprimary
p69
I01
sVmtu
p70
I1350
sS'members'
p71
(lp72
sVroutes
p73
(lp74
sVuse_dhcp
p75
I00
sVtype
p76
Vinterface
p77
sVname
p78
Vnic1
p79
sa(dp80
Vaddresses
p81
(lp82
sVnetwork
p83
VStorage
p84
sVprimary
p85
I01
sVmtu
p86
I1350
sg71
(lp87
sVroutes
p88
(lp89
sVuse_dhcp
p90
I00
sVtype
p91
Vinterface
p92
sVname
p93
Vnic4
p94
sa(dp95
Vaddresses
p96
(lp97
sVnetwork
p98
VStorageMgmt
p99
sVprimary
p100
I01
sVmtu
p101
I1350
sg71
(lp102
sVroutes
p103
(lp104
sVuse_dhcp
p105
I00
sVtype
p106
Vinterface
p107
sVname
p108
Vnic5
p109
sasS'controller.yaml'
p110
(lp111
(dp112
Vaddresses
p113
(lp114
sVnetwork
p115
VControlPlane
p116
sVprimary
p117
I01
sVmtu
p118
I1350
sg71
(lp119
sVroutes
p120
(lp121
sVuse_dhcp
p122
I00
sVtype
p123
Vinterface
p124
sVname
p125
Vnic1
p126
sa(dp127
Vdns_servers
p128
V{get_param: DnsServers}
p129
sVaddresses
p130
(lp131
sVnetwork
p132
VExternal
p133
sVmtu
p134
I-1
sg71
(lp135
(dp136
Vaddresses
p137
(lp138
sVnetwork
p139
VNone
p140
sVprimary
p141
I01
sVmtu
p142
I1350
sg71
(lp143
sVroutes
p144
(lp145
sVuse_dhcp
p146
I00
sVtype
p147
Vinterface
p148
sVname
p149
Vnic2
p150
sasVroutes
p151
(lp152
sVuse_dhcp
p153
I00
sVtype
p154
Vovs_bridge
p155
sVname
p156
Vbr-ex
p157
sa(dp158
Vaddresses
p159
(lp160
sVnetwork
p161
VInternalApi
p162
sVprimary
p163
I01
sVmtu
p164
I1350
sg71
(lp165
sVroutes
p166
(lp167
sVuse_dhcp
p168
I00
sVtype
p169
Vinterface
p170
sVname
p171
Vnic3
p172
sa(dp173
Vaddresses
p174
(lp175
sVnetwork
p176
VStorage
p177
sVprimary
p178
I01
sVmtu
p179
I1350
sg71
(lp180
sVroutes
p181
(lp182
sVuse_dhcp
p183
I00
sVtype
p184
Vinterface
p185
sVname
p186
Vnic4
p187
sa(dp188
Vaddresses
p189
(lp190
sVnetwork
p191
VStorageMgmt
p192
sVprimary
p193
I01
sVmtu
p194
I1350
sg71
(lp195
sVroutes
p196
(lp197
sVuse_dhcp
p198
I00
sVtype
p199
Vinterface
p200
sVname
p201
Vnic5
p202
sa(dp203
Vdns_servers
p204
V{get_param: DnsServers}
p205
sVaddresses
p206
(lp207
sVnetwork
p208
VTenant
p209
sVmtu
p210
I-1
sg71
(lp211
(dp212
Vaddresses
p213
(lp214
sVnetwork
p215
VNone
p216
sVprimary
p217
I01
sVmtu
p218
I1350
sg71
(lp219
sVroutes
p220
(lp221
sVuse_dhcp
p222
I00
sVtype
p223
Vinterface
p224
sVname
p225
Vnic6
p226
sasVroutes
p227
(lp228
sVuse_dhcp
p229
I00
sVtype
p230
Vovs_bridge
p231
sVname
p232
Vbr-tenant
p233
sasS'swift-storage.yaml'
p234
(lp235
sS'compute.yaml'
p236
(lp237
(dp238
Vaddresses
p239
(lp240
sVnetwork
p241
VControlPlane
p242
sVprimary
p243
I01
sVmtu
p244
I1350
sg71
(lp245
sVroutes
p246
(lp247
sVuse_dhcp
p248
I00
sVtype
p249
Vinterface
p250
sVname
p251
Vnic1
p252
sa(dp253
Vaddresses
p254
(lp255
sVnetwork
p256
VInternalApi
p257
sVprimary
p258
I01
sVmtu
p259
I1350
sg71
(lp260
sVroutes
p261
(lp262
sVuse_dhcp
p263
I00
sVtype
p264
Vinterface
p265
sVname
p266
Vnic3
p267
sa(dp268
Vaddresses
p269
(lp270
sVnetwork
p271
VStorage
p272
sVprimary
p273
I01
sVmtu
p274
I1350
sg71
(lp275
sVroutes
p276
(lp277
sVuse_dhcp
p278
I00
sVtype
p279
Vinterface
p280
sVname
p281
Vnic4
p282
sa(dp283
Vdns_servers
p284
V{get_param: DnsServers}
p285
sVaddresses
p286
(lp287
sVnetwork
p288
VTenant
p289
sVmtu
p290
I-1
sg71
(lp291
(dp292
Vaddresses
p293
(lp294
sVnetwork
p295
VNone
p296
sVprimary
p297
I01
sVmtu
p298
I1350
sg71
(lp299
sVroutes
p300
(lp301
sVuse_dhcp
p302
I00
sVtype
p303
Vinterface
p304
sVname
p305
Vnic6
p306
sasVroutes
p307
(lp308
sVuse_dhcp
p309
I00
sVtype
p310
Vovs_bridge
p311
sVname
p312
Vbr-tenant
p313
sass.

View File

@ -45,7 +45,7 @@ def _parse_args():
parser.add_argument('--provision_net',
dest='provision_net',
default='provision',
help='Provisioning network name')
help='DEPRECATED: This parameter is ignored.')
parser.add_argument('--nodes_json',
dest='nodes_json',
default='nodes.json',
@ -71,31 +71,22 @@ def _parse_args():
return args
def _get_from_env(env, name):
try:
return env['parameters'][name]
except KeyError:
return env['parameter_defaults'][name]
def _get_names(args):
if args.env is None:
bmc_base = args.bmc_prefix
baremetal_base = args.baremetal_prefix
provision_net = args.provision_net
# FIXME: This is not necessarily true.
undercloud_name = 'undercloud'
else:
with open(args.env) as f:
e = yaml.safe_load(f)
bmc_base = _get_from_env(e, 'bmc_prefix')
baremetal_base = _get_from_env(e, 'baremetal_prefix')
provision_net = _get_from_env(e, 'provision_net')
bmc_base = e['parameter_defaults']['bmc_prefix']
baremetal_base = e['parameter_defaults']['baremetal_prefix']
role = e.get('parameter_defaults', {}).get('role')
if role and baremetal_base.endswith('-' + role):
baremetal_base = baremetal_base[:-len(role) - 1]
undercloud_name = e.get('parameter_defaults', {}).get('undercloud_name') # noqa: E501
return bmc_base, baremetal_base, provision_net, undercloud_name
return bmc_base, baremetal_base, undercloud_name
def _get_clients():
@ -116,10 +107,17 @@ def _get_ports(neutron, bmc_base, baremetal_base):
raise RuntimeError('Found different numbers of baremetal and '
'bmc ports. bmc: %s baremetal: %s' % (bmc_ports,
bm_ports))
return bmc_ports, bm_ports
provision_net_map = {}
for port in bm_ports:
provision_net_map.update({
port.get('id'):
neutron.list_subnets(
id=port['fixed_ips'][0]['subnet_id'])['subnets'][0].get(
'name')})
return bmc_ports, bm_ports, provision_net_map
def _build_nodes(nova, glance, bmc_ports, bm_ports, provision_net,
def _build_nodes(nova, glance, bmc_ports, bm_ports, provision_net_map,
baremetal_base, undercloud_name, driver, physical_network):
node_template = {
'pm_type': driver,
@ -136,9 +134,6 @@ def _build_nodes(nova, glance, bmc_ports, bm_ports, provision_net,
}
if physical_network:
node_template.pop('mac')
node_template.update(
{'ports': [{'address': '', 'physical_network': provision_net}]})
nodes = []
bmc_bm_pairs = []
cache = {}
@ -151,9 +146,11 @@ def _build_nodes(nova, glance, bmc_ports, bm_ports, provision_net,
node = dict(node_template)
node['pm_addr'] = bmc_port['fixed_ips'][0]['ip_address']
bmc_bm_pairs.append((node['pm_addr'], baremetal.name))
provision_net = provision_net_map.get(baremetal_port['id'])
mac = baremetal.addresses[provision_net][0]['OS-EXT-IPS-MAC:mac_addr']
if physical_network:
node['ports'][0]['address'] = mac
node.update({'ports': [{'address': mac,
'physical_network': provision_net}]})
else:
node['mac'] = [mac]
if not cache.get(baremetal.flavor['id']):
@ -282,14 +279,15 @@ def _write_pairs(bmc_bm_pairs):
def main():
args = _parse_args()
bmc_base, baremetal_base, provision_net, undercloud_name = _get_names(args)
bmc_base, baremetal_base, undercloud_name = _get_names(args)
nova, neutron, glance = _get_clients()
bmc_ports, bm_ports = _get_ports(neutron, bmc_base, baremetal_base)
bmc_ports, bm_ports, provision_net_map = _get_ports(neutron, bmc_base,
baremetal_base)
(nodes,
bmc_bm_pairs,
extra_nodes,
network_details) = _build_nodes(nova, glance, bmc_ports, bm_ports,
provision_net, baremetal_base,
provision_net_map, baremetal_base,
undercloud_name, args.driver,
args.physical_network)
_write_nodes(nodes, extra_nodes, network_details, args)

View File

@ -101,27 +101,18 @@ def _process_args(args):
def _add_identifier(env_data, name, identifier, default=None):
# We require both sections for id environments
if not env_data.get('parameters'):
env_data['parameters'] = {}
if not env_data.get('parameter_defaults'):
env_data['parameter_defaults'] = {}
parameter = False
try:
original = env_data['parameters'][name]
parameter = True
except KeyError:
original = env_data['parameter_defaults'].get(name)
if original is None:
original = default
if original is None:
"""Append identifier to the end of parameter name in env_data
Look for ``name`` in the ``parameter_defaults`` key of ``env_data`` and
append '-``identifier``' to it.
"""
value = env_data['parameter_defaults'].get(name)
if value is None:
value = default
if value is None:
raise RuntimeError('No base value found when adding id')
value = '%s-%s' % (original, identifier)
# If it was passed in as a parameter we need to set it in the parameters
# section or it will be overridden by the original value. We can't always
# do that though because some parameters are not exposed at the top-level.
if parameter:
env_data['parameters'][name] = value
if identifier:
value = '%s-%s' % (value, identifier)
env_data['parameter_defaults'][name] = value
@ -142,6 +133,8 @@ def _build_env_data(env_paths):
def _generate_id_env(args):
env_data = _build_env_data(args.env)
_add_identifier(env_data, 'provision_net', args.id, default='provision')
_add_identifier(env_data, 'provision_net2', args.id, default='provision2')
_add_identifier(env_data, 'provision_net3', args.id, default='provision3')
_add_identifier(env_data, 'public_net', args.id, default='public')
_add_identifier(env_data,
'baremetal_prefix',
@ -163,6 +156,16 @@ def _generate_id_env(args):
default='storage_mgmt')
_add_identifier(env_data, 'overcloud_tenant_net', args.id,
default='tenant')
# TODO(bnemec): Network names should be parameterized so we don't have to
# hardcode them into deploy.py like this.
_add_identifier(env_data, 'overcloud_internal_net2', args.id,
default='overcloud_internal2')
_add_identifier(env_data, 'overcloud_storage_net2', args.id,
default='overcloud_storage2')
_add_identifier(env_data, 'overcloud_storage_mgmt_net2', args.id,
default='overcloud_storage_mgmt2')
_add_identifier(env_data, 'overcloud_tenant_net2', args.id,
default='overcloud_tenant2')
# We don't modify any resource_registry entries, and because we may be
# writing the new env file to a different path it can break relative paths
# in the resource_registry.
@ -182,14 +185,19 @@ def _validate_env(args, env_paths):
if not args.id:
env_data = _build_env_data(env_paths)
role = env_data.get('parameter_defaults', {}).get('role')
try:
prefix = env_data['parameters']['baremetal_prefix']
except KeyError:
prefix = env_data['parameter_defaults']['baremetal_prefix']
prefix = env_data['parameter_defaults']['baremetal_prefix']
if role and prefix.endswith('-' + role):
raise RuntimeError('baremetal_prefix ends with role name. This '
'will break build-nodes-json. Please choose '
'a different baremetal_prefix or role name.')
for path in env_paths:
if 'port-security.yaml' in path:
print('WARNING: port-security environment file detected. '
'port-security is now the default. The existing '
'port-security environment files are deprecated and may be '
'removed in the future. Please use the environment files '
'without "port-security" in their filename instead.'
)
def _get_heat_client():
@ -284,17 +292,24 @@ def _process_role(role_file, base_envs, stack_name, args):
'overcloud_storage_net', 'overcloud_tenant_net',
]
# Parameters that are inherited but can be overridden by the role
allowed_parameter_keys = ['baremetal_image', 'bmc_flavor', 'key_name']
allowed_registry_keys = ['OS::OVB::BaremetalPorts', 'OS::OVB::BMCPort']
allowed_parameter_keys = ['baremetal_image', 'bmc_flavor', 'key_name',
'provision_net', 'overcloud_internal_net',
'overcloud_storage_net',
'overcloud_storage_mgmt_net',
'overcloud_tenant_net',
]
allowed_registry_keys = ['OS::OVB::BaremetalPorts', 'OS::OVB::BMCPort',
'OS::OVB::UndercloudNetworks',
]
# NOTE(bnemec): Not sure what purpose this serves. Can probably be removed.
role_env = role_data
# resource_registry is intentionally omitted as it should not be inherited
for section in ['parameters', 'parameter_defaults']:
role_env.setdefault(section, {}).update({
k: v for k, v in base_data.get(section, {}).items()
if k in inherited_keys and
(k not in role_env.get(section, {}) or
k not in allowed_parameter_keys)
})
role_env.setdefault('parameter_defaults', {}).update({
k: v for k, v in base_data.get('parameter_defaults', {}).items()
if k in inherited_keys and
(k not in role_env.get('parameter_defaults', {}) or
k not in allowed_parameter_keys)
})
# Most of the resource_registry should not be included in role envs.
# Only allow specific entries that may be needed.
role_env.setdefault('resource_registry', {})
@ -307,22 +322,44 @@ def _process_role(role_file, base_envs, stack_name, args):
if k not in role_reg and k in base_reg:
role_reg[k] = base_reg[k]
# We need to start with the unmodified prefix
try:
base_prefix = orig_data['parameters']['baremetal_prefix']
except KeyError:
base_prefix = orig_data['parameter_defaults']['baremetal_prefix']
base_prefix = orig_data['parameter_defaults']['baremetal_prefix']
# But we do need to add the id if one is in use
if args.id:
base_prefix += '-%s' % args.id
try:
bmc_prefix = base_data['parameters']['bmc_prefix']
except KeyError:
bmc_prefix = base_data['parameter_defaults']['bmc_prefix']
bmc_prefix = base_data['parameter_defaults']['bmc_prefix']
role = role_data['parameter_defaults']['role']
if '_' in role:
raise RuntimeError('_ character not allowed in role name "%s".' % role)
role_env['parameters']['baremetal_prefix'] = '%s-%s' % (base_prefix, role)
role_env['parameters']['bmc_prefix'] = '%s-%s' % (bmc_prefix, role)
role_env['parameter_defaults']['baremetal_prefix'] = ('%s-%s' %
(base_prefix, role))
role_env['parameter_defaults']['bmc_prefix'] = '%s-%s' % (bmc_prefix, role)
# At this time roles are only attached to a single set of networks, so
# we use just the primary network parameters.
def maybe_add_id(role_env, name, args):
"""Add id only if one is not already present
When we inherit network names, they will already have the id present.
However, if the user overrides the network name (for example, when
using multiple routed networks) then it should not have the id.
We can detect which is the case by looking at whether the name already
ends with -id.
"""
if (args.id and
not role_env['parameter_defaults'].get(name, '')
.endswith('-' + args.id)):
_add_identifier(role_env, name, args.id)
maybe_add_id(role_env, 'provision_net', args)
maybe_add_id(role_env, 'overcloud_internal_net', args)
maybe_add_id(role_env, 'overcloud_storage_net', args)
maybe_add_id(role_env, 'overcloud_storage_mgmt_net', args)
maybe_add_id(role_env, 'overcloud_tenant_net', args)
role_env['parameter_defaults']['networks'] = {
'private': role_env['parameter_defaults']['private_net'],
'provision': role_env['parameter_defaults']['provision_net'],
'public': role_env['parameter_defaults']['public_net'],
}
role_file = 'env-%s-%s.yaml' % (stack_name, role)
_write_role_file(role_env, role_file)
return role_file, role

View File

@ -28,63 +28,19 @@ import os
import sys
import time
import novaclient as nc
from novaclient import client as novaclient
from novaclient import exceptions
try:
import os_client_config
except ImportError:
os_client_config = None
import os_client_config
import pyghmi.ipmi.bmc as bmc
NO_OCC_DEPRECATION = ('WARNING: Creating novaclient without os-client-config '
'is deprecated. Please install os-client-config on the '
'BMC image.')
class OpenStackBmc(bmc.Bmc):
def __init__(self, authdata, port, address, instance, user, password,
tenant, auth_url, project, user_domain, project_domain,
cache_status, os_cloud):
def __init__(self, authdata, port, address, instance, cache_status,
os_cloud):
super(OpenStackBmc, self).__init__(authdata,
port=port,
address=address)
if os_client_config:
if user:
# NOTE(bnemec): This is deprecated. clouds.yaml is a much
# more robust way to specify auth details.
kwargs = dict(os_username=user,
os_password=password,
os_project_name=tenant,
os_auth_url=auth_url,
os_user_domain=user_domain,
os_project_domain=project_domain)
self.novaclient = os_client_config.make_client('compute',
**kwargs)
else:
self.novaclient = os_client_config.make_client('compute',
cloud=os_cloud)
else:
# NOTE(bnemec): This path was deprecated 2017-7-17
self.log(NO_OCC_DEPRECATION)
if '/v3' not in auth_url:
# novaclient 7+ is backwards-incompatible :-(
if int(nc.__version__[0]) <= 6:
self.novaclient = novaclient.Client(2, user, password,
tenant, auth_url)
else:
self.novaclient = novaclient.Client(2, user, password,
auth_url=auth_url,
project_name=tenant)
else:
self.novaclient = novaclient.Client(
2, user, password,
auth_url=auth_url,
project_name=project,
user_domain_name=user_domain,
project_domain_name=project_domain
)
self.novaclient = os_client_config.make_client('compute',
cloud=os_cloud)
self.instance = None
self.cache_status = cache_status
self.cached_status = None
@ -234,55 +190,6 @@ def main():
required=True,
help='The uuid or name of the OpenStack instance '
'to manage')
parser.add_argument('--os-user',
dest='user',
required=False,
default='',
help='DEPRECATED: Use --os-cloud to specify auth '
'details. '
'The user for connecting to OpenStack')
parser.add_argument('--os-password',
dest='password',
required=False,
default='',
help='DEPRECATED: Use --os-cloud to specify auth '
'details. '
'The password for connecting to OpenStack')
parser.add_argument('--os-tenant',
dest='tenant',
required=False,
default='',
help='DEPRECATED: Use --os-cloud to specify auth '
'details. '
'The tenant for connecting to OpenStack')
parser.add_argument('--os-auth-url',
dest='auth_url',
required=False,
default='',
help='DEPRECATED: Use --os-cloud to specify auth '
'details. '
'The OpenStack Keystone auth url')
parser.add_argument('--os-project',
dest='project',
required=False,
default='',
help='DEPRECATED: Use --os-cloud to specify auth '
'details. '
'The project for connecting to OpenStack')
parser.add_argument('--os-user-domain',
dest='user_domain',
required=False,
default='',
help='DEPRECATED: Use --os-cloud to specify auth '
'details. '
'The user domain for connecting to OpenStack')
parser.add_argument('--os-project-domain',
dest='project_domain',
required=False,
default='',
help='DEPRECATED: Use --os-cloud to specify auth '
'details. '
'The project domain for connecting to OpenStack')
parser.add_argument('--cache-status',
dest='cache_status',
default=False,
@ -293,7 +200,6 @@ def main():
'it may become out of sync.')
parser.add_argument('--os-cloud',
dest='os_cloud',
required=False,
default=os.environ.get('OS_CLOUD'),
help='Use the specified cloud from clouds.yaml. '
'Defaults to the OS_CLOUD environment variable.')
@ -306,13 +212,6 @@ def main():
mybmc = OpenStackBmc({'admin': 'password'}, port=args.port,
address=addr_format % args.address,
instance=args.instance,
user=args.user,
password=args.password,
tenant=args.tenant,
auth_url=args.auth_url,
project=args.project,
user_domain=args.user_domain,
project_domain=args.project_domain,
cache_status=args.cache_status,
os_cloud=args.os_cloud)
mybmc.listen()

View File

@ -70,13 +70,11 @@ class TestBuildNodesJson(testtools.TestCase):
args.env = None
args.bmc_prefix = 'bmc-foo'
args.baremetal_prefix = 'baremetal-foo'
args.provision_net = 'provision-foo'
args.add_undercloud = False
bmc_base, baremetal_base, provision_net, undercloud_name = (
bmc_base, baremetal_base, undercloud_name = (
build_nodes_json._get_names(args))
self.assertEqual('bmc-foo', bmc_base)
self.assertEqual('baremetal-foo', baremetal_base)
self.assertEqual('provision-foo', provision_net)
self.assertEqual('undercloud', undercloud_name)
def test_get_names_no_env_w_undercloud(self):
@ -84,37 +82,13 @@ class TestBuildNodesJson(testtools.TestCase):
args.env = None
args.bmc_prefix = 'bmc-foo'
args.baremetal_prefix = 'baremetal-foo'
args.provision_net = 'provision-foo'
args.add_undercloud = True
bmc_base, baremetal_base, provision_net, undercloud_name = (
bmc_base, baremetal_base, undercloud_name = (
build_nodes_json._get_names(args))
self.assertEqual('bmc-foo', bmc_base)
self.assertEqual('baremetal-foo', baremetal_base)
self.assertEqual('provision-foo', provision_net)
self.assertEqual('undercloud', undercloud_name)
@mock.patch('openstack_virtual_baremetal.build_nodes_json.open',
create=True)
@mock.patch('yaml.safe_load')
def test_get_names_old_env(self, mock_load, mock_open):
args = mock.Mock()
args.env = 'foo.yaml'
args.add_undercloud = False
mock_env = {
'parameters': {
'bmc_prefix': 'bmc-foo',
'baremetal_prefix': 'baremetal-foo',
'provision_net': 'provision-foo'
},
}
mock_load.return_value = mock_env
bmc_base, baremetal_base, provision_net, undercloud_name = (
build_nodes_json._get_names(args))
self.assertEqual('bmc-foo', bmc_base)
self.assertEqual('baremetal-foo', baremetal_base)
self.assertEqual('provision-foo', provision_net)
self.assertIsNone(undercloud_name)
@mock.patch('openstack_virtual_baremetal.build_nodes_json.open',
create=True)
@mock.patch('yaml.safe_load')
@ -126,15 +100,13 @@ class TestBuildNodesJson(testtools.TestCase):
'parameter_defaults': {
'bmc_prefix': 'bmc-foo',
'baremetal_prefix': 'baremetal-foo',
'provision_net': 'provision-foo'
},
}
mock_load.return_value = mock_env
bmc_base, baremetal_base, provision_net, undercloud_name = (
bmc_base, baremetal_base, undercloud_name = (
build_nodes_json._get_names(args))
self.assertEqual('bmc-foo', bmc_base)
self.assertEqual('baremetal-foo', baremetal_base)
self.assertEqual('provision-foo', provision_net)
self.assertIsNone(undercloud_name)
@mock.patch('openstack_virtual_baremetal.build_nodes_json.open',
@ -148,16 +120,14 @@ class TestBuildNodesJson(testtools.TestCase):
'parameter_defaults': {
'bmc_prefix': 'bmc',
'baremetal_prefix': 'baremetal',
'provision_net': 'provision',
'role': 'foo',
},
}
mock_load.return_value = mock_env
bmc_base, baremetal_base, provision_net, undercloud_name = (
bmc_base, baremetal_base, undercloud_name = (
build_nodes_json._get_names(args))
self.assertEqual('bmc', bmc_base)
self.assertEqual('baremetal', baremetal_base)
self.assertEqual('provision', provision_net)
self.assertIsNone(undercloud_name)
@mock.patch('openstack_virtual_baremetal.build_nodes_json.open',
@ -171,16 +141,14 @@ class TestBuildNodesJson(testtools.TestCase):
'parameter_defaults': {
'bmc_prefix': 'bmc-foo',
'baremetal_prefix': 'baremetal-foo-bar',
'provision_net': 'provision-foo',
'role': 'bar',
},
}
mock_load.return_value = mock_env
bmc_base, baremetal_base, provision_net, undercloud_name = (
bmc_base, baremetal_base, undercloud_name = (
build_nodes_json._get_names(args))
self.assertEqual('bmc-foo', bmc_base)
self.assertEqual('baremetal-foo', baremetal_base)
self.assertEqual('provision-foo', provision_net)
self.assertIsNone(undercloud_name)
@mock.patch('os_client_config.make_client')
@ -203,21 +171,42 @@ class TestBuildNodesJson(testtools.TestCase):
def test_get_ports(self):
neutron = mock.Mock()
fake_fixed_ips = [{'subnet_id': 'provision_id'}]
fake_ports = {
'ports': [
{'name': 'random'},
{'name': 'bmc_1'},
{'name': 'bmc_0'},
{'name': 'baremetal_1'},
{'name': 'baremetal_0'},
{'name': 'random',
'id': 'random_id',
'fixed_ips': fake_fixed_ips},
{'name': 'bmc_1',
'id': 'bmc_1_id',
'fixed_ips': fake_fixed_ips},
{'name': 'bmc_0',
'id': 'bmc_0_id',
'fixed_ips': fake_fixed_ips},
{'name': 'baremetal_1',
'id': 'baremetal_1_id',
'fixed_ips': fake_fixed_ips},
{'name': 'baremetal_0',
'id': 'baremetal_0_id',
'fixed_ips': fake_fixed_ips},
]
}
fake_subnets = {
'subnets': [
{'name': 'provision',
'id': 'provision_id'}
]
}
neutron.list_ports.return_value = fake_ports
bmc_ports, bm_ports = build_nodes_json._get_ports(neutron, 'bmc',
'baremetal')
self.assertEqual([{'name': 'bmc_0'}, {'name': 'bmc_1'}], bmc_ports)
self.assertEqual([{'name': 'baremetal_0'}, {'name': 'baremetal_1'}],
neutron.list_subnets.return_value = fake_subnets
bmc_ports, bm_ports, provision_net_map = build_nodes_json._get_ports(
neutron, 'bmc', 'baremetal')
self.assertEqual([fake_ports['ports'][2], fake_ports['ports'][1]],
bmc_ports)
self.assertEqual([fake_ports['ports'][4], fake_ports['ports'][3]],
bm_ports)
self.assertEqual({'baremetal_0_id': 'provision',
'baremetal_1_id': 'provision'}, provision_net_map)
def test_get_ports_mismatch(self):
neutron = mock.Mock()
@ -228,20 +217,38 @@ class TestBuildNodesJson(testtools.TestCase):
def test_get_ports_multiple(self):
neutron = mock.Mock()
fake_fixed_ips = [{'subnet_id': 'provision_id'}]
fake_ports = {
'ports': [
{'name': 'random'},
{'name': 'bmc-foo_0'},
{'name': 'bmc-bar_0'},
{'name': 'baremetal-foo_0'},
{'name': 'baremetal-bar_0'},
{'name': 'random',
'id': 'random_id',
'fixed_ips': fake_fixed_ips},
{'name': 'bmc-foo_0',
'id': 'bmc_foo_0_id',
'fixed_ips': fake_fixed_ips},
{'name': 'bmc-bar_0',
'id': 'bmc_bar_0_id',
'fixed_ips': fake_fixed_ips},
{'name': 'baremetal-foo_0',
'id': 'baremetal_foo_0_id',
'fixed_ips': fake_fixed_ips},
{'name': 'baremetal-bar_0',
'id': 'baremetal_bar_0_id',
'fixed_ips': fake_fixed_ips},
]
}
fake_subnets = {
'subnets': [
{'name': 'provision',
'id': 'provision_id'}
]
}
neutron.list_ports.return_value = fake_ports
bmc_ports, bm_ports = build_nodes_json._get_ports(neutron, 'bmc-foo',
'baremetal-foo')
self.assertEqual([{'name': 'bmc-foo_0'}], bmc_ports)
self.assertEqual([{'name': 'baremetal-foo_0'}], bm_ports)
neutron.list_subnets.return_value = fake_subnets
bmc_ports, bm_ports, provision_net_map = build_nodes_json._get_ports(
neutron, 'bmc-foo', 'baremetal-foo')
self.assertEqual([fake_ports['ports'][1]], bmc_ports)
self.assertEqual([fake_ports['ports'][3]], bm_ports)
def _fake_port(self, device_id, ip, mac):
return {'device_id': device_id,
@ -275,7 +282,11 @@ class TestBuildNodesJson(testtools.TestCase):
bmc_ports = [{'fixed_ips': [{'ip_address': '1.1.1.1'}]},
{'fixed_ips': [{'ip_address': '1.1.1.2'}]}
]
bm_ports = [{'device_id': '1'}, {'device_id': '2'}]
bm_ports = [{'device_id': '1', 'id': 'port_id_server1'},
{'device_id': '2', 'id': 'port_id_server2'}]
provision_net_map = {'port_id_server1': 'provision',
'port_id_server2': 'provision',
'port_id_server3': 'provision', }
physical_network = False
nova = mock.Mock()
servers = [mock.Mock(), mock.Mock(), mock.Mock()]
@ -304,8 +315,8 @@ class TestBuildNodesJson(testtools.TestCase):
bmc_bm_pairs,
extra_nodes,
network_details) = build_nodes_json._build_nodes(
nova, glance, bmc_ports, bm_ports, 'provision', 'bm', 'undercloud',
'pxe_ipmitool', physical_network)
nova, glance, bmc_ports, bm_ports, provision_net_map, 'bm',
'undercloud', 'pxe_ipmitool', physical_network)
expected_nodes = copy.deepcopy(TEST_NODES)
expected_nodes[1]['disk'] = 100
self.assertEqual(expected_nodes, nodes)
@ -323,7 +334,11 @@ class TestBuildNodesJson(testtools.TestCase):
bmc_ports = [{'fixed_ips': [{'ip_address': '1.1.1.1'}]},
{'fixed_ips': [{'ip_address': '1.1.1.2'}]}
]
bm_ports = [{'device_id': '1'}, {'device_id': '2'}]
bm_ports = [{'device_id': '1', 'id': 'port_id_server1'},
{'device_id': '2', 'id': 'port_id_server2'}]
provision_net_map = {'port_id_server1': 'provision',
'port_id_server2': 'provision',
'port_id_server3': 'provision', }
physical_network = False
nova = mock.Mock()
servers = [mock.Mock(), mock.Mock(), mock.Mock()]
@ -352,8 +367,8 @@ class TestBuildNodesJson(testtools.TestCase):
bmc_bm_pairs,
extra_nodes,
network_details) = build_nodes_json._build_nodes(
nova, glance, bmc_ports, bm_ports, 'provision', 'bm', 'undercloud',
'ipmi', physical_network)
nova, glance, bmc_ports, bm_ports, provision_net_map, 'bm',
'undercloud', 'ipmi', physical_network)
expected_nodes = copy.deepcopy(TEST_NODES)
expected_nodes[1]['disk'] = 100
for node in expected_nodes:
@ -372,7 +387,11 @@ class TestBuildNodesJson(testtools.TestCase):
bmc_ports = [{'fixed_ips': [{'ip_address': '1.1.1.1'}]},
{'fixed_ips': [{'ip_address': '1.1.1.2'}]}
]
bm_ports = [{'device_id': '1'}, {'device_id': '2'}]
bm_ports = [{'device_id': '1', 'id': 'port_id_server1'},
{'device_id': '2', 'id': 'port_id_server2'}]
provision_net_map = {'port_id_server1': 'provision',
'port_id_server2': 'provision',
'port_id_server3': 'provision', }
physical_network = False
nova = mock.Mock()
servers = [mock.Mock(), mock.Mock(), mock.Mock()]
@ -388,8 +407,8 @@ class TestBuildNodesJson(testtools.TestCase):
glance.images.get.return_value = mock_image_get
nodes, bmc_bm_pairs, extra_nodes, _ = build_nodes_json._build_nodes(
nova, glance, bmc_ports, bm_ports, 'provision', 'bm-foo', None,
'pxe_ipmitool', physical_network)
nova, glance, bmc_ports, bm_ports, provision_net_map, 'bm-foo',
None, 'pxe_ipmitool', physical_network)
expected_nodes = copy.deepcopy(TEST_NODES)
expected_nodes[0]['name'] = 'bm-foo-control-0'
expected_nodes[0]['capabilities'] = ('boot_option:local,'
@ -495,9 +514,9 @@ class TestBuildNodesJson(testtools.TestCase):
mock_parse_args.return_value = args
bmc_base = mock.Mock()
baremetal_base = mock.Mock()
provision_net = mock.Mock()
provision_net_map = mock.Mock()
undercloud_name = 'undercloud'
mock_get_names.return_value = (bmc_base, baremetal_base, provision_net,
mock_get_names.return_value = (bmc_base, baremetal_base,
undercloud_name)
nova = mock.Mock()
neutron = mock.Mock()
@ -505,7 +524,7 @@ class TestBuildNodesJson(testtools.TestCase):
mock_get_clients.return_value = (nova, neutron, glance)
bmc_ports = mock.Mock()
bm_ports = mock.Mock()
mock_get_ports.return_value = (bmc_ports, bm_ports)
mock_get_ports.return_value = (bmc_ports, bm_ports, provision_net_map)
nodes = mock.Mock()
pairs = mock.Mock()
extra_nodes = mock.Mock()
@ -521,7 +540,7 @@ class TestBuildNodesJson(testtools.TestCase):
mock_get_ports.assert_called_once_with(neutron, bmc_base,
baremetal_base)
mock_build_nodes.assert_called_once_with(nova, glance, bmc_ports,
bm_ports, provision_net,
bm_ports, provision_net_map,
baremetal_base,
undercloud_name,
args.driver,

View File

@ -89,14 +89,13 @@ class TestProcessArgs(unittest.TestCase):
self.assertRaises(ValueError, deploy._process_args, mock_args)
test_env = u"""parameters:
test_env = u"""parameter_defaults:
provision_net: provision
public_net: public
baremetal_prefix: baremetal
bmc_prefix: bmc
"""
test_env_param_defaults = u"""
parameter_defaults:
test_env_extra = u"""
overcloud_internal_net: internalapi
role: ''
"""
@ -115,21 +114,13 @@ test_env_output = {
class TestIdEnv(unittest.TestCase):
def test_add_identifier(self):
env_data = {'parameters': {'foo': 'bar'}}
deploy._add_identifier(env_data, 'foo', 'baz')
self.assertEqual('bar-baz', env_data['parameters']['foo'])
self.assertEqual('bar-baz', env_data['parameter_defaults']['foo'])
def test_add_identifier_defaults(self):
env_data = {'parameter_defaults': {'foo': 'bar'}}
deploy._add_identifier(env_data, 'foo', 'baz')
self.assertNotIn('foo', env_data['parameters'])
self.assertEqual('bar-baz', env_data['parameter_defaults']['foo'])
def test_add_identifier_different_section(self):
env_data = {'parameter_defaults': {'foo': 'bar'}}
deploy._add_identifier(env_data, 'foo', 'baz')
self.assertNotIn('foo', env_data['parameters'])
self.assertEqual('bar-baz', env_data['parameter_defaults']['foo'])
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
@ -138,14 +129,11 @@ class TestIdEnv(unittest.TestCase):
mock_args = mock.Mock()
mock_args.id = 'foo'
mock_args.env = ['foo.yaml']
env = test_env + 'parameter_defaults:'
mock_bed.return_value = yaml.safe_load(env)
mock_bed.return_value = yaml.safe_load(test_env)
path = deploy._generate_id_env(mock_args)
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
for k, v in test_env_output.items():
if k in mock_bed.return_value['parameters']:
self.assertEqual(v, dumped_dict['parameters'][k])
self.assertEqual(v, dumped_dict['parameter_defaults'][k])
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
@ -154,7 +142,7 @@ class TestIdEnv(unittest.TestCase):
mock_args = mock.Mock()
mock_args.id = 'foo'
mock_args.env = ['foo.yaml']
env = (test_env + test_env_param_defaults +
env = (test_env + test_env_extra +
' undercloud_name: test-undercloud\n')
mock_bed.return_value = yaml.safe_load(env)
env_output = dict(test_env_output)
@ -164,8 +152,6 @@ class TestIdEnv(unittest.TestCase):
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
for k, v in env_output.items():
if k in mock_bed.return_value['parameters']:
self.assertEqual(v, dumped_dict['parameters'][k])
self.assertEqual(v, dumped_dict['parameter_defaults'][k])
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
@ -174,7 +160,7 @@ class TestIdEnv(unittest.TestCase):
mock_args = mock.Mock()
mock_args.id = 'foo'
mock_args.env = ['foo.yaml']
env = (test_env + test_env_param_defaults)
env = (test_env + test_env_extra)
mock_bed.return_value = yaml.safe_load(env)
mock_bed.return_value['parameter_defaults']['role'] = 'compute'
env_output = dict(test_env_output)
@ -184,8 +170,6 @@ class TestIdEnv(unittest.TestCase):
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
for k, v in env_output.items():
if k in mock_bed.return_value['parameters']:
self.assertEqual(v, dumped_dict['parameters'][k])
self.assertEqual(v, dumped_dict['parameter_defaults'][k])
@ -195,25 +179,23 @@ role_base_data = {
'overcloud_storage_mgmt_net': 'storage_mgmt-foo',
'overcloud_internal_net': 'internal-foo',
'overcloud_storage_net': 'storage-foo',
'overcloud_tenant_net': 'tenant-foo',
'provision_net': 'provision-foo',
'public_net': 'public-foo',
'private_net': 'private',
'role': 'control',
'overcloud_tenant_net': 'tenant-foo'
},
'parameters': {
'os_user': 'admin',
'key_name': 'default',
'undercloud_name': 'undercloud-foo',
'bmc_image': 'bmc-base',
'baremetal_flavor': 'baremetal',
'os_auth_url': 'http://1.1.1.1:5000/v2.0',
'provision_net': 'provision-foo',
'os_password': 'password',
'os_tenant': 'admin',
'bmc_prefix': 'bmc-foo',
'public_net': 'public-foo',
'undercloud_image': 'centos7-base',
'baremetal_image': 'ipxe-boot',
'external_net': 'external',
'private_net': 'private',
'baremetal_prefix': 'baremetal-foo-control',
'undercloud_flavor': 'undercloud-16',
'node_count': 3,
@ -223,16 +205,15 @@ role_base_data = {
'OS::OVB::BaremetalNetworks': 'templates/baremetal-networks-all.yaml',
'OS::OVB::BaremetalPorts':
'templates/baremetal-ports-public-bond.yaml',
'OS::OVB::BMCPort': 'templates/bmc-port-port-security.yaml'
'OS::OVB::BMCPort': 'templates/bmc-port.yaml'
}
}
role_specific_data = {
'parameter_defaults': {
'role': 'compute',
},
'parameters': {
'key_name': 'default',
'baremetal_flavor': 'baremetal',
'baremetal_image': 'centos',
'bmc_image': 'bmc-base',
'bmc_prefix': 'bmc',
'node_count': 2,
@ -247,23 +228,21 @@ role_original_data = {
'parameter_defaults': {
'role': 'control',
'baremetal_prefix': 'baremetal',
},
'parameters': {
'public_net': 'public',
'private_net': 'private',
'provision_net': 'provision',
'os_user': 'admin',
'key_name': 'default',
'undercloud_name': 'undercloud',
'baremetal_flavor': 'baremetal',
'os_auth_url': 'http://1.1.1.1:5000/v2.0',
'provision_net': 'provision',
'bmc_image': 'bmc-base',
'os_tenant': 'admin',
'bmc_prefix': 'bmc',
'public_net': 'public',
'undercloud_image': 'centos7-base',
'baremetal_image': 'ipxe-boot',
'external_net': 'external',
'os_password': 'password',
'private_net': 'private',
'undercloud_flavor': 'undercloud-16',
'node_count': 3,
'bmc_flavor': 'bmc'
@ -272,7 +251,7 @@ role_original_data = {
'OS::OVB::BaremetalNetworks': 'templates/baremetal-networks-all.yaml',
'OS::OVB::BaremetalPorts':
'templates/baremetal-ports-public-bond.yaml',
'OS::OVB::BMCPort': 'templates/bmc-port-port-security.yaml'
'OS::OVB::BMCPort': 'templates/bmc-port.yaml'
}
}
# end _process_role test data
@ -288,8 +267,8 @@ class TestDeploy(testtools.TestCase):
template_files, template
)
env_files = {'templates/resource_registry.yaml': {'bar': 'baz'},
'env.yaml': {'parameters': {}}}
env = {'parameters': {}}
'env.yaml': {'parameter_defaults': {}}}
env = {'parameter_defaults': {}}
mock_tu.process_multiple_environments_and_files.return_value = (
env_files, env
)
@ -393,13 +372,23 @@ class TestDeploy(testtools.TestCase):
output = mock_write.call_args[0][0]
# These values are computed in _process_role
self.assertEqual('baremetal-foo-compute',
output['parameters']['baremetal_prefix'])
output['parameter_defaults']['baremetal_prefix'])
self.assertEqual('bmc-foo-compute',
output['parameters']['bmc_prefix'])
output['parameter_defaults']['bmc_prefix'])
# These should be inherited
self.assertEqual('ipxe-boot', output['parameters']['baremetal_image'])
self.assertEqual('tenant-foo',
self.assertEqual('tenant-' + args.id,
output['parameter_defaults']['overcloud_tenant_net'])
self.assertEqual('internal-' + args.id,
output['parameter_defaults']['overcloud_internal_net']
)
self.assertEqual('storage-' + args.id,
output['parameter_defaults']['overcloud_storage_net'])
self.assertEqual('storage_mgmt-' + args.id,
output['parameter_defaults'][
'overcloud_storage_mgmt_net'])
# This parameter should be overrideable
self.assertEqual('centos',
output['parameter_defaults']['baremetal_image'])
# This should not be present in a role env, even if set in the file
self.assertNotIn('OS::OVB::BaremetalNetworks',
output['resource_registry'])
@ -408,42 +397,9 @@ class TestDeploy(testtools.TestCase):
'templates/baremetal-ports-all.yaml',
output['resource_registry']['OS::OVB::BaremetalPorts'])
# This should be inherited from the base env
self.assertEqual('templates/bmc-port-port-security.yaml',
self.assertEqual('templates/bmc-port.yaml',
output['resource_registry']['OS::OVB::BMCPort'])
@mock.patch('openstack_virtual_baremetal.deploy._write_role_file')
@mock.patch('openstack_virtual_baremetal.deploy._load_role_data')
def test_process_role_param_defaults(self, mock_load, mock_write):
def move_params_to_param_defaults(d):
data = copy.deepcopy(d)
for k, v in data['parameters'].items():
data['parameter_defaults'][k] = v
data.pop('parameters', None)
return data
pd_base_data = move_params_to_param_defaults(role_base_data)
pd_specific_data = move_params_to_param_defaults(role_specific_data)
pd_original_data = move_params_to_param_defaults(role_original_data)
pd_specific_data['parameter_defaults']['baremetal_image'] = 'centos'
mock_load.return_value = (pd_base_data, pd_specific_data,
pd_original_data)
args = mock.Mock()
args.id = 'foo'
role_file, role = deploy._process_role('foo-compute.yaml', 'foo.yaml',
'foo', args)
mock_load.assert_called_once_with('foo.yaml', 'foo-compute.yaml', args)
self.assertEqual('env-foo-compute.yaml', role_file)
self.assertEqual('compute', role)
output = mock_write.call_args[0][0]
# These values are computed in _process_role
self.assertEqual('baremetal-foo-compute',
output['parameters']['baremetal_prefix'])
self.assertEqual('bmc-foo-compute',
output['parameters']['bmc_prefix'])
# This parameter should be inherited (as tested above) but overrideable
self.assertEqual('centos',
output['parameter_defaults']['baremetal_image'])
@mock.patch('openstack_virtual_baremetal.deploy._load_role_data')
def test_process_role_invalid_name(self, mock_load):
bad_role_specific_data = copy.deepcopy(role_specific_data)
@ -476,10 +432,10 @@ class TestDeploy(testtools.TestCase):
deploy._deploy_roles('foo', args, 'foo.yaml')
mock_process.assert_not_called()
def _test_validate_env_ends_with_profile(self, mock_id, mock_bed,
section='parameters'):
def _test_validate_env_ends_with_profile(self, mock_id, mock_bed):
test_env = dict(role_original_data)
test_env[section]['baremetal_prefix'] = 'baremetal-control'
test_env['parameter_defaults']['baremetal_prefix'] = (
'baremetal-control')
mock_bed.return_value = test_env
args = mock.Mock()
args.id = mock_id
@ -493,11 +449,6 @@ class TestDeploy(testtools.TestCase):
def test_validate_env_fails(self, mock_bed):
self._test_validate_env_ends_with_profile(None, mock_bed)
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
def test_validate_env_fails_param_defaults(self, mock_bed):
self._test_validate_env_ends_with_profile(None, mock_bed,
'parameter_defaults')
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
def test_validate_env_with_id(self, mock_bed):
self._test_validate_env_ends_with_profile('foo', mock_bed)

View File

@ -23,105 +23,6 @@ import testtools
from openstack_virtual_baremetal import openstackbmc
@mock.patch('openstack_virtual_baremetal.openstackbmc.OpenStackBmc.'
'log')
@mock.patch('pyghmi.ipmi.bmc.Bmc.__init__')
@mock.patch('novaclient.client.Client')
@mock.patch('openstack_virtual_baremetal.openstackbmc.OpenStackBmc.'
'_find_instance')
class TestOpenStackBmcInitDeprecated(unittest.TestCase):
def _test_init(self, mock_find_instance, mock_nova, mock_bmc_init,
mock_log, old_nova=True):
mock_client = mock.Mock()
mock_server = mock.Mock()
mock_server.name = 'foo-instance'
mock_client.servers.get.return_value = mock_server
mock_nova.return_value = mock_client
mock_find_instance.return_value = 'abc-123'
bmc = openstackbmc.OpenStackBmc(authdata={'admin': 'password'},
port=623,
address='::ffff:127.0.0.1',
instance='foo',
user='admin',
password='password',
tenant='admin',
auth_url='http://keystone:5000',
project='',
user_domain='',
project_domain='',
cache_status=False,
os_cloud=None
)
if old_nova:
mock_nova.assert_called_once_with(2, 'admin', 'password', 'admin',
'http://keystone:5000')
else:
mock_nova.assert_called_once_with(2, 'admin', 'password',
auth_url='http://keystone:5000',
project_name='admin')
mock_find_instance.assert_called_once_with('foo')
self.assertEqual('abc-123', bmc.instance)
mock_client.servers.get.assert_called_once_with('abc-123')
self.assertEqual([mock.call(openstackbmc.NO_OCC_DEPRECATION),
mock.call('Managing instance: %s UUID: %s' %
('foo-instance', 'abc-123'))],
mock_log.mock_calls)
@mock.patch('openstack_virtual_baremetal.openstackbmc.os_client_config',
None)
@mock.patch('openstack_virtual_baremetal.openstackbmc.nc.__version__',
('6', '0', '0'))
def test_init_6(self, mock_find_instance, mock_nova, mock_bmc_init,
mock_log):
self._test_init(mock_find_instance, mock_nova, mock_bmc_init, mock_log)
@mock.patch('openstack_virtual_baremetal.openstackbmc.os_client_config',
None)
@mock.patch('openstack_virtual_baremetal.openstackbmc.nc.__version__',
('7', '0', '0'))
def test_init_7(self, mock_find_instance, mock_nova, mock_bmc_init,
mock_log):
self._test_init(mock_find_instance, mock_nova, mock_bmc_init, mock_log,
old_nova=False)
@mock.patch('openstack_virtual_baremetal.openstackbmc.os_client_config',
None)
def test_init_v3(self, mock_find_instance, mock_nova, mock_bmc_init,
mock_log, old_nova=True):
mock_client = mock.Mock()
mock_server = mock.Mock()
mock_server.name = 'foo-instance'
mock_client.servers.get.return_value = mock_server
mock_nova.return_value = mock_client
mock_find_instance.return_value = 'abc-123'
bmc = openstackbmc.OpenStackBmc(authdata={'admin': 'password'},
port=623,
address='::ffff:127.0.0.1',
instance='foo',
user='admin',
password='password',
tenant='',
auth_url='http://keystone:5000/v3',
project='admin',
user_domain='default',
project_domain='default',
cache_status=False,
os_cloud=None
)
mock_nova.assert_called_once_with(2, 'admin', 'password',
auth_url='http://keystone:5000/v3',
project_name='admin',
user_domain_name='default',
project_domain_name='default')
mock_find_instance.assert_called_once_with('foo')
self.assertEqual('abc-123', bmc.instance)
mock_client.servers.get.assert_called_once_with('abc-123')
self.assertEqual([mock.call(openstackbmc.NO_OCC_DEPRECATION),
mock.call('Managing instance: %s UUID: %s' %
('foo-instance', 'abc-123'))],
mock_log.mock_calls)
@mock.patch('openstack_virtual_baremetal.openstackbmc.OpenStackBmc.'
'log')
@mock.patch('pyghmi.ipmi.bmc.Bmc.__init__')
@ -129,43 +30,6 @@ class TestOpenStackBmcInitDeprecated(unittest.TestCase):
'_find_instance')
@mock.patch('os_client_config.make_client')
class TestOpenStackBmcInit(testtools.TestCase):
def test_init_os_client_config(self, mock_make_client, mock_find_instance,
mock_bmc_init, mock_log):
mock_client = mock.Mock()
mock_server = mock.Mock()
mock_server.name = 'foo-instance'
mock_client.servers.get.return_value = mock_server
mock_make_client.return_value = mock_client
mock_find_instance.return_value = 'abc-123'
bmc = openstackbmc.OpenStackBmc(authdata={'admin': 'password'},
port=623,
address='::ffff:127.0.0.1',
instance='foo',
user='admin',
password='password',
tenant='admin',
auth_url='http://keystone:5000',
project='',
user_domain='',
project_domain='',
cache_status=False,
os_cloud=None
)
mock_make_client.assert_called_once_with(
'compute',
os_auth_url='http://keystone:5000',
os_password='password',
os_project_domain='',
os_project_name='admin',
os_user_domain='',
os_username='admin')
mock_find_instance.assert_called_once_with('foo')
self.assertEqual('abc-123', bmc.instance)
mock_client.servers.get.assert_called_once_with('abc-123')
mock_log.assert_called_once_with('Managing instance: %s UUID: %s' %
('foo-instance', 'abc-123'))
def test_init_os_cloud(self, mock_make_client, mock_find_instance,
mock_bmc_init, mock_log):
mock_client = mock.Mock()
@ -178,13 +42,6 @@ class TestOpenStackBmcInit(testtools.TestCase):
port=623,
address='::ffff:127.0.0.1',
instance='foo',
user='',
password='',
tenant='',
auth_url='',
project='',
user_domain='',
project_domain='',
cache_status=False,
os_cloud='bar'
)
@ -210,13 +67,6 @@ class TestOpenStackBmcInit(testtools.TestCase):
port=623,
address='::ffff:127.0.0.1',
instance='foo',
user='',
password='',
tenant='',
auth_url='',
project='',
user_domain='',
project_domain='',
cache_status=False,
os_cloud='foo'
)
@ -246,15 +96,8 @@ class TestOpenStackBmc(unittest.TestCase):
port=623,
address='::ffff:127.0.0.1',
instance='foo',
user='admin',
password='password',
tenant='admin',
auth_url='http://keystone:5000',
project='',
user_domain='',
project_domain='',
cache_status=False,
os_cloud=None
os_cloud='bar'
)
self.bmc.novaclient = self.mock_client
self.bmc.instance = 'abc-123'
@ -462,13 +305,6 @@ class TestMain(unittest.TestCase):
port=111,
address='::ffff:1.2.3.4',
instance='foobar',
user='',
password='',
tenant='',
auth_url='',
project='',
user_domain='',
project_domain='',
cache_status=False,
os_cloud='foo'
)
@ -479,21 +315,14 @@ class TestMain(unittest.TestCase):
mock_instance = mock.Mock()
mock_bmc.return_value = mock_instance
mock_argv = ['openstackbmc', '--port', '111',
'--instance', 'foobar']
'--instance', 'foobar', '--os-cloud', 'bar']
with mock.patch.object(sys, 'argv', mock_argv):
openstackbmc.main()
mock_bmc.assert_called_once_with({'admin': 'password'},
port=111,
address='::',
instance='foobar',
user='',
password='',
tenant='',
auth_url='',
project='',
user_domain='',
project_domain='',
cache_status=False,
os_cloud=None
os_cloud='bar'
)
mock_instance.listen.assert_called_once_with()

View File

@ -8,8 +8,8 @@ resource_registry:
parameter_defaults:
ControlPlaneSubnetCidr: '24'
ControlPlaneDefaultRoute: 192.0.2.1
EC2MetadataIp: 192.0.2.1
ControlPlaneDefaultRoute: 192.168.24.1
EC2MetadataIp: 192.168.24.1
ExternalNetCidr: 10.0.0.0/24
ExternalAllocationPools: [{"start": "10.0.0.10", "end": "10.0.0.50"}]
ExternalInterfaceDefaultRoute: 10.0.0.1

View File

@ -7,14 +7,14 @@ p3
(dp4
S'route'
p5
V192.0.2.1
V192.168.24.1
p6
sS'mask'
p7
I24
sS'ec2'
p8
V192.0.2.1
V192.168.24.1
p9
ssS'major'
p10

View File

@ -8,8 +8,8 @@ resource_registry:
parameter_defaults:
ControlPlaneSubnetCidr: '24'
ControlPlaneDefaultRoute: 192.0.2.1
EC2MetadataIp: 192.0.2.1
ControlPlaneDefaultRoute: 192.168.24.1
EC2MetadataIp: 192.168.24.1
ExternalNetCidr: 2001:db8:fd00:1000::/64
ExternalAllocationPools: [{"start": "2001:db8:fd00:1000::10", "end": "2001:db8:fd00:1000:ffff:ffff:ffff:fffe"}]
ExternalInterfaceDefaultRoute: 2001:db8:fd00:1000::1

View File

@ -7,14 +7,14 @@ p3
(dp4
S'route'
p5
V192.0.2.1
V192.168.24.1
p6
sS'mask'
p7
I24
sS'ec2'
p8
V192.0.2.1
V192.168.24.1
p9
ssS'major'
p10

View File

@ -8,8 +8,8 @@ resource_registry:
parameter_defaults:
ControlPlaneSubnetCidr: '24'
ControlPlaneDefaultRoute: 192.0.2.1
EC2MetadataIp: 192.0.2.1
ControlPlaneDefaultRoute: 192.168.24.1
EC2MetadataIp: 192.168.24.1
ExternalNetCidr: 10.0.0.0/24
ExternalAllocationPools: [{"start": "10.0.0.10", "end": "10.0.0.50"}]
ExternalInterfaceDefaultRoute: 10.0.0.1

View File

@ -7,14 +7,14 @@ p3
(dp4
S'route'
p5
V192.0.2.1
V192.168.24.1
p6
sS'mask'
p7
I24
sS'ec2'
p8
V192.0.2.1
V192.168.24.1
p9
ssS'major'
p10

View File

@ -14,15 +14,17 @@ environments:
- bmc_prefix
- baremetal_prefix
- node_count
- public_net
- public_net_shared
- provision_net
- provision_net_shared
- undercloud_name
- undercloud_image
- undercloud_flavor
- external_net
- role
templates/undercloud-networks.yaml:
parameters:
- public_net
- public_net_shared
- provision_net
- provision_net_shared
sample_values:
baremetal_image: ipxe-boot
-
@ -61,7 +63,7 @@ environments:
baremetal_image: CentOS-7-x86_64-GenericCloud
node_count: 1
resource_registry:
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-extra-node-port-security.yaml
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-extra-node.yaml
-
name: all-networks
title: Deploy with All Networks Enabled
@ -75,18 +77,6 @@ environments:
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-all.yaml
children:
-
name: all-networks-port-security
description: |
Deploy an OVB stack that adds interfaces for all the standard TripleO
network isolation networks. This version uses the port-security
Neutron extension to allow OVB to be run on clouds with security
groups enabled.
resource_registry:
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-all-port-security.yaml
OS::OVB::BMCPort: ../templates/bmc-port-port-security.yaml
OS::OVB::UndercloudPorts: ../templates/undercloud-ports-port-security.yaml
-
name: all-networks-public-bond
title: Deploy with All Networks Enabled and Two Public Interfaces
@ -98,32 +88,6 @@ environments:
resource_registry:
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-public-bond.yaml
-
name: all-networks-public-bond-port-security
title: Deploy with All Networks Enabled and Two Public Interfaces
description: |
Deploy an OVB stack that adds interfaces for all the standard TripleO
network isolation networks. This version will deploy duplicate
public network interfaces on the baremetal instances so that the
public network can be configured as a bond. It will also use the
port-security Neutron extension to allow OVB to be run on clouds with
security groups enabled.
resource_registry:
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-public-bond-port-security.yaml
OS::OVB::BMCPort: ../templates/bmc-port-port-security.yaml
OS::OVB::UndercloudPorts: ../templates/undercloud-ports-port-security.yaml
-
name: port-security
title: Deploy a Basic OVB Environment Using Neutron port-security
description: |
Deploy an OVB stack that uses the Neutron port-security extension to
allow OVB functionality in clouds with security groups enabled.
files: {}
resource_registry:
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-default-port-security.yaml
OS::OVB::BMCPort: ../templates/bmc-port-port-security.yaml
OS::OVB::UndercloudPorts: ../templates/undercloud-ports-port-security.yaml
-
name: create-private-network
title: Create a Private Network
@ -220,3 +184,68 @@ environments:
- bmc_use_cache
sample_values:
bmc_use_cache: True
-
name: routed-networks-configuration
title: Configuration for Routed Networks
description: |
Contains the available parameters that need to be configured when using
a routed networks environment. Requires the routed-networks.yaml
environment.
files:
templates/dhcp-relay.yaml:
parameters:
- dhcp_relay_flavor
- dhcp_relay_image
-
name: routed-networks
title: Enable Routed Networks
description: |
Enable use of routed networks, where there may be multiple separate
networks connected with a router and DHCP relay. Do not pass any other
network configuration environments after this one or they may override
the changes made by this environment. When this environment is in use,
the routed-networks-configuration environment should usually be
included as well.
resource_registry:
OS::OVB::UndercloudNetworks: ../templates/undercloud-networks-routed.yaml
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-routed.yaml
OS::OVB::DHCPRelay: ../templates/dhcp-relay.yaml
-
name: routed-networks-role
title: Base Role Configuration for Routed Networks
description: |
A base role environment that contains the necessary parameters for
deploying with routed networks.
files:
templates/quintupleo.yaml:
parameters:
- baremetal_flavor
- key_name
- node_count
- role
templates/undercloud-networks.yaml:
parameters:
- provision_net
templates/baremetal-networks-all.yaml:
parameters:
- overcloud_internal_net
- overcloud_storage_net
- overcloud_storage_mgmt_net
- overcloud_tenant_net
sample_values:
role: leaf1
provision_net: provision2
overcloud_internal_net: overcloud_internal2
overcloud_storage_net: overcloud_storage2
overcloud_storage_mgmt_net: overcloud_storage_mgmt2
overcloud_tenant_net: overcloud_tenant2
-
name: public-router
title: Public Network External Router
description: |
Deploy a router that connects the public and external networks. This
allows the public network to be used as a gateway instead of routing all
traffic through the undercloud.
resource_registry:
OS::OVB::UndercloudNetworks: ../templates/undercloud-networks-public-router.yaml

View File

@ -117,3 +117,5 @@ outputs:
storage_net: {get_resource: storage_network}
storage_mgmt_net: {get_resource: storage_mgmt_network}
tenant_net: {get_resource: tenant_network}
routers_addresses:
value: {}

View File

@ -3,3 +3,5 @@ heat_template_version: 2014-10-16
outputs:
networks:
value: {}
routers_addresses:
value: {}

View File

@ -0,0 +1,408 @@
heat_template_version: 2014-10-16
# Template which creates all networks required for full network isloation.
parameters:
overcloud_internal_net:
type: string
description: Name of internal API network
default: overcloud_internal
overcloud_internal_net_cidr:
type: string
description: |
CIDR for internal API network subnet. This is typically irrelevant and
does not need to be changed.
default: 172.17.0.0/24
overcloud_internal_net_router_address:
type: string
description: Router address for the overcloud_internal_net
default: 172.17.0.254
overcloud_internal_net2:
type: string
description: Name of internal API network
default: overcloud_internal2
overcloud_internal_net2_cidr:
type: string
description: |
CIDR for internal API network subnet. This is typically irrelevant and
does not need to be changed.
default: 172.17.1.0/24
overcloud_internal_net2_router_address:
type: string
description: Router address for the overcloud_internal_net2 subnet
default: 172.17.1.254
overcloud_storage_net:
type: string
description: Name of storage network
default: overcloud_storage
overcloud_storage_net_cidr:
type: string
description: |
CIDR for storage network subnet. This is typically irrelevant and
does not need to be changed.
default: 172.18.0.0/24
overcloud_storage_net_router_address:
type: string
description: Router address for the overcloud_storage_net subnet
default: 172.18.0.254
overcloud_storage_net2:
type: string
description: Name of storage network
default: overcloud_storage2
overcloud_storage_net2_cidr:
type: string
description: |
CIDR for storage network subnet. This is typically irrelevant and
does not need to be changed.
default: 172.18.1.0/24
overcloud_storage_net2_router_address:
type: string
description: Router address for the overcloud_storage_net2 subnet
default: 172.18.1.254
overcloud_storage_mgmt_net:
type: string
description: Name of storage management network
default: overcloud_storage_mgmt
overcloud_storage_mgmt_net_cidr:
type: string
description: |
CIDR for storage management network subnet. This is typically irrelevant
and does not need to be changed.
default: 172.19.0.0/24
overcloud_storage_mgmt_net_router_address:
type: string
description: Router address for the overcloud_storage_mgmt_net subnet
default: 172.19.0.254
overcloud_storage_mgmt_net2:
type: string
description: Name of storage management network
default: overcloud_storage_mgmt2
overcloud_storage_mgmt_net2_cidr:
type: string
description: |
CIDR for storage management network subnet. This is typically irrelevant
and does not need to be changed.
default: 172.19.1.0/24
overcloud_storage_mgmt_net2_router_address:
type: string
description: Router address for the overcloud_storage_mgmt_net2 subnet
default: 172.19.1.254
overcloud_tenant_net:
type: string
description: Name of tenant network
default: overcloud_tenant
overcloud_tenant_net_cidr:
type: string
description: |
CIDR for tenant network subnet. This is typically irrelevant and
does not need to be changed.
default: 172.16.0.0/24
overcloud_tenant_net_router_address:
type: string
description: Router address for the overcloud_tenant_net subnet
default: 172.16.0.254
overcloud_tenant_net2:
type: string
description: Name of tenant network
default: overcloud_tenant2
overcloud_tenant_net2_cidr:
type: string
description: |
CIDR for tenant network subnet. This is typically irrelevant and
does not need to be changed.
default: 172.16.1.0/24
overcloud_tenant_net2_router_address:
type: string
description: Router address for the overcloud_tenant_net2 subnet
default: 172.16.1.254
resources:
internal_router:
type: OS::Neutron::Router
properties:
name: internal-router
internal_network:
type: OS::Neutron::Net
properties:
name: {get_param: overcloud_internal_net}
internal_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: internal_network}
name: {get_param: overcloud_internal_net}
cidr: {get_param: overcloud_internal_net_cidr}
gateway_ip: null
enable_dhcp: false
internal_subnet_port:
type: OS::Neutron::Port
properties:
network: {get_resource: internal_network}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: overcloud_internal_net_router_address}
internal_subnet_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: internal_router}
port: {get_resource: internal_subnet_port}
internal_network2:
type: OS::Neutron::Net
properties:
name: {get_param: overcloud_internal_net2}
internal_subnet2:
type: OS::Neutron::Subnet
properties:
network: {get_resource: internal_network2}
name: {get_param: overcloud_internal_net2}
cidr: {get_param: overcloud_internal_net2_cidr}
gateway_ip: null
enable_dhcp: false
internal_subnet2_port:
type: OS::Neutron::Port
properties:
network: {get_resource: internal_network2}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: overcloud_internal_net2_router_address}
internal_subnet2_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: internal_router}
port: {get_resource: internal_subnet2_port}
storage_router:
type: OS::Neutron::Router
properties:
name: storage-router
storage_network:
type: OS::Neutron::Net
properties:
name: {get_param: overcloud_storage_net}
storage_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: storage_network}
name: {get_param: overcloud_storage_net}
cidr: {get_param: overcloud_storage_net_cidr}
gateway_ip: null
enable_dhcp: false
storage_subnet_port:
type: OS::Neutron::Port
properties:
network: {get_resource: storage_network}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: overcloud_storage_net_router_address}
storage_subnet_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: storage_router}
port: {get_resource: storage_subnet_port}
storage_network2:
type: OS::Neutron::Net
properties:
name: {get_param: overcloud_storage_net2}
storage_subnet2:
type: OS::Neutron::Subnet
properties:
network: {get_resource: storage_network2}
name: {get_param: overcloud_storage_net2}
cidr: {get_param: overcloud_storage_net2_cidr}
gateway_ip: null
enable_dhcp: false
storage_subnet2_port:
type: OS::Neutron::Port
properties:
network: {get_resource: storage_network2}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: overcloud_storage_net2_router_address}
storage_subnet2_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: storage_router}
port: {get_resource: storage_subnet2_port}
storage_mgmt_router:
type: OS::Neutron::Router
properties:
name: storage-mgmt-router
storage_mgmt_network:
type: OS::Neutron::Net
properties:
name: {get_param: overcloud_storage_mgmt_net}
storage_mgmt_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: storage_mgmt_network}
name: {get_param: overcloud_storage_mgmt_net}
cidr: {get_param: overcloud_storage_mgmt_net_cidr}
gateway_ip: null
enable_dhcp: false
storage_mgmt_subnet_port:
type: OS::Neutron::Port
properties:
network: {get_resource: storage_mgmt_network}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: overcloud_storage_mgmt_net_router_address}
storage_mgmt_subnet_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: storage_mgmt_router}
port: {get_resource: storage_mgmt_subnet_port}
storage_mgmt_network2:
type: OS::Neutron::Net
properties:
name: {get_param: overcloud_storage_mgmt_net2}
storage_mgmt_subnet2:
type: OS::Neutron::Subnet
properties:
network: {get_resource: storage_mgmt_network2}
name: {get_param: overcloud_storage_mgmt_net2}
cidr: {get_param: overcloud_storage_mgmt_net2_cidr}
gateway_ip: null
enable_dhcp: false
storage_mgmt_subnet2_port:
type: OS::Neutron::Port
properties:
network: {get_resource: storage_mgmt_network2}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: overcloud_storage_mgmt_net2_router_address}
storage_mgmt_subnet2_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: storage_mgmt_router}
port: {get_resource: storage_mgmt_subnet2_port}
tenant_router:
type: OS::Neutron::Router
properties:
name: tenant-router
tenant_network:
type: OS::Neutron::Net
properties:
name: {get_param: overcloud_tenant_net}
tenant_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: tenant_network}
name: {get_param: overcloud_tenant_net}
cidr: {get_param: overcloud_tenant_net_cidr}
gateway_ip: null
enable_dhcp: false
tenant_subnet_port:
type: OS::Neutron::Port
properties:
network: {get_resource: tenant_network}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: overcloud_tenant_net_router_address}
tenant_subnet_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: tenant_router}
port: {get_resource: tenant_subnet_port}
tenant_network2:
type: OS::Neutron::Net
properties:
name: {get_param: overcloud_tenant_net2}
tenant_subnet2:
type: OS::Neutron::Subnet
properties:
network: {get_resource: tenant_network2}
name: {get_param: overcloud_tenant_net2}
cidr: {get_param: overcloud_tenant_net2_cidr}
gateway_ip: null
enable_dhcp: false
tenant_subnet2_port:
type: OS::Neutron::Port
properties:
network: {get_resource: tenant_network2}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: overcloud_tenant_net2_router_address}
tenant_subnet2_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: tenant_router}
port: {get_resource: tenant_subnet2_port}
outputs:
networks:
value:
internal_net: {get_resource: internal_network}
internal_net2: {get_resource: internal_network2}
storage_net: {get_resource: storage_network}
storage_net2: {get_resource: storage_network2}
storage_mgmt_net: {get_resource: storage_mgmt_network}
storage_mgmt_net2: {get_resource: storage_mgmt_network2}
tenant_net: {get_resource: tenant_network}
tenant_net2: {get_resource: tenant_network2}
routers_addresses:
value:
internal_router_address: {get_attr: [internal_subnet_port, fixed_ips, 0, ip_address]}
internal2_router: {get_attr: [internal_subnet2_port, fixed_ips, 0, ip_address]}
storage_router_address: {get_attr: [storage_subnet_port, fixed_ips, 0, ip_address]}
storage2_router_address: {get_attr: [storage_subnet2_port, fixed_ips, 0, ip_address]}
storage_mgmt_router_address: {get_attr: [storage_mgmt_subnet_port, fixed_ips, 0, ip_address]}
storage_mgmt2_router_address: {get_attr: [storage_mgmt_subnet2_port, fixed_ips, 0, ip_address]}
tenant_router_address: {get_attr: [tenant_subnet_port, fixed_ips, 0, ip_address]}
tenant2_router_address: {get_attr: [tenant_subnet2_port, fixed_ips, 0, ip_address]}

View File

@ -1,120 +0,0 @@
heat_template_version: 2015-10-15
parameters:
baremetal_prefix:
type: string
provision_net:
type: string
public_net:
type: string
description: Name of external network
default: public
suffix:
type: string
overcloud_internal_net:
type: string
description: Name of internal API network
default: overcloud_internal
overcloud_storage_net:
type: string
description: Name of storage network
default: overcloud_storage
overcloud_storage_mgmt_net:
type: string
description: Name of storage management network
default: overcloud_storage_mgmt
overcloud_tenant_net:
type: string
description: Name of tenant network
default: overcloud_tenant
resources:
provision_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: provision_net}
port_security_enabled: False
internal_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - internal_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_internal_net}
port_security_enabled: False
storage_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - storage_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_storage_net}
port_security_enabled: False
storage_mgmt_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - storage_mgmt_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_storage_mgmt_net}
port_security_enabled: False
tenant_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - tenant_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_tenant_net}
port_security_enabled: False
public_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - public_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: public_net}
port_security_enabled: False
outputs:
ports:
value:
- {port: {get_resource: provision_port}}
- {port: {get_resource: public_port}}
- {port: {get_resource: internal_port}}
- {port: {get_resource: storage_port}}
- {port: {get_resource: storage_mgmt_port}}
- {port: {get_resource: tenant_port}}

View File

@ -1,17 +1,12 @@
heat_template_version: 2014-10-16
heat_template_version: 2015-10-15
parameters:
baremetal_prefix:
type: string
provision_net:
type: string
public_net:
type: string
description: Name of external network
default: public
networks:
type: json
suffix:
type: string
@ -46,7 +41,8 @@ resources:
- ''
- - {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: provision_net}
network: {get_param: [networks, provision]}
port_security_enabled: False
internal_port:
type: OS::Neutron::Port
@ -58,6 +54,7 @@ resources:
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_internal_net}
port_security_enabled: False
storage_port:
type: OS::Neutron::Port
@ -69,6 +66,7 @@ resources:
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_storage_net}
port_security_enabled: False
storage_mgmt_port:
type: OS::Neutron::Port
@ -80,6 +78,7 @@ resources:
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_storage_mgmt_net}
port_security_enabled: False
tenant_port:
type: OS::Neutron::Port
@ -91,6 +90,7 @@ resources:
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_tenant_net}
port_security_enabled: False
public_port:
type: OS::Neutron::Port
@ -101,7 +101,8 @@ resources:
- - public_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: public_net}
network: {get_param: [networks, public]}
port_security_enabled: False
outputs:
ports:

View File

@ -1,35 +0,0 @@
heat_template_version: 2015-10-15
parameters:
baremetal_prefix:
type: string
provision_net:
type: string
public_net:
type: string
description: Name of external network
default: public
suffix:
type: string
resources:
provision_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: provision_net}
port_security_enabled: False
outputs:
ports:
value:
- {port: {get_resource: provision_port}}

View File

@ -1,17 +1,12 @@
heat_template_version: 2014-10-16
heat_template_version: 2015-10-15
parameters:
baremetal_prefix:
type: string
provision_net:
type: string
public_net:
type: string
description: Name of external network
default: public
networks:
type: json
suffix:
type: string
@ -26,7 +21,8 @@ resources:
- ''
- - {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: provision_net}
network: {get_param: [networks, provision]}
port_security_enabled: False
outputs:
ports:

View File

@ -5,13 +5,8 @@ parameters:
baremetal_prefix:
type: string
provision_net:
type: string
public_net:
type: string
description: Name of external network
default: public
networks:
type: json
private_net:
type: string
@ -62,7 +57,7 @@ resources:
- ''
- - {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: provision_net}
network: {get_param: [networks, provision]}
port_security_enabled: False
public_port:
@ -74,7 +69,7 @@ resources:
- - public_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: public_net}
network: {get_param: [networks, public]}
port_security_enabled: False
extra_node_fip:

View File

@ -5,13 +5,8 @@ parameters:
baremetal_prefix:
type: string
provision_net:
type: string
public_net:
type: string
description: Name of external network
default: public
networks:
type: json
private_net:
type: string
@ -59,7 +54,7 @@ resources:
- ''
- - {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: provision_net}
network: {get_param: [networks, provision]}
port_security_enabled: False
public_port:
@ -71,7 +66,7 @@ resources:
- - public_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: public_net}
network: {get_param: [networks, public]}
port_security_enabled: False
outputs:

View File

@ -1,133 +0,0 @@
heat_template_version: 2015-10-15
parameters:
baremetal_prefix:
type: string
provision_net:
type: string
public_net:
type: string
description: Name of external network
default: public
suffix:
type: string
overcloud_internal_net:
type: string
description: Name of internal API network
default: overcloud_internal
overcloud_storage_net:
type: string
description: Name of storage network
default: overcloud_storage
overcloud_storage_mgmt_net:
type: string
description: Name of storage management network
default: overcloud_storage_mgmt
overcloud_tenant_net:
type: string
description: Name of tenant network
default: overcloud_tenant
resources:
provision_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: provision_net}
port_security_enabled: False
internal_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - internal_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_internal_net}
port_security_enabled: False
storage_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - storage_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_storage_net}
port_security_enabled: False
storage_mgmt_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - storage_mgmt_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_storage_mgmt_net}
port_security_enabled: False
tenant_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - tenant_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_tenant_net}
port_security_enabled: False
public_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - public_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: public_net}
port_security_enabled: False
public_bond_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- ''
- - public_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: public_net}
port_security_enabled: False
outputs:
ports:
value:
- {port: {get_resource: provision_port}}
- {port: {get_resource: public_port}}
- {port: {get_resource: public_bond_port}}
- {port: {get_resource: internal_port}}
- {port: {get_resource: storage_port}}
- {port: {get_resource: storage_mgmt_port}}
- {port: {get_resource: tenant_port}}

View File

@ -1,17 +1,12 @@
heat_template_version: 2014-10-16
heat_template_version: 2015-10-15
parameters:
baremetal_prefix:
type: string
provision_net:
type: string
public_net:
type: string
description: Name of external network
default: public
networks:
type: json
suffix:
type: string
@ -46,7 +41,8 @@ resources:
- ''
- - {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: provision_net}
network: {get_param: [networks, provision]}
port_security_enabled: False
internal_port:
type: OS::Neutron::Port
@ -58,6 +54,7 @@ resources:
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_internal_net}
port_security_enabled: False
storage_port:
type: OS::Neutron::Port
@ -69,6 +66,7 @@ resources:
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_storage_net}
port_security_enabled: False
storage_mgmt_port:
type: OS::Neutron::Port
@ -80,6 +78,7 @@ resources:
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_storage_mgmt_net}
port_security_enabled: False
tenant_port:
type: OS::Neutron::Port
@ -91,6 +90,7 @@ resources:
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: overcloud_tenant_net}
port_security_enabled: False
public_port:
type: OS::Neutron::Port
@ -101,7 +101,8 @@ resources:
- - public_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: public_net}
network: {get_param: [networks, public]}
port_security_enabled: False
public_bond_port:
type: OS::Neutron::Port
@ -112,7 +113,8 @@ resources:
- - public_
- {get_param: baremetal_prefix}
- {get_param: suffix}
network: {get_param: public_net}
network: {get_param: [networks, public]}
port_security_enabled: False
outputs:
ports:

View File

@ -1,29 +0,0 @@
heat_template_version: 2015-10-15
parameters:
bmc_prefix:
type: string
private_net:
type: string
resources:
private_bmc_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- '_'
- - 'utility'
- {get_param: bmc_prefix}
network: {get_param: private_net}
port_security_enabled: False
outputs:
port:
value:
- {port: {get_resource: private_bmc_port}}
ip_address:
value: {get_attr: [private_bmc_port, fixed_ips, 0, ip_address]}

View File

@ -1,4 +1,4 @@
heat_template_version: 2014-10-16
heat_template_version: 2015-10-15
parameters:
@ -19,6 +19,7 @@ resources:
- - 'utility'
- {get_param: bmc_prefix}
network: {get_param: private_net}
port_security_enabled: False
outputs:
port:

189
templates/dhcp-relay.yaml Normal file
View File

@ -0,0 +1,189 @@
heat_template_version: 2016-10-14
parameters:
key_name:
type: string
default: default
description: Nova keypair to inject into the undercloud and bmc
dhcp_relay_flavor:
type: string
default: m1.small
description: The Nova flavor to use for the dhcrelay instance
dhcp_relay_image:
type: string
default: CentOS-7-x86_64-GenericCloud
description: |
The base image for the dhcrelay instance. A CentOS 7 image is currently
the only one supported.
dhcp_relay_provision_address:
type: string
description: DHCP relay address on the provision network subnet
default: 192.168.24.253
dhcp_relay_provision2_address:
type: string
description: DHCP relay address on the provision2 network subnet
default: 192.168.25.253
dhcp_relay_provision3_address:
type: string
description: DHCP relay address on the provision3 network subnet
default: 192.168.26.253
dhcp_ips:
type: json
description: |
The IP addresses of DHCP servers to relay DHCP requests to.
networks:
type: json
private_net:
type: string
resources:
dhcp_relay_port_private:
type: OS::Neutron::Port
properties:
name: dhcp_relay_port_private
network: {get_param: private_net}
dhcp_relay_port_provision:
type: OS::Neutron::Port
properties:
name: dhcp_relay_port_provision
network: {get_param: [networks, provision]}
port_security_enabled: False
fixed_ips:
- ip_address: {get_param: dhcp_relay_provision_address}
dhcp_relay_port_provision2:
type: OS::Neutron::Port
properties:
name: dhcp_relay_port_provision2
network: {get_param: [networks, provision2]}
port_security_enabled: False
fixed_ips:
- ip_address: {get_param: dhcp_relay_provision2_address}
dhcp_relay_port_provision3:
type: OS::Neutron::Port
properties:
name: dhcp_relay_port_provision3
network: {get_param: [networks, provision3]}
port_security_enabled: False
fixed_ips:
- ip_address: {get_param: dhcp_relay_provision3_address}
init_networks:
type: OS::Heat::CloudConfig
properties:
cloud_config:
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses:
- list_join:
- /
- - {get_attr: [dhcp_relay_port_provision, fixed_ips, 0, ip_address]}
- {str_split: ['/', {get_attr: [dhcp_relay_port_provision, subnets, 0, cidr]}, 1]}
eth1:
dhcp4: false
addresses:
- list_join:
- /
- - {get_attr: [dhcp_relay_port_provision2, fixed_ips, 0, ip_address]}
- {str_split: ['/', {get_attr: [dhcp_relay_port_provision2, subnets, 0, cidr]}, 1]}
eth2:
dhcp4: false
addresses:
- list_join:
- /
- - {get_attr: [dhcp_relay_port_provision3, fixed_ips, 0, ip_address]}
- {str_split: ['/', {get_attr: [dhcp_relay_port_provision3, subnets, 0, cidr]}, 1]}
eth3:
dhcp4: true
init_packages:
type: OS::Heat::CloudConfig
properties:
cloud_config:
package_upgrade: true
packages:
- dhcp
init_files:
type: OS::Heat::CloudConfig
properties:
cloud_config:
write_files:
- path: /etc/systemd/system/dhcrelay.service
content:
str_replace:
template: |
[Unit]
Description=DHCP Relay Agent Daemon
Documentation=man:dhcrelay(8)
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/sbin/dhcrelay -d --no-pid $dhcp_ips -i eth1 -i eth2 -i eth3
StandardError=null
[Install]
WantedBy=multi-user.target
params:
$dhcp_ips:
list_join:
- ' '
- {get_param: dhcp_ips}
- path: /etc/sysctl.d/98-rp-filter.conf
content: |
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.eth2.rp_filter = 0
net.ipv4.conf.eth3.rp_filter = 0
init_runcmd:
type: OS::Heat::CloudConfig
properties:
cloud_config:
runcmd:
- ['sysctl','--system']
- ['systemctl', 'daemon-reload']
- ['systemctl', 'enable', 'dhcrelay.service']
- ['systemctl', 'start', 'dhcrelay.service']
- ['systemctl', 'status', 'dhcrelay.service']
dhcrelay_init:
type: OS::Heat::MultipartMime
properties:
parts:
- config: {get_resource: init_networks}
- config: {get_resource: init_packages}
- config: {get_resource: init_files}
- config: {get_resource: init_runcmd}
dhcp_relay_server:
type: OS::Nova::Server
properties:
name: dhcrelay
flavor: {get_param: dhcp_relay_flavor}
image: {get_param: dhcp_relay_image}
key_name: {get_param: key_name}
networks:
- {port: {get_resource: dhcp_relay_port_private}}
- {port: {get_resource: dhcp_relay_port_provision}}
- {port: {get_resource: dhcp_relay_port_provision2}}
- {port: {get_resource: dhcp_relay_port_provision3}}
config_drive: true
user_data_format: RAW
user_data: {get_resource: dhcrelay_init}

View File

@ -1,59 +0,0 @@
# DEPRECATED: This sample environment file has been replaced by the one in
# environments/base.yaml and the other sample environments in that directory.
# This file should not be used for new OVB deployments.
parameters:
bmc_flavor: bmc
bmc_image: CentOS-7-x86_64-GenericCloud
baremetal_flavor: baremetal
baremetal_image: ipxe-boot
key_name: default
private_net: private
bmc_prefix: bmc
baremetal_prefix: baremetal
node_count: 2
public_net: public
provision_net: provision
# QuintupleO-specific params ignored by virtual-baremetal.yaml
undercloud_name: undercloud
undercloud_image: CentOS-7-x86_64-GenericCloud
undercloud_flavor: m1.xlarge
external_net: external
public_net_shared: false
provision_net_shared: false
#parameter_defaults:
# Set a default role for the nodes in this environment. This parameter is
# ignored by Heat, but used by build-nodes-json.
#role: control
## Uncomment and customize the following to use an existing floating ip
# undercloud_floating_ip_id: 'uuid of floating ip'
# undercloud_floating_ip: 'address of floating ip'
#resource_registry:
## Uncomment the following to use an existing floating ip
# OS::OVB::UndercloudFloating: templates/undercloud-floating-existing.yaml
## Uncomment the following to use no floating ip
# OS::OVB::UndercloudFloating: templates/undercloud-floating-none.yaml
## Uncomment the following to create a private network
# OS::OVB::PrivateNetwork: templates/private-net-create.yaml
## Uncomment to create all networks required for network-isolation.
## parameter_defaults should be used to override default parameter values
## in baremetal-networks-all.yaml
# OS::OVB::BaremetalNetworks: templates/baremetal-networks-all.yaml
# OS::OVB::BaremetalPorts: templates/baremetal-ports-all.yaml
## Uncomment to use the neutron port-security extension to allow DHCP from
## the undercloud to overcloud nodes. There are *-port-security.yaml versions
## of all the standard port resource templates. The examples below are to use
## port-security with a minimal deployment (i.e. no network isolation).
# OS::OVB::BaremetalPorts: templates/baremetal-ports-default-port-security.yaml
# OS::OVB::BMCPort: templates/bmc-port-port-security.yaml
# OS::OVB::UndercloudPorts: templates/undercloud-ports-port-security.yaml
## Uncomment to deploy a quintupleo environment without an undercloud.
# OS::OVB::UndercloudEnvironment: OS::Heat::None

View File

@ -1,4 +1,4 @@
heat_template_version: 2015-04-30
heat_template_version: 2016-04-08
# Template that wraps virtual-baremetal.yaml and does some additional environment
# setup automatically:
@ -49,36 +49,6 @@ parameters:
default: external
description: An external network from which floating ips can be provisioned
provision_net:
type: string
default: provision
description: Name of a network that will be used for provisioning traffic
provision_net_cidr:
type: string
description: CIDR for provision network subnet
default: 192.0.2.0/24
provision_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
public_net:
type: string
description: Name of the overcloud external network
default: public
public_net_cidr:
type: string
description: CIDR for external network subnet
default: 10.0.0.0/24
public_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
bmc_prefix:
type: string
default: bmc
@ -171,37 +141,17 @@ parameters:
ignored by Heat, but used by build-nodes-json.
default: ''
dhcp_ips:
type: json
default:
- 192.168.24.1
- 192.168.24.10
description: |
The IP addresses of DHCP servers to relay DHCP requests to.
resources:
provision_network:
type: OS::Neutron::Net
properties:
name: {get_param: provision_net}
shared: {get_param: provision_net_shared}
provision_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: provision_network}
name: {get_param: provision_net}
cidr: {get_param: provision_net_cidr}
gateway_ip: null
enable_dhcp: false
public_network:
type: OS::Neutron::Net
properties:
name: {get_param: public_net}
shared: {get_param: public_net_shared}
public_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: public_network}
name: {get_param: public_net}
cidr: {get_param: public_net_cidr}
gateway_ip: null
enable_dhcp: false
undercloud_networks:
type: OS::OVB::UndercloudNetworks
private_network:
type: OS::OVB::PrivateNetwork
@ -211,7 +161,7 @@ resources:
undercloud_env:
type: OS::OVB::UndercloudEnvironment
depends_on: [provision_subnet, public_subnet]
depends_on: [undercloud_networks, private_network]
properties:
undercloud_flavor: {get_param: undercloud_flavor}
undercloud_image: {get_param: undercloud_image}
@ -220,21 +170,19 @@ resources:
undercloud_user_data_format: {get_param: undercloud_user_data_format}
undercloud_user_data: {get_param: undercloud_user_data}
private_net: {get_attr: [private_network, private_net]}
provision_net: {get_resource: provision_network}
public_net: {get_resource: public_network}
networks: {get_attr: [undercloud_networks, networks]}
external_net: {get_param: external_net}
baremetal_env:
type: OS::OVB::BaremetalEnvironment
depends_on: [provision_subnet, public_subnet]
depends_on: undercloud_networks
properties:
baremetal_flavor: {get_param: baremetal_flavor}
baremetal_image: {get_param: baremetal_image}
key_name: {get_param: key_name}
node_count: {get_param: node_count}
public_net: {get_resource: public_network}
private_net: {get_attr: [private_network, private_net]}
provision_net: {get_resource: provision_network}
networks: {get_attr: [undercloud_networks, networks]}
bmc_flavor: {get_param: bmc_flavor}
bmc_prefix: {get_param: bmc_prefix}
bmc_image: {get_param: bmc_image}
@ -247,6 +195,7 @@ resources:
os_user_domain: {get_param: os_user_domain}
os_project_domain: {get_param: os_project_domain}
cloud_data: {get_param: cloud_data}
dhcp_ips: {get_param: dhcp_ips}
outputs:
undercloud_host_floating_ip:
@ -257,3 +206,10 @@ outputs:
description: "ip of the undercloud instance on the private network"
value:
get_attr: [undercloud_env, undercloud_host_private_ip]
network_environment_data:
description: "Network environment data, router addresses etc."
value:
map_merge:
- get_attr: [undercloud_networks, provision_network_routers]
- get_attr: [baremetal_env, baremetal_networks_routers_addresses]
- get_attr: [undercloud_networks, public_network_router]

View File

@ -8,3 +8,5 @@ resource_registry:
OS::OVB::BaremetalPorts: baremetal-ports-default.yaml
OS::OVB::BMCPort: bmc-port.yaml
OS::OVB::UndercloudPorts: undercloud-ports.yaml
OS::OVB::UndercloudNetworks: undercloud-networks.yaml
OS::OVB::DHCPRelay: OS::Heat::None

View File

@ -0,0 +1,44 @@
heat_template_version: 2015-04-30
parameters:
provision_net:
type: string
default: provision
description: Name of a network that will be used for provisioning traffic
provision_net_cidr:
type: string
description: CIDR for provision network subnet
default: 192.0.2.0/24
provision_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
public_net:
type: string
description: Name of the overcloud external network
default: public
public_net_cidr:
type: string
description: CIDR for external network subnet
default: 10.0.0.0/24
public_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
outputs:
networks:
value:
provision: {get_param: provision_net}
public: {get_param: public_net}
# The provision and public network routers is here for compatibility only
provision_network_routers:
value: null
public_network_router:
value: null

View File

@ -0,0 +1,105 @@
heat_template_version: 2015-04-30
parameters:
provision_net:
type: string
default: provision
description: Name of a network that will be used for provisioning traffic
provision_net_cidr:
type: string
description: CIDR for provision network subnet
default: 192.168.24.0/24
provision_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
public_net:
type: string
description: Name of the overcloud external network
default: public
public_net_cidr:
type: string
description: CIDR for external network subnet
default: 10.0.0.0/24
public_net_router_address:
type: string
description: Router address for the public network subnet
default: 10.0.0.254
public_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
external_net:
type: string
description: An external network for the networks to route to
resources:
provision_network:
type: OS::Neutron::Net
properties:
name: {get_param: provision_net}
shared: {get_param: provision_net_shared}
provision_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: provision_network}
name: {get_param: provision_net}
cidr: {get_param: provision_net_cidr}
gateway_ip: null
enable_dhcp: false
public_network:
type: OS::Neutron::Net
properties:
name: {get_param: public_net}
shared: {get_param: public_net_shared}
public_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: public_network}
name: {get_param: public_net}
cidr: {get_param: public_net_cidr}
gateway_ip: null
enable_dhcp: false
public_router:
type: OS::Neutron::Router
properties:
name: public-router
external_gateway_info:
network: {get_param: external_net}
public_router_port:
type: OS::Neutron::Port
properties:
network: {get_resource: public_network}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: public_net_router_address}
public_router_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: public_router}
port: {get_resource: public_router_port}
outputs:
networks:
value:
provision: {get_resource: provision_network}
public: {get_resource: public_network}
# The provision_network_routers is here for compatibility only
provision_network_routers:
value: {}
public_network_router:
value:
public_router: {get_attr: [public_router_port, fixed_ips, 0, ip_address]}

View File

@ -0,0 +1,233 @@
heat_template_version: 2015-04-30
parameters:
provision_net:
type: string
default: provision
description: Name of a network that will be used for provisioning traffic
provision_net_cidr:
type: string
description: CIDR for provision network subnet
default: 192.168.24.0/24
provision_net_router_address:
type: string
description: Router address for the provision network subnet
default: 192.168.24.254
provision_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
provision_net2:
type: string
default: provision2
description: Name of a second network that will be used for provisioning traffic
provision_net2_cidr:
type: string
description: CIDR for second provision network subnet
default: 192.168.25.0/24
provision_net2_router_address:
type: string
description: Router address for the provision network subnet
default: 192.168.25.254
provision_net2_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
provision_net3:
type: string
default: provision3
description: Name of a third network that will be used for provisioning traffic
provision_net3_cidr:
type: string
description: CIDR for third provision network subnet
default: 192.168.26.0/24
provision_net3_router_address:
type: string
description: Router address for the provision network subnet
default: 192.168.26.254
provision_net3_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
public_net:
type: string
description: Name of the overcloud external network
default: public
public_net_cidr:
type: string
description: CIDR for external network subnet
default: 10.0.0.0/24
public_net_router_address:
type: string
description: Router address for the public network subnet
default: 10.0.0.254
public_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
external_net:
type: string
description: An external network for the networks to route to
resources:
provision_router:
type: OS::Neutron::Router
properties:
name: provision-router
external_gateway_info:
network: {get_param: external_net}
provision_network:
type: OS::Neutron::Net
properties:
name: {get_param: provision_net}
shared: {get_param: provision_net_shared}
provision_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: provision_network}
name: {get_param: provision_net}
cidr: {get_param: provision_net_cidr}
gateway_ip: null
enable_dhcp: false
provision_router_port:
type: OS::Neutron::Port
properties:
network: {get_resource: provision_network}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: provision_net_router_address}
provision_router_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: provision_router}
port: {get_resource: provision_router_port}
provision_network2:
type: OS::Neutron::Net
properties:
name: {get_param: provision_net2}
shared: {get_param: provision_net2_shared}
provision_subnet2:
type: OS::Neutron::Subnet
properties:
network: {get_resource: provision_network2}
name: {get_param: provision_net2}
cidr: {get_param: provision_net2_cidr}
gateway_ip: null
enable_dhcp: false
provision_router_port2:
type: OS::Neutron::Port
properties:
network: {get_resource: provision_network2}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: provision_net2_router_address}
provision_router_interface2:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: provision_router}
port: {get_resource: provision_router_port2}
provision_network3:
type: OS::Neutron::Net
properties:
name: {get_param: provision_net3}
shared: {get_param: provision_net3_shared}
provision_subnet3:
type: OS::Neutron::Subnet
properties:
network: {get_resource: provision_network3}
name: {get_param: provision_net3}
cidr: {get_param: provision_net3_cidr}
gateway_ip: null
enable_dhcp: false
provision_router_port3:
type: OS::Neutron::Port
properties:
network: {get_resource: provision_network3}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: provision_net3_router_address}
provision_router_interface3:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: provision_router}
port: {get_resource: provision_router_port3}
public_network:
type: OS::Neutron::Net
properties:
name: {get_param: public_net}
shared: {get_param: public_net_shared}
public_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: public_network}
name: {get_param: public_net}
cidr: {get_param: public_net_cidr}
gateway_ip: null
enable_dhcp: false
public_router:
type: OS::Neutron::Router
properties:
name: public-router
external_gateway_info:
network: {get_param: external_net}
public_router_port:
type: OS::Neutron::Port
properties:
network: {get_resource: public_network}
port_security_enabled: false
fixed_ips:
- ip_address: {get_param: public_net_router_address}
public_router_interface:
type: OS::Neutron::RouterInterface
properties:
router: {get_resource: public_router}
port: {get_resource: public_router_port}
outputs:
networks:
value:
provision: {get_resource: provision_network}
provision2: {get_resource: provision_network2}
provision3: {get_resource: provision_network3}
public: {get_resource: public_network}
provision_network_routers:
value:
provision_router: {get_attr: [provision_router_port, fixed_ips, 0, ip_address]}
provision2_router: {get_attr: [provision_router_port2, fixed_ips, 0, ip_address]}
provision3_router: {get_attr: [provision_router_port3, fixed_ips, 0, ip_address]}
public_network_router:
value:
public_router: {get_attr: [public_router_port, fixed_ips, 0, ip_address]}

View File

@ -0,0 +1,74 @@
heat_template_version: 2015-04-30
parameters:
provision_net:
type: string
default: provision
description: Name of a network that will be used for provisioning traffic
provision_net_cidr:
type: string
description: CIDR for provision network subnet
default: 192.168.24.0/24
provision_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
public_net:
type: string
description: Name of the overcloud external network
default: public
public_net_cidr:
type: string
description: CIDR for external network subnet
default: 10.0.0.0/24
public_net_shared:
type: boolean
description: Whether this network should be shared across all tenants
default: false
resources:
provision_network:
type: OS::Neutron::Net
properties:
name: {get_param: provision_net}
shared: {get_param: provision_net_shared}
provision_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: provision_network}
name: {get_param: provision_net}
cidr: {get_param: provision_net_cidr}
gateway_ip: null
enable_dhcp: false
public_network:
type: OS::Neutron::Net
properties:
name: {get_param: public_net}
shared: {get_param: public_net_shared}
public_subnet:
type: OS::Neutron::Subnet
properties:
network: {get_resource: public_network}
name: {get_param: public_net}
cidr: {get_param: public_net_cidr}
gateway_ip: null
enable_dhcp: false
outputs:
networks:
value:
provision: {get_resource: provision_network}
public: {get_resource: public_network}
# The provision and public network routers is here for compatibility only
provision_network_routers:
value: null
public_network_router:
value: null

View File

@ -1,75 +0,0 @@
heat_template_version: 2015-10-15
parameters:
undercloud_name:
type: string
private_net:
type: string
provision_net:
type: string
public_net:
type: string
resources:
undercloud_sg:
type: OS::Neutron::SecurityGroup
properties:
name:
list_join:
- '_'
- - {get_param: undercloud_name}
- 'sg'
description: Ping, SSH, and TripleO UI
rules:
- protocol: icmp
- protocol: tcp
port_range_min: 22
port_range_max: 22
- protocol: tcp
port_range_min: 3000
port_range_max: 3000
private_undercloud_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- '_'
- - {get_param: undercloud_name}
- 'private'
network: {get_param: private_net}
security_groups:
- {get_resource: undercloud_sg}
provision_undercloud_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- '_'
- - {get_param: undercloud_name}
- 'provision'
network: {get_param: provision_net}
port_security_enabled: False
public_undercloud_port:
type: OS::Neutron::Port
properties:
name:
list_join:
- '_'
- - {get_param: undercloud_name}
- 'public'
network: {get_param: public_net}
port_security_enabled: False
outputs:
ports:
value:
- {port: {get_resource: private_undercloud_port}}
- {port: {get_resource: provision_undercloud_port}}
- {port: {get_resource: public_undercloud_port}}

View File

@ -1,4 +1,4 @@
heat_template_version: 2014-10-16
heat_template_version: 2015-10-15
parameters:
@ -8,11 +8,8 @@ parameters:
private_net:
type: string
provision_net:
type: string
public_net:
type: string
networks:
type: json
resources:
undercloud_sg:
@ -53,7 +50,8 @@ resources:
- '_'
- - {get_param: undercloud_name}
- 'provision'
network: {get_param: provision_net}
network: {get_param: [networks, provision]}
port_security_enabled: False
public_undercloud_port:
type: OS::Neutron::Port
@ -63,7 +61,8 @@ resources:
- '_'
- - {get_param: undercloud_name}
- 'public'
network: {get_param: public_net}
network: {get_param: [networks, public]}
port_security_enabled: False
outputs:
ports:

View File

@ -19,10 +19,8 @@ parameters:
description: The size of the volume for the undercloud instance
private_net:
type: string
provision_net:
type: string
public_net:
type: string
networks:
type: json
external_net:
type: string
@ -32,8 +30,7 @@ resources:
properties:
undercloud_name: {get_param: undercloud_name}
private_net: {get_param: private_net}
provision_net: {get_param: provision_net}
public_net: {get_param: public_net}
networks: {get_param: networks}
undercloud_volume:
type: OS::Cinder::Volume

View File

@ -15,10 +15,8 @@ parameters:
type: string
private_net:
type: string
provision_net:
type: string
public_net:
type: string
networks:
type: json
external_net:
type: string
@ -28,8 +26,7 @@ resources:
properties:
undercloud_name: {get_param: undercloud_name}
private_net: {get_param: private_net}
provision_net: {get_param: provision_net}
public_net: {get_param: public_net}
networks: {get_param: networks}
undercloud_server:
type: OS::Nova::Server

View File

@ -14,11 +14,8 @@ parameters:
baremetal_prefix:
type: string
provision_net:
type: string
public_net:
type: string
networks:
type: json
suffix:
type: string
@ -30,8 +27,7 @@ resources:
properties:
suffix: {get_param: suffix}
baremetal_prefix: {get_param: baremetal_prefix}
provision_net: {get_param: provision_net}
public_net: {get_param: public_net}
networks: {get_param: networks}
baremetal_server:
type: OS::Nova::Server

View File

@ -45,22 +45,15 @@ parameters:
default: 1
description: Number of baremetal nodes to deploy
public_net:
type: string
description: |
An additional network that will be attached to the baremetal instances,
intended to be used for non-provisioning traffic
default: public
private_net:
type: string
default: private
description: Name of a private network which can have floating ips associated with it
provision_net:
type: string
default: provision
description: Name of a network that will be used for provisioning traffic
networks:
type: json
default: {"private": "private", "provision": "provision"}
description: A map of networks to their names.
bmc_prefix:
type: string
@ -121,6 +114,14 @@ parameters:
default: '{}'
hidden: true
dhcp_ips:
type: json
default:
- 192.168.24.1
- 192.168.24.10
description: |
The IP addresses of DHCP servers to relay DHCP requests to.
# Ignored parameters for compatibility with QuintupleO env files
undercloud_image:
type: string
@ -162,6 +163,15 @@ resources:
- _%index%
network: {get_param: private_net}
bmc_handle:
type: OS::Heat::WaitConditionHandle
bmc_wait_condition:
type: OS::Heat::WaitCondition
properties:
handle: {get_resource: bmc_handle}
timeout: 600
bmc_server:
type: OS::Nova::Server
depends_on: [openstack_baremetal_servers, bmc_other_ports, bmc_port]
@ -190,6 +200,7 @@ resources:
$private_net: {get_param: private_net}
$openstackbmc_script: {get_file: ../bin/openstackbmc}
$cloud_data: {get_param: cloud_data}
$signal_command: {get_attr: [bmc_handle, curl_cli]}
template: {get_file: ../bin/install_openstackbmc.sh}
baremetal_networks:
@ -206,7 +217,16 @@ resources:
baremetal_flavor: {get_param: baremetal_flavor}
baremetal_image: {get_param: baremetal_image}
key_name: {get_param: key_name}
provision_net: {get_param: provision_net}
public_net: {get_param: public_net}
networks: {get_param: networks}
suffix: _%index%
baremetal_prefix: {get_param: baremetal_prefix}
dhcp_relay:
type: OS::OVB::DHCPRelay
properties:
networks: {get_param: networks}
dhcp_ips: {get_param: dhcp_ips}
outputs:
baremetal_networks_routers_addresses:
value: {get_attr: [baremetal_networks, routers_addresses]}

View File

@ -7,5 +7,5 @@ testtools>=0.9.36,!=1.2.0
mock>=1.0
# docs
sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3
sphinx_rtd_theme==0.1.7
sphinx>=1.6
sphinx_rtd_theme