Merge branch '2.0-dev'
This commit is contained in:
commit
626b458b0a
|
@ -87,7 +87,7 @@ def _generate_environment(input_env, parent_env=None):
|
||||||
param_names = []
|
param_names = []
|
||||||
sample_values = env.get('sample_values', {})
|
sample_values = env.get('sample_values', {})
|
||||||
static_names = env.get('static', [])
|
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:
|
with open(template_file) as f:
|
||||||
f_data = yaml.safe_load(f)
|
f_data = yaml.safe_load(f)
|
||||||
f_params = f_data['parameters']
|
f_params = f_data['parameters']
|
||||||
|
|
|
@ -5,7 +5,7 @@ set -x
|
||||||
# install python2-crypto from EPEL
|
# install python2-crypto from EPEL
|
||||||
# python-[nova|neutron]client are in a similar situation. They were renamed
|
# python-[nova|neutron]client are in a similar situation. They were renamed
|
||||||
# in RDO to python2-*
|
# 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() {
|
function have_packages() {
|
||||||
for i in $required_packages; do
|
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
|
rm -f /tmp/bmc-cloud-data
|
||||||
export OS_CLOUD=host_cloud
|
export OS_CLOUD=host_cloud
|
||||||
|
|
||||||
# At some point neutronclient started returning a python list repr from this
|
private_subnet=$(openstack network show -f value -c subnets $private_net)
|
||||||
# command instead of just the value. This sed will strip off the bits we
|
default_gw=$(openstack subnet show -f value -c gateway_ip $private_subnet)
|
||||||
# don't care about without messing up the output from older clients.
|
prefix_len=$(openstack subnet show -f value -c cidr $private_subnet | awk -F / '{print $2}')
|
||||||
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}')
|
|
||||||
cache_status=
|
cache_status=
|
||||||
if [ "$bmc_use_cache" != "False" ]; then
|
if [ "$bmc_use_cache" != "False" ]; then
|
||||||
cache_status="--cache-status"
|
cache_status="--cache-status"
|
||||||
|
@ -103,14 +100,9 @@ EOF
|
||||||
for i in $(seq 1 $bm_node_count)
|
for i in $(seq 1 $bm_node_count)
|
||||||
do
|
do
|
||||||
bm_port="$bm_prefix_$(($i-1))"
|
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_port="$bmc_prefix_$(($i-1))"
|
||||||
bmc_ip=$(neutron port-show $bmc_port -c fixed_ips -f value | jq -r .ip_address)
|
bmc_ip=$(openstack port show -c fixed_ips -f value $bmc_port | awk -F \' '{print $2}')
|
||||||
# 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
|
|
||||||
unit="openstack-bmc-$bm_port.service"
|
unit="openstack-bmc-$bm_port.service"
|
||||||
|
|
||||||
cat <<EOF >/usr/lib/systemd/system/$unit
|
cat <<EOF >/usr/lib/systemd/system/$unit
|
||||||
|
@ -144,6 +136,21 @@ do
|
||||||
unit="openstack-bmc-$bm_port.service"
|
unit="openstack-bmc-$bm_port.service"
|
||||||
systemctl enable $unit
|
systemctl enable $unit
|
||||||
systemctl start $unit
|
systemctl start $unit
|
||||||
systemctl status $unit
|
|
||||||
done
|
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"}'
|
||||||
|
|
||||||
|
|
|
@ -49,9 +49,9 @@ then
|
||||||
fi
|
fi
|
||||||
echo 'resource_registry:' >> env.yaml
|
echo 'resource_registry:' >> env.yaml
|
||||||
echo ' OS::OVB::UndercloudFloating: templates/undercloud-floating.yaml' >> 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::BaremetalPorts: templates/baremetal-ports-default.yaml' >> env.yaml
|
||||||
echo ' OS::OVB::BMCPort: templates/bmc-port-port-security.yaml' >> env.yaml
|
echo ' OS::OVB::BMCPort: templates/bmc-port.yaml' >> env.yaml
|
||||||
echo ' OS::OVB::UndercloudPorts: templates/undercloud-ports-port-security.yaml' >> env.yaml
|
echo ' OS::OVB::UndercloudPorts: templates/undercloud-ports.yaml' >> env.yaml
|
||||||
echo ' OS::OVB::PrivateNetwork: templates/private-net-create.yaml' >> env.yaml
|
echo ' OS::OVB::PrivateNetwork: templates/private-net-create.yaml' >> env.yaml
|
||||||
|
|
||||||
cp -r $BIN_DIR ./bin
|
cp -r $BIN_DIR ./bin
|
||||||
|
|
|
@ -52,7 +52,7 @@ fi
|
||||||
cp -r $BIN_DIR ./bin
|
cp -r $BIN_DIR ./bin
|
||||||
cp -r $BIN_DIR/../openstack_virtual_baremetal .
|
cp -r $BIN_DIR/../openstack_virtual_baremetal .
|
||||||
STACK_NAME=$MY_ID
|
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')
|
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
|
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 "
|
SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=Verbose -o PasswordAuthentication=no -o ConnectionAttempts=32 "
|
||||||
|
|
|
@ -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.
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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.
|
|
|
@ -28,6 +28,7 @@ sys.path.insert(0, os.path.abspath('../../openstack_virtual_baremetal'))
|
||||||
extensions = [
|
extensions = [
|
||||||
'sphinx.ext.autodoc',
|
'sphinx.ext.autodoc',
|
||||||
'sphinx.ext.intersphinx',
|
'sphinx.ext.intersphinx',
|
||||||
|
'sphinx.ext.autosectionlabel',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,6 +96,7 @@ pygments_style = 'sphinx'
|
||||||
|
|
||||||
# -- Options for HTML output ---------------------------------------------------
|
# -- Options for HTML output ---------------------------------------------------
|
||||||
|
|
||||||
|
html_theme = 'sphinx_rtd_theme'
|
||||||
html_static_path = []
|
html_static_path = []
|
||||||
# html_style = 'custom.css'
|
# html_style = 'custom.css'
|
||||||
templates_path = []
|
templates_path = []
|
||||||
|
|
|
@ -37,7 +37,7 @@ method, which creates most of the resources needed automatically.
|
||||||
::
|
::
|
||||||
|
|
||||||
neutron net-create provision
|
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.
|
#. Create "public" network.
|
||||||
|
|
||||||
|
@ -94,8 +94,7 @@ method, which creates most of the resources needed automatically.
|
||||||
neutron port-list
|
neutron port-list
|
||||||
neutron floatingip-associate [floatingip uuid] [undercloud instance port id]
|
neutron floatingip-associate [floatingip uuid] [undercloud instance port id]
|
||||||
|
|
||||||
#. (Optional) If not using the Noop firewall driver, turn off port-security on
|
#. Turn off port-security on the undercloud provisioning port::
|
||||||
the undercloud provisioning port::
|
|
||||||
|
|
||||||
neutron port-update [UUID of undercloud port on the provision network] --no-security-groups --port-security-enabled=False
|
neutron port-update [UUID of undercloud port on the provision network] --no-security-groups --port-security-enabled=False
|
||||||
|
|
||||||
|
|
|
@ -1,30 +1,6 @@
|
||||||
Sample Environment Index
|
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
|
Deploy with All Networks Enabled and Two Public Interfaces
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
|
|
||||||
|
@ -118,13 +94,14 @@ Create a Private Network
|
||||||
existing one.
|
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
|
**Description:** Deploy a router that connects the public and external networks. This
|
||||||
allow OVB functionality in clouds with security groups enabled.
|
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
|
Disable the Undercloud in a QuintupleO Stack
|
||||||
|
@ -136,6 +113,38 @@ Disable the Undercloud in a QuintupleO Stack
|
||||||
instance.
|
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
|
Assign the Undercloud an Existing Floating IP
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ however.
|
||||||
with some older clouds. See below for details on customizing an OVB
|
with some older clouds. See below for details on customizing an OVB
|
||||||
deployment for your particular situation::
|
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.
|
.. note:: There is a quintupleo-specific option ``--id`` in deploy.py.
|
||||||
It appends the value passed in to the name of all resources
|
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
|
QuintupleO deployment. For each such option there is a sample environment
|
||||||
to be passed to the deploy command.
|
to be passed to the deploy command.
|
||||||
|
|
||||||
For example, to deploy using the Neutron port-security extension to allow
|
For example, to deploy all networks needed for TripleO network isolation, the
|
||||||
DHCP and PXE booting, the following command could be used::
|
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``
|
.. important:: When deploying with multiple environment files, ``env.yaml``
|
||||||
*must* be explicitly passed to the deploy command.
|
*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
|
Some options may have additional configuration parameters. These parameters
|
||||||
will be listed in the environment file.
|
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`.
|
:doc:`environment-index`.
|
||||||
|
|
||||||
Network Isolation
|
Network Isolation
|
||||||
|
@ -144,15 +144,163 @@ Three primary networking layouts are included:
|
||||||
OVB environment. The ``bond-*`` overcloud templates must be used with this
|
OVB environment. The ``bond-*`` overcloud templates must be used with this
|
||||||
type of environment.
|
type of environment.
|
||||||
|
|
||||||
Each of the networking layouts has two variations: with and without the use of
|
QuintupleO and routed networks
|
||||||
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.
|
|
||||||
|
|
||||||
While the port-security extension existed as far back as the Liberty release,
|
TripleO supports deploying OpenStack with nodes on multiple network segments
|
||||||
it has only been successfully tested with OVB on Newton and above.
|
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
|
#. When deploying QuintupleO with routed networks environment files to enable
|
||||||
`port-security` somewhere in the filename. Network environments without that
|
routed networks must be included, as well as one or more role environment
|
||||||
substring are the standard ones that require the noop Neutron firewall driver.
|
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
|
||||||
|
|
|
@ -7,19 +7,8 @@ all of it will provide the optimal experience.
|
||||||
The changes described in this document apply to compute nodes in the
|
The changes described in this document apply to compute nodes in the
|
||||||
host cloud.
|
host cloud.
|
||||||
|
|
||||||
#. Neutron must be configured to use the NoopFirewallDriver. Edit
|
#. The Nova option ``force_config_drive`` must _not_ be set. If you have to
|
||||||
``/etc/neutron/plugins/ml2/ml2_conf.ini`` and set the option
|
change this option, restart ``nova-compute`` to apply it.
|
||||||
``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.
|
|
||||||
|
|
||||||
#. Ideally, jumbo frames should be enabled on the host cloud. This
|
#. Ideally, jumbo frames should be enabled on the host cloud. This
|
||||||
avoids MTU problems when deploying to instances over tunneled
|
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
|
such a change on the host cloud), it will likely be necessary to
|
||||||
configure a smaller MTU on the deployed virtual instances. Details
|
configure a smaller MTU on the deployed virtual instances. Details
|
||||||
on doing so can be found on the :doc:`../usage/usage` page.
|
on doing so can be found on the :doc:`../usage/usage` page.
|
||||||
|
|
||||||
#. Restart ``nova-compute`` and ``neutron-openvswitch-agent`` to apply the
|
|
||||||
changes above.
|
|
||||||
|
|
|
@ -6,9 +6,6 @@ Instructions for setting up the host cloud[1].
|
||||||
1: The host cloud is any OpenStack cloud providing the necessary functionality
|
1: The host cloud is any OpenStack cloud providing the necessary functionality
|
||||||
to run OVB. The host cloud must be running on real baremetal.
|
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::
|
.. toctree::
|
||||||
|
|
||||||
patches
|
patches
|
||||||
|
|
|
@ -49,10 +49,8 @@ VM, but responses never get to the baremetal instances.
|
||||||
|
|
||||||
**Cause**: Neutron port security blocking DHCP from the undercloud.
|
**Cause**: Neutron port security blocking DHCP from the undercloud.
|
||||||
|
|
||||||
**Solution**: Neutron either needs to be configured to use the Noop firewall
|
**Solution**: Ensure that the Neutron port-security extension is present in
|
||||||
driver, or the port-security extension must be used to disable
|
the host cloud. It is required for OVB to function properly.
|
||||||
port-security on the appropriate ports. As of this writing that
|
|
||||||
requires use of the port-security branch of OVB.
|
|
||||||
|
|
||||||
The BMC does not respond to IPMI requests
|
The BMC does not respond to IPMI requests
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
@ -62,11 +60,10 @@ on arbitrary addresses. The BMC deployment may have failed for some
|
||||||
reason.
|
reason.
|
||||||
|
|
||||||
**Solution**: Neutron must be configured to allow the BMC to listen on
|
**Solution**: Neutron must be configured to allow the BMC to listen on
|
||||||
arbitrary addresses. This requires use of the Noop firewall driver
|
arbitrary addresses. This requires the port-security extension as in the
|
||||||
or port-security extension as in the previous solution. If this
|
previous solution. If this is already configured correctly, then the BMC may
|
||||||
is already configured correctly, then the BMC may have failed to
|
have failed to deploy properly. This can usually be determined by looking at
|
||||||
deploy properly. This can usually be determined by looking at the
|
the nova console-log of the BMC instance. A correctly working BMC will
|
||||||
nova console-log of the BMC instance. A correctly working BMC will
|
|
||||||
display 'Managing instance [uuid]' for each baremetal node in the
|
display 'Managing instance [uuid]' for each baremetal node in the
|
||||||
environment. If those messages are not found, then the BMC has
|
environment. If those messages are not found, then the BMC has
|
||||||
failed to start properly. The relevant error messages should be
|
failed to start properly. The relevant error messages should be
|
||||||
|
|
|
@ -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:
|
this is a brief explanation of each:
|
||||||
|
|
||||||
- **network-templates:** IPv4 multi-nic. Usable with the network layout
|
- **network-templates:** IPv4 multi-nic. Usable with the network layout
|
||||||
deployed by the ``all-networks.yaml`` and
|
deployed by the ``all-networks.yaml`` environment.
|
||||||
``all-networks-port-security.yaml`` environments.
|
|
||||||
- **ipv6-network-templates:** IPv6 multi-nic. Usable with the network layout
|
- **ipv6-network-templates:** IPv6 multi-nic. Usable with the network layout
|
||||||
deployed by the ``all-networks.yaml`` and
|
deployed by the ``all-networks.yaml`` environment.
|
||||||
``all-networks-port-security.yaml`` environments.
|
|
||||||
- **bond-network-templates:** IPv4 multi-nic, with duplicate `public`
|
- **bond-network-templates:** IPv4 multi-nic, with duplicate `public`
|
||||||
interfaces for testing bonded nics. Usable with the network layout
|
interfaces for testing bonded nics. Usable with the network layout
|
||||||
deployed by the ``all-networks-public-bond.yaml`` and
|
deployed by the ``all-networks-public-bond.yaml`` environment.
|
||||||
``all-networks-public-bond-port-security.yaml`` environments.
|
|
||||||
|
|
||||||
The undercloud's ``public`` interface should be configured with the address
|
The undercloud's ``public`` interface should be configured with the address
|
||||||
of the default route from the templates in use. Firewall rules for
|
of the default route from the templates in use. Firewall rules for
|
||||||
|
|
|
@ -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
|
|
|
@ -0,0 +1 @@
|
||||||
|
all-networks.yaml
|
|
@ -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
|
|
|
@ -0,0 +1 @@
|
||||||
|
all-networks-public-bond.yaml
|
|
@ -33,4 +33,4 @@ parameter_defaults:
|
||||||
role: extra
|
role: extra
|
||||||
|
|
||||||
resource_registry:
|
resource_registry:
|
||||||
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-extra-node-port-security.yaml
|
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-extra-node.yaml
|
||||||
|
|
|
@ -4,11 +4,10 @@
|
||||||
# Users are recommended to make changes to a copy of the file instead
|
# Users are recommended to make changes to a copy of the file instead
|
||||||
# of the original, if any customizations are needed.
|
# of the original, if any customizations are needed.
|
||||||
# *******************************************************************
|
# *******************************************************************
|
||||||
# title: Deploy a Basic OVB Environment Using Neutron port-security
|
# title: Public Network External Router
|
||||||
# description: |
|
# description: |
|
||||||
# Deploy an OVB stack that uses the Neutron port-security extension to
|
# Deploy a router that connects the public and external networks. This
|
||||||
# allow OVB functionality in clouds with security groups enabled.
|
# allows the public network to be used as a gateway instead of routing all
|
||||||
|
# traffic through the undercloud.
|
||||||
resource_registry:
|
resource_registry:
|
||||||
OS::OVB::BMCPort: ../templates/bmc-port-port-security.yaml
|
OS::OVB::UndercloudNetworks: ../templates/undercloud-networks-public-router.yaml
|
||||||
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-default-port-security.yaml
|
|
||||||
OS::OVB::UndercloudPorts: ../templates/undercloud-ports-port-security.yaml
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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.
|
|
|
@ -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
|
|
|
@ -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"]
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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
|
|
|
@ -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"]
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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}
|
|
|
@ -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.
|
|
|
@ -45,7 +45,7 @@ def _parse_args():
|
||||||
parser.add_argument('--provision_net',
|
parser.add_argument('--provision_net',
|
||||||
dest='provision_net',
|
dest='provision_net',
|
||||||
default='provision',
|
default='provision',
|
||||||
help='Provisioning network name')
|
help='DEPRECATED: This parameter is ignored.')
|
||||||
parser.add_argument('--nodes_json',
|
parser.add_argument('--nodes_json',
|
||||||
dest='nodes_json',
|
dest='nodes_json',
|
||||||
default='nodes.json',
|
default='nodes.json',
|
||||||
|
@ -71,31 +71,22 @@ def _parse_args():
|
||||||
return 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):
|
def _get_names(args):
|
||||||
if args.env is None:
|
if args.env is None:
|
||||||
bmc_base = args.bmc_prefix
|
bmc_base = args.bmc_prefix
|
||||||
baremetal_base = args.baremetal_prefix
|
baremetal_base = args.baremetal_prefix
|
||||||
provision_net = args.provision_net
|
|
||||||
# FIXME: This is not necessarily true.
|
# FIXME: This is not necessarily true.
|
||||||
undercloud_name = 'undercloud'
|
undercloud_name = 'undercloud'
|
||||||
else:
|
else:
|
||||||
with open(args.env) as f:
|
with open(args.env) as f:
|
||||||
e = yaml.safe_load(f)
|
e = yaml.safe_load(f)
|
||||||
bmc_base = _get_from_env(e, 'bmc_prefix')
|
bmc_base = e['parameter_defaults']['bmc_prefix']
|
||||||
baremetal_base = _get_from_env(e, 'baremetal_prefix')
|
baremetal_base = e['parameter_defaults']['baremetal_prefix']
|
||||||
provision_net = _get_from_env(e, 'provision_net')
|
|
||||||
role = e.get('parameter_defaults', {}).get('role')
|
role = e.get('parameter_defaults', {}).get('role')
|
||||||
if role and baremetal_base.endswith('-' + role):
|
if role and baremetal_base.endswith('-' + role):
|
||||||
baremetal_base = baremetal_base[:-len(role) - 1]
|
baremetal_base = baremetal_base[:-len(role) - 1]
|
||||||
undercloud_name = e.get('parameter_defaults', {}).get('undercloud_name') # noqa: E501
|
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():
|
def _get_clients():
|
||||||
|
@ -116,10 +107,17 @@ def _get_ports(neutron, bmc_base, baremetal_base):
|
||||||
raise RuntimeError('Found different numbers of baremetal and '
|
raise RuntimeError('Found different numbers of baremetal and '
|
||||||
'bmc ports. bmc: %s baremetal: %s' % (bmc_ports,
|
'bmc ports. bmc: %s baremetal: %s' % (bmc_ports,
|
||||||
bm_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):
|
baremetal_base, undercloud_name, driver, physical_network):
|
||||||
node_template = {
|
node_template = {
|
||||||
'pm_type': driver,
|
'pm_type': driver,
|
||||||
|
@ -136,9 +134,6 @@ def _build_nodes(nova, glance, bmc_ports, bm_ports, provision_net,
|
||||||
}
|
}
|
||||||
if physical_network:
|
if physical_network:
|
||||||
node_template.pop('mac')
|
node_template.pop('mac')
|
||||||
node_template.update(
|
|
||||||
{'ports': [{'address': '', 'physical_network': provision_net}]})
|
|
||||||
|
|
||||||
nodes = []
|
nodes = []
|
||||||
bmc_bm_pairs = []
|
bmc_bm_pairs = []
|
||||||
cache = {}
|
cache = {}
|
||||||
|
@ -151,9 +146,11 @@ def _build_nodes(nova, glance, bmc_ports, bm_ports, provision_net,
|
||||||
node = dict(node_template)
|
node = dict(node_template)
|
||||||
node['pm_addr'] = bmc_port['fixed_ips'][0]['ip_address']
|
node['pm_addr'] = bmc_port['fixed_ips'][0]['ip_address']
|
||||||
bmc_bm_pairs.append((node['pm_addr'], baremetal.name))
|
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']
|
mac = baremetal.addresses[provision_net][0]['OS-EXT-IPS-MAC:mac_addr']
|
||||||
if physical_network:
|
if physical_network:
|
||||||
node['ports'][0]['address'] = mac
|
node.update({'ports': [{'address': mac,
|
||||||
|
'physical_network': provision_net}]})
|
||||||
else:
|
else:
|
||||||
node['mac'] = [mac]
|
node['mac'] = [mac]
|
||||||
if not cache.get(baremetal.flavor['id']):
|
if not cache.get(baremetal.flavor['id']):
|
||||||
|
@ -282,14 +279,15 @@ def _write_pairs(bmc_bm_pairs):
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
args = _parse_args()
|
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()
|
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,
|
(nodes,
|
||||||
bmc_bm_pairs,
|
bmc_bm_pairs,
|
||||||
extra_nodes,
|
extra_nodes,
|
||||||
network_details) = _build_nodes(nova, glance, bmc_ports, bm_ports,
|
network_details) = _build_nodes(nova, glance, bmc_ports, bm_ports,
|
||||||
provision_net, baremetal_base,
|
provision_net_map, baremetal_base,
|
||||||
undercloud_name, args.driver,
|
undercloud_name, args.driver,
|
||||||
args.physical_network)
|
args.physical_network)
|
||||||
_write_nodes(nodes, extra_nodes, network_details, args)
|
_write_nodes(nodes, extra_nodes, network_details, args)
|
||||||
|
|
|
@ -101,27 +101,18 @@ def _process_args(args):
|
||||||
|
|
||||||
|
|
||||||
def _add_identifier(env_data, name, identifier, default=None):
|
def _add_identifier(env_data, name, identifier, default=None):
|
||||||
# We require both sections for id environments
|
"""Append identifier to the end of parameter name in env_data
|
||||||
if not env_data.get('parameters'):
|
|
||||||
env_data['parameters'] = {}
|
Look for ``name`` in the ``parameter_defaults`` key of ``env_data`` and
|
||||||
if not env_data.get('parameter_defaults'):
|
append '-``identifier``' to it.
|
||||||
env_data['parameter_defaults'] = {}
|
"""
|
||||||
parameter = False
|
value = env_data['parameter_defaults'].get(name)
|
||||||
try:
|
if value is None:
|
||||||
original = env_data['parameters'][name]
|
value = default
|
||||||
parameter = True
|
if value is None:
|
||||||
except KeyError:
|
|
||||||
original = env_data['parameter_defaults'].get(name)
|
|
||||||
if original is None:
|
|
||||||
original = default
|
|
||||||
if original is None:
|
|
||||||
raise RuntimeError('No base value found when adding id')
|
raise RuntimeError('No base value found when adding id')
|
||||||
value = '%s-%s' % (original, identifier)
|
if identifier:
|
||||||
# If it was passed in as a parameter we need to set it in the parameters
|
value = '%s-%s' % (value, identifier)
|
||||||
# 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
|
|
||||||
env_data['parameter_defaults'][name] = value
|
env_data['parameter_defaults'][name] = value
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,6 +133,8 @@ def _build_env_data(env_paths):
|
||||||
def _generate_id_env(args):
|
def _generate_id_env(args):
|
||||||
env_data = _build_env_data(args.env)
|
env_data = _build_env_data(args.env)
|
||||||
_add_identifier(env_data, 'provision_net', args.id, default='provision')
|
_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, 'public_net', args.id, default='public')
|
||||||
_add_identifier(env_data,
|
_add_identifier(env_data,
|
||||||
'baremetal_prefix',
|
'baremetal_prefix',
|
||||||
|
@ -163,6 +156,16 @@ def _generate_id_env(args):
|
||||||
default='storage_mgmt')
|
default='storage_mgmt')
|
||||||
_add_identifier(env_data, 'overcloud_tenant_net', args.id,
|
_add_identifier(env_data, 'overcloud_tenant_net', args.id,
|
||||||
default='tenant')
|
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
|
# 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
|
# writing the new env file to a different path it can break relative paths
|
||||||
# in the resource_registry.
|
# in the resource_registry.
|
||||||
|
@ -182,14 +185,19 @@ def _validate_env(args, env_paths):
|
||||||
if not args.id:
|
if not args.id:
|
||||||
env_data = _build_env_data(env_paths)
|
env_data = _build_env_data(env_paths)
|
||||||
role = env_data.get('parameter_defaults', {}).get('role')
|
role = env_data.get('parameter_defaults', {}).get('role')
|
||||||
try:
|
prefix = env_data['parameter_defaults']['baremetal_prefix']
|
||||||
prefix = env_data['parameters']['baremetal_prefix']
|
|
||||||
except KeyError:
|
|
||||||
prefix = env_data['parameter_defaults']['baremetal_prefix']
|
|
||||||
if role and prefix.endswith('-' + role):
|
if role and prefix.endswith('-' + role):
|
||||||
raise RuntimeError('baremetal_prefix ends with role name. This '
|
raise RuntimeError('baremetal_prefix ends with role name. This '
|
||||||
'will break build-nodes-json. Please choose '
|
'will break build-nodes-json. Please choose '
|
||||||
'a different baremetal_prefix or role name.')
|
'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():
|
def _get_heat_client():
|
||||||
|
@ -284,17 +292,24 @@ def _process_role(role_file, base_envs, stack_name, args):
|
||||||
'overcloud_storage_net', 'overcloud_tenant_net',
|
'overcloud_storage_net', 'overcloud_tenant_net',
|
||||||
]
|
]
|
||||||
# Parameters that are inherited but can be overridden by the role
|
# Parameters that are inherited but can be overridden by the role
|
||||||
allowed_parameter_keys = ['baremetal_image', 'bmc_flavor', 'key_name']
|
allowed_parameter_keys = ['baremetal_image', 'bmc_flavor', 'key_name',
|
||||||
allowed_registry_keys = ['OS::OVB::BaremetalPorts', 'OS::OVB::BMCPort']
|
'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
|
role_env = role_data
|
||||||
# resource_registry is intentionally omitted as it should not be inherited
|
# resource_registry is intentionally omitted as it should not be inherited
|
||||||
for section in ['parameters', 'parameter_defaults']:
|
role_env.setdefault('parameter_defaults', {}).update({
|
||||||
role_env.setdefault(section, {}).update({
|
k: v for k, v in base_data.get('parameter_defaults', {}).items()
|
||||||
k: v for k, v in base_data.get(section, {}).items()
|
if k in inherited_keys and
|
||||||
if k in inherited_keys and
|
(k not in role_env.get('parameter_defaults', {}) or
|
||||||
(k not in role_env.get(section, {}) or
|
k not in allowed_parameter_keys)
|
||||||
k not in allowed_parameter_keys)
|
})
|
||||||
})
|
|
||||||
# Most of the resource_registry should not be included in role envs.
|
# Most of the resource_registry should not be included in role envs.
|
||||||
# Only allow specific entries that may be needed.
|
# Only allow specific entries that may be needed.
|
||||||
role_env.setdefault('resource_registry', {})
|
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:
|
if k not in role_reg and k in base_reg:
|
||||||
role_reg[k] = base_reg[k]
|
role_reg[k] = base_reg[k]
|
||||||
# We need to start with the unmodified prefix
|
# We need to start with the unmodified prefix
|
||||||
try:
|
base_prefix = orig_data['parameter_defaults']['baremetal_prefix']
|
||||||
base_prefix = orig_data['parameters']['baremetal_prefix']
|
|
||||||
except KeyError:
|
|
||||||
base_prefix = orig_data['parameter_defaults']['baremetal_prefix']
|
|
||||||
# But we do need to add the id if one is in use
|
# But we do need to add the id if one is in use
|
||||||
if args.id:
|
if args.id:
|
||||||
base_prefix += '-%s' % args.id
|
base_prefix += '-%s' % args.id
|
||||||
try:
|
bmc_prefix = base_data['parameter_defaults']['bmc_prefix']
|
||||||
bmc_prefix = base_data['parameters']['bmc_prefix']
|
|
||||||
except KeyError:
|
|
||||||
bmc_prefix = base_data['parameter_defaults']['bmc_prefix']
|
|
||||||
role = role_data['parameter_defaults']['role']
|
role = role_data['parameter_defaults']['role']
|
||||||
if '_' in role:
|
if '_' in role:
|
||||||
raise RuntimeError('_ character not allowed in role name "%s".' % role)
|
raise RuntimeError('_ character not allowed in role name "%s".' % role)
|
||||||
role_env['parameters']['baremetal_prefix'] = '%s-%s' % (base_prefix, role)
|
role_env['parameter_defaults']['baremetal_prefix'] = ('%s-%s' %
|
||||||
role_env['parameters']['bmc_prefix'] = '%s-%s' % (bmc_prefix, role)
|
(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)
|
role_file = 'env-%s-%s.yaml' % (stack_name, role)
|
||||||
_write_role_file(role_env, role_file)
|
_write_role_file(role_env, role_file)
|
||||||
return role_file, role
|
return role_file, role
|
||||||
|
|
|
@ -28,63 +28,19 @@ import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import novaclient as nc
|
|
||||||
from novaclient import client as novaclient
|
|
||||||
from novaclient import exceptions
|
from novaclient import exceptions
|
||||||
try:
|
import os_client_config
|
||||||
import os_client_config
|
|
||||||
except ImportError:
|
|
||||||
os_client_config = None
|
|
||||||
import pyghmi.ipmi.bmc as bmc
|
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):
|
class OpenStackBmc(bmc.Bmc):
|
||||||
def __init__(self, authdata, port, address, instance, user, password,
|
def __init__(self, authdata, port, address, instance, cache_status,
|
||||||
tenant, auth_url, project, user_domain, project_domain,
|
os_cloud):
|
||||||
cache_status, os_cloud):
|
|
||||||
super(OpenStackBmc, self).__init__(authdata,
|
super(OpenStackBmc, self).__init__(authdata,
|
||||||
port=port,
|
port=port,
|
||||||
address=address)
|
address=address)
|
||||||
if os_client_config:
|
self.novaclient = os_client_config.make_client('compute',
|
||||||
if user:
|
cloud=os_cloud)
|
||||||
# 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.instance = None
|
self.instance = None
|
||||||
self.cache_status = cache_status
|
self.cache_status = cache_status
|
||||||
self.cached_status = None
|
self.cached_status = None
|
||||||
|
@ -234,55 +190,6 @@ def main():
|
||||||
required=True,
|
required=True,
|
||||||
help='The uuid or name of the OpenStack instance '
|
help='The uuid or name of the OpenStack instance '
|
||||||
'to manage')
|
'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',
|
parser.add_argument('--cache-status',
|
||||||
dest='cache_status',
|
dest='cache_status',
|
||||||
default=False,
|
default=False,
|
||||||
|
@ -293,7 +200,6 @@ def main():
|
||||||
'it may become out of sync.')
|
'it may become out of sync.')
|
||||||
parser.add_argument('--os-cloud',
|
parser.add_argument('--os-cloud',
|
||||||
dest='os_cloud',
|
dest='os_cloud',
|
||||||
required=False,
|
|
||||||
default=os.environ.get('OS_CLOUD'),
|
default=os.environ.get('OS_CLOUD'),
|
||||||
help='Use the specified cloud from clouds.yaml. '
|
help='Use the specified cloud from clouds.yaml. '
|
||||||
'Defaults to the OS_CLOUD environment variable.')
|
'Defaults to the OS_CLOUD environment variable.')
|
||||||
|
@ -306,13 +212,6 @@ def main():
|
||||||
mybmc = OpenStackBmc({'admin': 'password'}, port=args.port,
|
mybmc = OpenStackBmc({'admin': 'password'}, port=args.port,
|
||||||
address=addr_format % args.address,
|
address=addr_format % args.address,
|
||||||
instance=args.instance,
|
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,
|
cache_status=args.cache_status,
|
||||||
os_cloud=args.os_cloud)
|
os_cloud=args.os_cloud)
|
||||||
mybmc.listen()
|
mybmc.listen()
|
||||||
|
|
|
@ -70,13 +70,11 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
args.env = None
|
args.env = None
|
||||||
args.bmc_prefix = 'bmc-foo'
|
args.bmc_prefix = 'bmc-foo'
|
||||||
args.baremetal_prefix = 'baremetal-foo'
|
args.baremetal_prefix = 'baremetal-foo'
|
||||||
args.provision_net = 'provision-foo'
|
|
||||||
args.add_undercloud = False
|
args.add_undercloud = False
|
||||||
bmc_base, baremetal_base, provision_net, undercloud_name = (
|
bmc_base, baremetal_base, undercloud_name = (
|
||||||
build_nodes_json._get_names(args))
|
build_nodes_json._get_names(args))
|
||||||
self.assertEqual('bmc-foo', bmc_base)
|
self.assertEqual('bmc-foo', bmc_base)
|
||||||
self.assertEqual('baremetal-foo', baremetal_base)
|
self.assertEqual('baremetal-foo', baremetal_base)
|
||||||
self.assertEqual('provision-foo', provision_net)
|
|
||||||
self.assertEqual('undercloud', undercloud_name)
|
self.assertEqual('undercloud', undercloud_name)
|
||||||
|
|
||||||
def test_get_names_no_env_w_undercloud(self):
|
def test_get_names_no_env_w_undercloud(self):
|
||||||
|
@ -84,37 +82,13 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
args.env = None
|
args.env = None
|
||||||
args.bmc_prefix = 'bmc-foo'
|
args.bmc_prefix = 'bmc-foo'
|
||||||
args.baremetal_prefix = 'baremetal-foo'
|
args.baremetal_prefix = 'baremetal-foo'
|
||||||
args.provision_net = 'provision-foo'
|
|
||||||
args.add_undercloud = True
|
args.add_undercloud = True
|
||||||
bmc_base, baremetal_base, provision_net, undercloud_name = (
|
bmc_base, baremetal_base, undercloud_name = (
|
||||||
build_nodes_json._get_names(args))
|
build_nodes_json._get_names(args))
|
||||||
self.assertEqual('bmc-foo', bmc_base)
|
self.assertEqual('bmc-foo', bmc_base)
|
||||||
self.assertEqual('baremetal-foo', baremetal_base)
|
self.assertEqual('baremetal-foo', baremetal_base)
|
||||||
self.assertEqual('provision-foo', provision_net)
|
|
||||||
self.assertEqual('undercloud', undercloud_name)
|
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',
|
@mock.patch('openstack_virtual_baremetal.build_nodes_json.open',
|
||||||
create=True)
|
create=True)
|
||||||
@mock.patch('yaml.safe_load')
|
@mock.patch('yaml.safe_load')
|
||||||
|
@ -126,15 +100,13 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
'parameter_defaults': {
|
'parameter_defaults': {
|
||||||
'bmc_prefix': 'bmc-foo',
|
'bmc_prefix': 'bmc-foo',
|
||||||
'baremetal_prefix': 'baremetal-foo',
|
'baremetal_prefix': 'baremetal-foo',
|
||||||
'provision_net': 'provision-foo'
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
mock_load.return_value = mock_env
|
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))
|
build_nodes_json._get_names(args))
|
||||||
self.assertEqual('bmc-foo', bmc_base)
|
self.assertEqual('bmc-foo', bmc_base)
|
||||||
self.assertEqual('baremetal-foo', baremetal_base)
|
self.assertEqual('baremetal-foo', baremetal_base)
|
||||||
self.assertEqual('provision-foo', provision_net)
|
|
||||||
self.assertIsNone(undercloud_name)
|
self.assertIsNone(undercloud_name)
|
||||||
|
|
||||||
@mock.patch('openstack_virtual_baremetal.build_nodes_json.open',
|
@mock.patch('openstack_virtual_baremetal.build_nodes_json.open',
|
||||||
|
@ -148,16 +120,14 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
'parameter_defaults': {
|
'parameter_defaults': {
|
||||||
'bmc_prefix': 'bmc',
|
'bmc_prefix': 'bmc',
|
||||||
'baremetal_prefix': 'baremetal',
|
'baremetal_prefix': 'baremetal',
|
||||||
'provision_net': 'provision',
|
|
||||||
'role': 'foo',
|
'role': 'foo',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
mock_load.return_value = mock_env
|
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))
|
build_nodes_json._get_names(args))
|
||||||
self.assertEqual('bmc', bmc_base)
|
self.assertEqual('bmc', bmc_base)
|
||||||
self.assertEqual('baremetal', baremetal_base)
|
self.assertEqual('baremetal', baremetal_base)
|
||||||
self.assertEqual('provision', provision_net)
|
|
||||||
self.assertIsNone(undercloud_name)
|
self.assertIsNone(undercloud_name)
|
||||||
|
|
||||||
@mock.patch('openstack_virtual_baremetal.build_nodes_json.open',
|
@mock.patch('openstack_virtual_baremetal.build_nodes_json.open',
|
||||||
|
@ -171,16 +141,14 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
'parameter_defaults': {
|
'parameter_defaults': {
|
||||||
'bmc_prefix': 'bmc-foo',
|
'bmc_prefix': 'bmc-foo',
|
||||||
'baremetal_prefix': 'baremetal-foo-bar',
|
'baremetal_prefix': 'baremetal-foo-bar',
|
||||||
'provision_net': 'provision-foo',
|
|
||||||
'role': 'bar',
|
'role': 'bar',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
mock_load.return_value = mock_env
|
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))
|
build_nodes_json._get_names(args))
|
||||||
self.assertEqual('bmc-foo', bmc_base)
|
self.assertEqual('bmc-foo', bmc_base)
|
||||||
self.assertEqual('baremetal-foo', baremetal_base)
|
self.assertEqual('baremetal-foo', baremetal_base)
|
||||||
self.assertEqual('provision-foo', provision_net)
|
|
||||||
self.assertIsNone(undercloud_name)
|
self.assertIsNone(undercloud_name)
|
||||||
|
|
||||||
@mock.patch('os_client_config.make_client')
|
@mock.patch('os_client_config.make_client')
|
||||||
|
@ -203,21 +171,42 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
|
|
||||||
def test_get_ports(self):
|
def test_get_ports(self):
|
||||||
neutron = mock.Mock()
|
neutron = mock.Mock()
|
||||||
|
fake_fixed_ips = [{'subnet_id': 'provision_id'}]
|
||||||
fake_ports = {
|
fake_ports = {
|
||||||
'ports': [
|
'ports': [
|
||||||
{'name': 'random'},
|
{'name': 'random',
|
||||||
{'name': 'bmc_1'},
|
'id': 'random_id',
|
||||||
{'name': 'bmc_0'},
|
'fixed_ips': fake_fixed_ips},
|
||||||
{'name': 'baremetal_1'},
|
{'name': 'bmc_1',
|
||||||
{'name': 'baremetal_0'},
|
'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
|
neutron.list_ports.return_value = fake_ports
|
||||||
bmc_ports, bm_ports = build_nodes_json._get_ports(neutron, 'bmc',
|
neutron.list_subnets.return_value = fake_subnets
|
||||||
'baremetal')
|
bmc_ports, bm_ports, provision_net_map = build_nodes_json._get_ports(
|
||||||
self.assertEqual([{'name': 'bmc_0'}, {'name': 'bmc_1'}], bmc_ports)
|
neutron, 'bmc', 'baremetal')
|
||||||
self.assertEqual([{'name': 'baremetal_0'}, {'name': 'baremetal_1'}],
|
self.assertEqual([fake_ports['ports'][2], fake_ports['ports'][1]],
|
||||||
|
bmc_ports)
|
||||||
|
self.assertEqual([fake_ports['ports'][4], fake_ports['ports'][3]],
|
||||||
bm_ports)
|
bm_ports)
|
||||||
|
self.assertEqual({'baremetal_0_id': 'provision',
|
||||||
|
'baremetal_1_id': 'provision'}, provision_net_map)
|
||||||
|
|
||||||
def test_get_ports_mismatch(self):
|
def test_get_ports_mismatch(self):
|
||||||
neutron = mock.Mock()
|
neutron = mock.Mock()
|
||||||
|
@ -228,20 +217,38 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
|
|
||||||
def test_get_ports_multiple(self):
|
def test_get_ports_multiple(self):
|
||||||
neutron = mock.Mock()
|
neutron = mock.Mock()
|
||||||
|
fake_fixed_ips = [{'subnet_id': 'provision_id'}]
|
||||||
fake_ports = {
|
fake_ports = {
|
||||||
'ports': [
|
'ports': [
|
||||||
{'name': 'random'},
|
{'name': 'random',
|
||||||
{'name': 'bmc-foo_0'},
|
'id': 'random_id',
|
||||||
{'name': 'bmc-bar_0'},
|
'fixed_ips': fake_fixed_ips},
|
||||||
{'name': 'baremetal-foo_0'},
|
{'name': 'bmc-foo_0',
|
||||||
{'name': 'baremetal-bar_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
|
neutron.list_ports.return_value = fake_ports
|
||||||
bmc_ports, bm_ports = build_nodes_json._get_ports(neutron, 'bmc-foo',
|
neutron.list_subnets.return_value = fake_subnets
|
||||||
'baremetal-foo')
|
bmc_ports, bm_ports, provision_net_map = build_nodes_json._get_ports(
|
||||||
self.assertEqual([{'name': 'bmc-foo_0'}], bmc_ports)
|
neutron, 'bmc-foo', 'baremetal-foo')
|
||||||
self.assertEqual([{'name': 'baremetal-foo_0'}], bm_ports)
|
self.assertEqual([fake_ports['ports'][1]], bmc_ports)
|
||||||
|
self.assertEqual([fake_ports['ports'][3]], bm_ports)
|
||||||
|
|
||||||
def _fake_port(self, device_id, ip, mac):
|
def _fake_port(self, device_id, ip, mac):
|
||||||
return {'device_id': device_id,
|
return {'device_id': device_id,
|
||||||
|
@ -275,7 +282,11 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
bmc_ports = [{'fixed_ips': [{'ip_address': '1.1.1.1'}]},
|
bmc_ports = [{'fixed_ips': [{'ip_address': '1.1.1.1'}]},
|
||||||
{'fixed_ips': [{'ip_address': '1.1.1.2'}]}
|
{'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
|
physical_network = False
|
||||||
nova = mock.Mock()
|
nova = mock.Mock()
|
||||||
servers = [mock.Mock(), mock.Mock(), mock.Mock()]
|
servers = [mock.Mock(), mock.Mock(), mock.Mock()]
|
||||||
|
@ -304,8 +315,8 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
bmc_bm_pairs,
|
bmc_bm_pairs,
|
||||||
extra_nodes,
|
extra_nodes,
|
||||||
network_details) = build_nodes_json._build_nodes(
|
network_details) = build_nodes_json._build_nodes(
|
||||||
nova, glance, bmc_ports, bm_ports, 'provision', 'bm', 'undercloud',
|
nova, glance, bmc_ports, bm_ports, provision_net_map, 'bm',
|
||||||
'pxe_ipmitool', physical_network)
|
'undercloud', 'pxe_ipmitool', physical_network)
|
||||||
expected_nodes = copy.deepcopy(TEST_NODES)
|
expected_nodes = copy.deepcopy(TEST_NODES)
|
||||||
expected_nodes[1]['disk'] = 100
|
expected_nodes[1]['disk'] = 100
|
||||||
self.assertEqual(expected_nodes, nodes)
|
self.assertEqual(expected_nodes, nodes)
|
||||||
|
@ -323,7 +334,11 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
bmc_ports = [{'fixed_ips': [{'ip_address': '1.1.1.1'}]},
|
bmc_ports = [{'fixed_ips': [{'ip_address': '1.1.1.1'}]},
|
||||||
{'fixed_ips': [{'ip_address': '1.1.1.2'}]}
|
{'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
|
physical_network = False
|
||||||
nova = mock.Mock()
|
nova = mock.Mock()
|
||||||
servers = [mock.Mock(), mock.Mock(), mock.Mock()]
|
servers = [mock.Mock(), mock.Mock(), mock.Mock()]
|
||||||
|
@ -352,8 +367,8 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
bmc_bm_pairs,
|
bmc_bm_pairs,
|
||||||
extra_nodes,
|
extra_nodes,
|
||||||
network_details) = build_nodes_json._build_nodes(
|
network_details) = build_nodes_json._build_nodes(
|
||||||
nova, glance, bmc_ports, bm_ports, 'provision', 'bm', 'undercloud',
|
nova, glance, bmc_ports, bm_ports, provision_net_map, 'bm',
|
||||||
'ipmi', physical_network)
|
'undercloud', 'ipmi', physical_network)
|
||||||
expected_nodes = copy.deepcopy(TEST_NODES)
|
expected_nodes = copy.deepcopy(TEST_NODES)
|
||||||
expected_nodes[1]['disk'] = 100
|
expected_nodes[1]['disk'] = 100
|
||||||
for node in expected_nodes:
|
for node in expected_nodes:
|
||||||
|
@ -372,7 +387,11 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
bmc_ports = [{'fixed_ips': [{'ip_address': '1.1.1.1'}]},
|
bmc_ports = [{'fixed_ips': [{'ip_address': '1.1.1.1'}]},
|
||||||
{'fixed_ips': [{'ip_address': '1.1.1.2'}]}
|
{'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
|
physical_network = False
|
||||||
nova = mock.Mock()
|
nova = mock.Mock()
|
||||||
servers = [mock.Mock(), mock.Mock(), 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
|
glance.images.get.return_value = mock_image_get
|
||||||
|
|
||||||
nodes, bmc_bm_pairs, extra_nodes, _ = build_nodes_json._build_nodes(
|
nodes, bmc_bm_pairs, extra_nodes, _ = build_nodes_json._build_nodes(
|
||||||
nova, glance, bmc_ports, bm_ports, 'provision', 'bm-foo', None,
|
nova, glance, bmc_ports, bm_ports, provision_net_map, 'bm-foo',
|
||||||
'pxe_ipmitool', physical_network)
|
None, 'pxe_ipmitool', physical_network)
|
||||||
expected_nodes = copy.deepcopy(TEST_NODES)
|
expected_nodes = copy.deepcopy(TEST_NODES)
|
||||||
expected_nodes[0]['name'] = 'bm-foo-control-0'
|
expected_nodes[0]['name'] = 'bm-foo-control-0'
|
||||||
expected_nodes[0]['capabilities'] = ('boot_option:local,'
|
expected_nodes[0]['capabilities'] = ('boot_option:local,'
|
||||||
|
@ -495,9 +514,9 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
mock_parse_args.return_value = args
|
mock_parse_args.return_value = args
|
||||||
bmc_base = mock.Mock()
|
bmc_base = mock.Mock()
|
||||||
baremetal_base = mock.Mock()
|
baremetal_base = mock.Mock()
|
||||||
provision_net = mock.Mock()
|
provision_net_map = mock.Mock()
|
||||||
undercloud_name = 'undercloud'
|
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)
|
undercloud_name)
|
||||||
nova = mock.Mock()
|
nova = mock.Mock()
|
||||||
neutron = mock.Mock()
|
neutron = mock.Mock()
|
||||||
|
@ -505,7 +524,7 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
mock_get_clients.return_value = (nova, neutron, glance)
|
mock_get_clients.return_value = (nova, neutron, glance)
|
||||||
bmc_ports = mock.Mock()
|
bmc_ports = mock.Mock()
|
||||||
bm_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()
|
nodes = mock.Mock()
|
||||||
pairs = mock.Mock()
|
pairs = mock.Mock()
|
||||||
extra_nodes = mock.Mock()
|
extra_nodes = mock.Mock()
|
||||||
|
@ -521,7 +540,7 @@ class TestBuildNodesJson(testtools.TestCase):
|
||||||
mock_get_ports.assert_called_once_with(neutron, bmc_base,
|
mock_get_ports.assert_called_once_with(neutron, bmc_base,
|
||||||
baremetal_base)
|
baremetal_base)
|
||||||
mock_build_nodes.assert_called_once_with(nova, glance, bmc_ports,
|
mock_build_nodes.assert_called_once_with(nova, glance, bmc_ports,
|
||||||
bm_ports, provision_net,
|
bm_ports, provision_net_map,
|
||||||
baremetal_base,
|
baremetal_base,
|
||||||
undercloud_name,
|
undercloud_name,
|
||||||
args.driver,
|
args.driver,
|
||||||
|
|
|
@ -89,14 +89,13 @@ class TestProcessArgs(unittest.TestCase):
|
||||||
self.assertRaises(ValueError, deploy._process_args, mock_args)
|
self.assertRaises(ValueError, deploy._process_args, mock_args)
|
||||||
|
|
||||||
|
|
||||||
test_env = u"""parameters:
|
test_env = u"""parameter_defaults:
|
||||||
provision_net: provision
|
provision_net: provision
|
||||||
public_net: public
|
public_net: public
|
||||||
baremetal_prefix: baremetal
|
baremetal_prefix: baremetal
|
||||||
bmc_prefix: bmc
|
bmc_prefix: bmc
|
||||||
"""
|
"""
|
||||||
test_env_param_defaults = u"""
|
test_env_extra = u"""
|
||||||
parameter_defaults:
|
|
||||||
overcloud_internal_net: internalapi
|
overcloud_internal_net: internalapi
|
||||||
role: ''
|
role: ''
|
||||||
"""
|
"""
|
||||||
|
@ -115,21 +114,13 @@ test_env_output = {
|
||||||
|
|
||||||
class TestIdEnv(unittest.TestCase):
|
class TestIdEnv(unittest.TestCase):
|
||||||
def test_add_identifier(self):
|
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'}}
|
env_data = {'parameter_defaults': {'foo': 'bar'}}
|
||||||
deploy._add_identifier(env_data, 'foo', 'baz')
|
deploy._add_identifier(env_data, 'foo', 'baz')
|
||||||
self.assertNotIn('foo', env_data['parameters'])
|
|
||||||
self.assertEqual('bar-baz', env_data['parameter_defaults']['foo'])
|
self.assertEqual('bar-baz', env_data['parameter_defaults']['foo'])
|
||||||
|
|
||||||
def test_add_identifier_different_section(self):
|
def test_add_identifier_different_section(self):
|
||||||
env_data = {'parameter_defaults': {'foo': 'bar'}}
|
env_data = {'parameter_defaults': {'foo': 'bar'}}
|
||||||
deploy._add_identifier(env_data, 'foo', 'baz')
|
deploy._add_identifier(env_data, 'foo', 'baz')
|
||||||
self.assertNotIn('foo', env_data['parameters'])
|
|
||||||
self.assertEqual('bar-baz', env_data['parameter_defaults']['foo'])
|
self.assertEqual('bar-baz', env_data['parameter_defaults']['foo'])
|
||||||
|
|
||||||
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
|
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
|
||||||
|
@ -138,14 +129,11 @@ class TestIdEnv(unittest.TestCase):
|
||||||
mock_args = mock.Mock()
|
mock_args = mock.Mock()
|
||||||
mock_args.id = 'foo'
|
mock_args.id = 'foo'
|
||||||
mock_args.env = ['foo.yaml']
|
mock_args.env = ['foo.yaml']
|
||||||
env = test_env + 'parameter_defaults:'
|
mock_bed.return_value = yaml.safe_load(test_env)
|
||||||
mock_bed.return_value = yaml.safe_load(env)
|
|
||||||
path = deploy._generate_id_env(mock_args)
|
path = deploy._generate_id_env(mock_args)
|
||||||
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
|
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
|
||||||
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
|
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
|
||||||
for k, v in test_env_output.items():
|
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])
|
self.assertEqual(v, dumped_dict['parameter_defaults'][k])
|
||||||
|
|
||||||
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
|
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
|
||||||
|
@ -154,7 +142,7 @@ class TestIdEnv(unittest.TestCase):
|
||||||
mock_args = mock.Mock()
|
mock_args = mock.Mock()
|
||||||
mock_args.id = 'foo'
|
mock_args.id = 'foo'
|
||||||
mock_args.env = ['foo.yaml']
|
mock_args.env = ['foo.yaml']
|
||||||
env = (test_env + test_env_param_defaults +
|
env = (test_env + test_env_extra +
|
||||||
' undercloud_name: test-undercloud\n')
|
' undercloud_name: test-undercloud\n')
|
||||||
mock_bed.return_value = yaml.safe_load(env)
|
mock_bed.return_value = yaml.safe_load(env)
|
||||||
env_output = dict(test_env_output)
|
env_output = dict(test_env_output)
|
||||||
|
@ -164,8 +152,6 @@ class TestIdEnv(unittest.TestCase):
|
||||||
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
|
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
|
||||||
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
|
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
|
||||||
for k, v in env_output.items():
|
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])
|
self.assertEqual(v, dumped_dict['parameter_defaults'][k])
|
||||||
|
|
||||||
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
|
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
|
||||||
|
@ -174,7 +160,7 @@ class TestIdEnv(unittest.TestCase):
|
||||||
mock_args = mock.Mock()
|
mock_args = mock.Mock()
|
||||||
mock_args.id = 'foo'
|
mock_args.id = 'foo'
|
||||||
mock_args.env = ['foo.yaml']
|
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 = yaml.safe_load(env)
|
||||||
mock_bed.return_value['parameter_defaults']['role'] = 'compute'
|
mock_bed.return_value['parameter_defaults']['role'] = 'compute'
|
||||||
env_output = dict(test_env_output)
|
env_output = dict(test_env_output)
|
||||||
|
@ -184,8 +170,6 @@ class TestIdEnv(unittest.TestCase):
|
||||||
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
|
self.assertEqual(['foo.yaml', 'env-foo.yaml'], path)
|
||||||
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
|
dumped_dict = mock_safe_dump.call_args_list[0][0][0]
|
||||||
for k, v in env_output.items():
|
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])
|
self.assertEqual(v, dumped_dict['parameter_defaults'][k])
|
||||||
|
|
||||||
|
|
||||||
|
@ -195,25 +179,23 @@ role_base_data = {
|
||||||
'overcloud_storage_mgmt_net': 'storage_mgmt-foo',
|
'overcloud_storage_mgmt_net': 'storage_mgmt-foo',
|
||||||
'overcloud_internal_net': 'internal-foo',
|
'overcloud_internal_net': 'internal-foo',
|
||||||
'overcloud_storage_net': 'storage-foo',
|
'overcloud_storage_net': 'storage-foo',
|
||||||
|
'overcloud_tenant_net': 'tenant-foo',
|
||||||
|
'provision_net': 'provision-foo',
|
||||||
|
'public_net': 'public-foo',
|
||||||
|
'private_net': 'private',
|
||||||
'role': 'control',
|
'role': 'control',
|
||||||
'overcloud_tenant_net': 'tenant-foo'
|
|
||||||
},
|
|
||||||
'parameters': {
|
|
||||||
'os_user': 'admin',
|
'os_user': 'admin',
|
||||||
'key_name': 'default',
|
'key_name': 'default',
|
||||||
'undercloud_name': 'undercloud-foo',
|
'undercloud_name': 'undercloud-foo',
|
||||||
'bmc_image': 'bmc-base',
|
'bmc_image': 'bmc-base',
|
||||||
'baremetal_flavor': 'baremetal',
|
'baremetal_flavor': 'baremetal',
|
||||||
'os_auth_url': 'http://1.1.1.1:5000/v2.0',
|
'os_auth_url': 'http://1.1.1.1:5000/v2.0',
|
||||||
'provision_net': 'provision-foo',
|
|
||||||
'os_password': 'password',
|
'os_password': 'password',
|
||||||
'os_tenant': 'admin',
|
'os_tenant': 'admin',
|
||||||
'bmc_prefix': 'bmc-foo',
|
'bmc_prefix': 'bmc-foo',
|
||||||
'public_net': 'public-foo',
|
|
||||||
'undercloud_image': 'centos7-base',
|
'undercloud_image': 'centos7-base',
|
||||||
'baremetal_image': 'ipxe-boot',
|
'baremetal_image': 'ipxe-boot',
|
||||||
'external_net': 'external',
|
'external_net': 'external',
|
||||||
'private_net': 'private',
|
|
||||||
'baremetal_prefix': 'baremetal-foo-control',
|
'baremetal_prefix': 'baremetal-foo-control',
|
||||||
'undercloud_flavor': 'undercloud-16',
|
'undercloud_flavor': 'undercloud-16',
|
||||||
'node_count': 3,
|
'node_count': 3,
|
||||||
|
@ -223,16 +205,15 @@ role_base_data = {
|
||||||
'OS::OVB::BaremetalNetworks': 'templates/baremetal-networks-all.yaml',
|
'OS::OVB::BaremetalNetworks': 'templates/baremetal-networks-all.yaml',
|
||||||
'OS::OVB::BaremetalPorts':
|
'OS::OVB::BaremetalPorts':
|
||||||
'templates/baremetal-ports-public-bond.yaml',
|
'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 = {
|
role_specific_data = {
|
||||||
'parameter_defaults': {
|
'parameter_defaults': {
|
||||||
'role': 'compute',
|
'role': 'compute',
|
||||||
},
|
|
||||||
'parameters': {
|
|
||||||
'key_name': 'default',
|
'key_name': 'default',
|
||||||
'baremetal_flavor': 'baremetal',
|
'baremetal_flavor': 'baremetal',
|
||||||
|
'baremetal_image': 'centos',
|
||||||
'bmc_image': 'bmc-base',
|
'bmc_image': 'bmc-base',
|
||||||
'bmc_prefix': 'bmc',
|
'bmc_prefix': 'bmc',
|
||||||
'node_count': 2,
|
'node_count': 2,
|
||||||
|
@ -247,23 +228,21 @@ role_original_data = {
|
||||||
'parameter_defaults': {
|
'parameter_defaults': {
|
||||||
'role': 'control',
|
'role': 'control',
|
||||||
'baremetal_prefix': 'baremetal',
|
'baremetal_prefix': 'baremetal',
|
||||||
},
|
'public_net': 'public',
|
||||||
'parameters': {
|
'private_net': 'private',
|
||||||
|
'provision_net': 'provision',
|
||||||
'os_user': 'admin',
|
'os_user': 'admin',
|
||||||
'key_name': 'default',
|
'key_name': 'default',
|
||||||
'undercloud_name': 'undercloud',
|
'undercloud_name': 'undercloud',
|
||||||
'baremetal_flavor': 'baremetal',
|
'baremetal_flavor': 'baremetal',
|
||||||
'os_auth_url': 'http://1.1.1.1:5000/v2.0',
|
'os_auth_url': 'http://1.1.1.1:5000/v2.0',
|
||||||
'provision_net': 'provision',
|
|
||||||
'bmc_image': 'bmc-base',
|
'bmc_image': 'bmc-base',
|
||||||
'os_tenant': 'admin',
|
'os_tenant': 'admin',
|
||||||
'bmc_prefix': 'bmc',
|
'bmc_prefix': 'bmc',
|
||||||
'public_net': 'public',
|
|
||||||
'undercloud_image': 'centos7-base',
|
'undercloud_image': 'centos7-base',
|
||||||
'baremetal_image': 'ipxe-boot',
|
'baremetal_image': 'ipxe-boot',
|
||||||
'external_net': 'external',
|
'external_net': 'external',
|
||||||
'os_password': 'password',
|
'os_password': 'password',
|
||||||
'private_net': 'private',
|
|
||||||
'undercloud_flavor': 'undercloud-16',
|
'undercloud_flavor': 'undercloud-16',
|
||||||
'node_count': 3,
|
'node_count': 3,
|
||||||
'bmc_flavor': 'bmc'
|
'bmc_flavor': 'bmc'
|
||||||
|
@ -272,7 +251,7 @@ role_original_data = {
|
||||||
'OS::OVB::BaremetalNetworks': 'templates/baremetal-networks-all.yaml',
|
'OS::OVB::BaremetalNetworks': 'templates/baremetal-networks-all.yaml',
|
||||||
'OS::OVB::BaremetalPorts':
|
'OS::OVB::BaremetalPorts':
|
||||||
'templates/baremetal-ports-public-bond.yaml',
|
'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
|
# end _process_role test data
|
||||||
|
@ -288,8 +267,8 @@ class TestDeploy(testtools.TestCase):
|
||||||
template_files, template
|
template_files, template
|
||||||
)
|
)
|
||||||
env_files = {'templates/resource_registry.yaml': {'bar': 'baz'},
|
env_files = {'templates/resource_registry.yaml': {'bar': 'baz'},
|
||||||
'env.yaml': {'parameters': {}}}
|
'env.yaml': {'parameter_defaults': {}}}
|
||||||
env = {'parameters': {}}
|
env = {'parameter_defaults': {}}
|
||||||
mock_tu.process_multiple_environments_and_files.return_value = (
|
mock_tu.process_multiple_environments_and_files.return_value = (
|
||||||
env_files, env
|
env_files, env
|
||||||
)
|
)
|
||||||
|
@ -393,13 +372,23 @@ class TestDeploy(testtools.TestCase):
|
||||||
output = mock_write.call_args[0][0]
|
output = mock_write.call_args[0][0]
|
||||||
# These values are computed in _process_role
|
# These values are computed in _process_role
|
||||||
self.assertEqual('baremetal-foo-compute',
|
self.assertEqual('baremetal-foo-compute',
|
||||||
output['parameters']['baremetal_prefix'])
|
output['parameter_defaults']['baremetal_prefix'])
|
||||||
self.assertEqual('bmc-foo-compute',
|
self.assertEqual('bmc-foo-compute',
|
||||||
output['parameters']['bmc_prefix'])
|
output['parameter_defaults']['bmc_prefix'])
|
||||||
# These should be inherited
|
# These should be inherited
|
||||||
self.assertEqual('ipxe-boot', output['parameters']['baremetal_image'])
|
self.assertEqual('tenant-' + args.id,
|
||||||
self.assertEqual('tenant-foo',
|
|
||||||
output['parameter_defaults']['overcloud_tenant_net'])
|
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
|
# This should not be present in a role env, even if set in the file
|
||||||
self.assertNotIn('OS::OVB::BaremetalNetworks',
|
self.assertNotIn('OS::OVB::BaremetalNetworks',
|
||||||
output['resource_registry'])
|
output['resource_registry'])
|
||||||
|
@ -408,42 +397,9 @@ class TestDeploy(testtools.TestCase):
|
||||||
'templates/baremetal-ports-all.yaml',
|
'templates/baremetal-ports-all.yaml',
|
||||||
output['resource_registry']['OS::OVB::BaremetalPorts'])
|
output['resource_registry']['OS::OVB::BaremetalPorts'])
|
||||||
# This should be inherited from the base env
|
# 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'])
|
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')
|
@mock.patch('openstack_virtual_baremetal.deploy._load_role_data')
|
||||||
def test_process_role_invalid_name(self, mock_load):
|
def test_process_role_invalid_name(self, mock_load):
|
||||||
bad_role_specific_data = copy.deepcopy(role_specific_data)
|
bad_role_specific_data = copy.deepcopy(role_specific_data)
|
||||||
|
@ -476,10 +432,10 @@ class TestDeploy(testtools.TestCase):
|
||||||
deploy._deploy_roles('foo', args, 'foo.yaml')
|
deploy._deploy_roles('foo', args, 'foo.yaml')
|
||||||
mock_process.assert_not_called()
|
mock_process.assert_not_called()
|
||||||
|
|
||||||
def _test_validate_env_ends_with_profile(self, mock_id, mock_bed,
|
def _test_validate_env_ends_with_profile(self, mock_id, mock_bed):
|
||||||
section='parameters'):
|
|
||||||
test_env = dict(role_original_data)
|
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
|
mock_bed.return_value = test_env
|
||||||
args = mock.Mock()
|
args = mock.Mock()
|
||||||
args.id = mock_id
|
args.id = mock_id
|
||||||
|
@ -493,11 +449,6 @@ class TestDeploy(testtools.TestCase):
|
||||||
def test_validate_env_fails(self, mock_bed):
|
def test_validate_env_fails(self, mock_bed):
|
||||||
self._test_validate_env_ends_with_profile(None, 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')
|
@mock.patch('openstack_virtual_baremetal.deploy._build_env_data')
|
||||||
def test_validate_env_with_id(self, mock_bed):
|
def test_validate_env_with_id(self, mock_bed):
|
||||||
self._test_validate_env_ends_with_profile('foo', mock_bed)
|
self._test_validate_env_ends_with_profile('foo', mock_bed)
|
||||||
|
|
|
@ -23,105 +23,6 @@ import testtools
|
||||||
from openstack_virtual_baremetal import openstackbmc
|
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.'
|
@mock.patch('openstack_virtual_baremetal.openstackbmc.OpenStackBmc.'
|
||||||
'log')
|
'log')
|
||||||
@mock.patch('pyghmi.ipmi.bmc.Bmc.__init__')
|
@mock.patch('pyghmi.ipmi.bmc.Bmc.__init__')
|
||||||
|
@ -129,43 +30,6 @@ class TestOpenStackBmcInitDeprecated(unittest.TestCase):
|
||||||
'_find_instance')
|
'_find_instance')
|
||||||
@mock.patch('os_client_config.make_client')
|
@mock.patch('os_client_config.make_client')
|
||||||
class TestOpenStackBmcInit(testtools.TestCase):
|
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,
|
def test_init_os_cloud(self, mock_make_client, mock_find_instance,
|
||||||
mock_bmc_init, mock_log):
|
mock_bmc_init, mock_log):
|
||||||
mock_client = mock.Mock()
|
mock_client = mock.Mock()
|
||||||
|
@ -178,13 +42,6 @@ class TestOpenStackBmcInit(testtools.TestCase):
|
||||||
port=623,
|
port=623,
|
||||||
address='::ffff:127.0.0.1',
|
address='::ffff:127.0.0.1',
|
||||||
instance='foo',
|
instance='foo',
|
||||||
user='',
|
|
||||||
password='',
|
|
||||||
tenant='',
|
|
||||||
auth_url='',
|
|
||||||
project='',
|
|
||||||
user_domain='',
|
|
||||||
project_domain='',
|
|
||||||
cache_status=False,
|
cache_status=False,
|
||||||
os_cloud='bar'
|
os_cloud='bar'
|
||||||
)
|
)
|
||||||
|
@ -210,13 +67,6 @@ class TestOpenStackBmcInit(testtools.TestCase):
|
||||||
port=623,
|
port=623,
|
||||||
address='::ffff:127.0.0.1',
|
address='::ffff:127.0.0.1',
|
||||||
instance='foo',
|
instance='foo',
|
||||||
user='',
|
|
||||||
password='',
|
|
||||||
tenant='',
|
|
||||||
auth_url='',
|
|
||||||
project='',
|
|
||||||
user_domain='',
|
|
||||||
project_domain='',
|
|
||||||
cache_status=False,
|
cache_status=False,
|
||||||
os_cloud='foo'
|
os_cloud='foo'
|
||||||
)
|
)
|
||||||
|
@ -246,15 +96,8 @@ class TestOpenStackBmc(unittest.TestCase):
|
||||||
port=623,
|
port=623,
|
||||||
address='::ffff:127.0.0.1',
|
address='::ffff:127.0.0.1',
|
||||||
instance='foo',
|
instance='foo',
|
||||||
user='admin',
|
|
||||||
password='password',
|
|
||||||
tenant='admin',
|
|
||||||
auth_url='http://keystone:5000',
|
|
||||||
project='',
|
|
||||||
user_domain='',
|
|
||||||
project_domain='',
|
|
||||||
cache_status=False,
|
cache_status=False,
|
||||||
os_cloud=None
|
os_cloud='bar'
|
||||||
)
|
)
|
||||||
self.bmc.novaclient = self.mock_client
|
self.bmc.novaclient = self.mock_client
|
||||||
self.bmc.instance = 'abc-123'
|
self.bmc.instance = 'abc-123'
|
||||||
|
@ -462,13 +305,6 @@ class TestMain(unittest.TestCase):
|
||||||
port=111,
|
port=111,
|
||||||
address='::ffff:1.2.3.4',
|
address='::ffff:1.2.3.4',
|
||||||
instance='foobar',
|
instance='foobar',
|
||||||
user='',
|
|
||||||
password='',
|
|
||||||
tenant='',
|
|
||||||
auth_url='',
|
|
||||||
project='',
|
|
||||||
user_domain='',
|
|
||||||
project_domain='',
|
|
||||||
cache_status=False,
|
cache_status=False,
|
||||||
os_cloud='foo'
|
os_cloud='foo'
|
||||||
)
|
)
|
||||||
|
@ -479,21 +315,14 @@ class TestMain(unittest.TestCase):
|
||||||
mock_instance = mock.Mock()
|
mock_instance = mock.Mock()
|
||||||
mock_bmc.return_value = mock_instance
|
mock_bmc.return_value = mock_instance
|
||||||
mock_argv = ['openstackbmc', '--port', '111',
|
mock_argv = ['openstackbmc', '--port', '111',
|
||||||
'--instance', 'foobar']
|
'--instance', 'foobar', '--os-cloud', 'bar']
|
||||||
with mock.patch.object(sys, 'argv', mock_argv):
|
with mock.patch.object(sys, 'argv', mock_argv):
|
||||||
openstackbmc.main()
|
openstackbmc.main()
|
||||||
mock_bmc.assert_called_once_with({'admin': 'password'},
|
mock_bmc.assert_called_once_with({'admin': 'password'},
|
||||||
port=111,
|
port=111,
|
||||||
address='::',
|
address='::',
|
||||||
instance='foobar',
|
instance='foobar',
|
||||||
user='',
|
|
||||||
password='',
|
|
||||||
tenant='',
|
|
||||||
auth_url='',
|
|
||||||
project='',
|
|
||||||
user_domain='',
|
|
||||||
project_domain='',
|
|
||||||
cache_status=False,
|
cache_status=False,
|
||||||
os_cloud=None
|
os_cloud='bar'
|
||||||
)
|
)
|
||||||
mock_instance.listen.assert_called_once_with()
|
mock_instance.listen.assert_called_once_with()
|
||||||
|
|
|
@ -8,8 +8,8 @@ resource_registry:
|
||||||
|
|
||||||
parameter_defaults:
|
parameter_defaults:
|
||||||
ControlPlaneSubnetCidr: '24'
|
ControlPlaneSubnetCidr: '24'
|
||||||
ControlPlaneDefaultRoute: 192.0.2.1
|
ControlPlaneDefaultRoute: 192.168.24.1
|
||||||
EC2MetadataIp: 192.0.2.1
|
EC2MetadataIp: 192.168.24.1
|
||||||
ExternalNetCidr: 10.0.0.0/24
|
ExternalNetCidr: 10.0.0.0/24
|
||||||
ExternalAllocationPools: [{"start": "10.0.0.10", "end": "10.0.0.50"}]
|
ExternalAllocationPools: [{"start": "10.0.0.10", "end": "10.0.0.50"}]
|
||||||
ExternalInterfaceDefaultRoute: 10.0.0.1
|
ExternalInterfaceDefaultRoute: 10.0.0.1
|
||||||
|
|
|
@ -7,14 +7,14 @@ p3
|
||||||
(dp4
|
(dp4
|
||||||
S'route'
|
S'route'
|
||||||
p5
|
p5
|
||||||
V192.0.2.1
|
V192.168.24.1
|
||||||
p6
|
p6
|
||||||
sS'mask'
|
sS'mask'
|
||||||
p7
|
p7
|
||||||
I24
|
I24
|
||||||
sS'ec2'
|
sS'ec2'
|
||||||
p8
|
p8
|
||||||
V192.0.2.1
|
V192.168.24.1
|
||||||
p9
|
p9
|
||||||
ssS'major'
|
ssS'major'
|
||||||
p10
|
p10
|
||||||
|
|
|
@ -8,8 +8,8 @@ resource_registry:
|
||||||
|
|
||||||
parameter_defaults:
|
parameter_defaults:
|
||||||
ControlPlaneSubnetCidr: '24'
|
ControlPlaneSubnetCidr: '24'
|
||||||
ControlPlaneDefaultRoute: 192.0.2.1
|
ControlPlaneDefaultRoute: 192.168.24.1
|
||||||
EC2MetadataIp: 192.0.2.1
|
EC2MetadataIp: 192.168.24.1
|
||||||
ExternalNetCidr: 2001:db8:fd00:1000::/64
|
ExternalNetCidr: 2001:db8:fd00:1000::/64
|
||||||
ExternalAllocationPools: [{"start": "2001:db8:fd00:1000::10", "end": "2001:db8:fd00:1000:ffff:ffff:ffff:fffe"}]
|
ExternalAllocationPools: [{"start": "2001:db8:fd00:1000::10", "end": "2001:db8:fd00:1000:ffff:ffff:ffff:fffe"}]
|
||||||
ExternalInterfaceDefaultRoute: 2001:db8:fd00:1000::1
|
ExternalInterfaceDefaultRoute: 2001:db8:fd00:1000::1
|
||||||
|
|
|
@ -7,14 +7,14 @@ p3
|
||||||
(dp4
|
(dp4
|
||||||
S'route'
|
S'route'
|
||||||
p5
|
p5
|
||||||
V192.0.2.1
|
V192.168.24.1
|
||||||
p6
|
p6
|
||||||
sS'mask'
|
sS'mask'
|
||||||
p7
|
p7
|
||||||
I24
|
I24
|
||||||
sS'ec2'
|
sS'ec2'
|
||||||
p8
|
p8
|
||||||
V192.0.2.1
|
V192.168.24.1
|
||||||
p9
|
p9
|
||||||
ssS'major'
|
ssS'major'
|
||||||
p10
|
p10
|
||||||
|
|
|
@ -8,8 +8,8 @@ resource_registry:
|
||||||
|
|
||||||
parameter_defaults:
|
parameter_defaults:
|
||||||
ControlPlaneSubnetCidr: '24'
|
ControlPlaneSubnetCidr: '24'
|
||||||
ControlPlaneDefaultRoute: 192.0.2.1
|
ControlPlaneDefaultRoute: 192.168.24.1
|
||||||
EC2MetadataIp: 192.0.2.1
|
EC2MetadataIp: 192.168.24.1
|
||||||
ExternalNetCidr: 10.0.0.0/24
|
ExternalNetCidr: 10.0.0.0/24
|
||||||
ExternalAllocationPools: [{"start": "10.0.0.10", "end": "10.0.0.50"}]
|
ExternalAllocationPools: [{"start": "10.0.0.10", "end": "10.0.0.50"}]
|
||||||
ExternalInterfaceDefaultRoute: 10.0.0.1
|
ExternalInterfaceDefaultRoute: 10.0.0.1
|
||||||
|
|
|
@ -7,14 +7,14 @@ p3
|
||||||
(dp4
|
(dp4
|
||||||
S'route'
|
S'route'
|
||||||
p5
|
p5
|
||||||
V192.0.2.1
|
V192.168.24.1
|
||||||
p6
|
p6
|
||||||
sS'mask'
|
sS'mask'
|
||||||
p7
|
p7
|
||||||
I24
|
I24
|
||||||
sS'ec2'
|
sS'ec2'
|
||||||
p8
|
p8
|
||||||
V192.0.2.1
|
V192.168.24.1
|
||||||
p9
|
p9
|
||||||
ssS'major'
|
ssS'major'
|
||||||
p10
|
p10
|
||||||
|
|
|
@ -14,15 +14,17 @@ environments:
|
||||||
- bmc_prefix
|
- bmc_prefix
|
||||||
- baremetal_prefix
|
- baremetal_prefix
|
||||||
- node_count
|
- node_count
|
||||||
- public_net
|
|
||||||
- public_net_shared
|
|
||||||
- provision_net
|
|
||||||
- provision_net_shared
|
|
||||||
- undercloud_name
|
- undercloud_name
|
||||||
- undercloud_image
|
- undercloud_image
|
||||||
- undercloud_flavor
|
- undercloud_flavor
|
||||||
- external_net
|
- external_net
|
||||||
- role
|
- role
|
||||||
|
templates/undercloud-networks.yaml:
|
||||||
|
parameters:
|
||||||
|
- public_net
|
||||||
|
- public_net_shared
|
||||||
|
- provision_net
|
||||||
|
- provision_net_shared
|
||||||
sample_values:
|
sample_values:
|
||||||
baremetal_image: ipxe-boot
|
baremetal_image: ipxe-boot
|
||||||
-
|
-
|
||||||
|
@ -61,7 +63,7 @@ environments:
|
||||||
baremetal_image: CentOS-7-x86_64-GenericCloud
|
baremetal_image: CentOS-7-x86_64-GenericCloud
|
||||||
node_count: 1
|
node_count: 1
|
||||||
resource_registry:
|
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
|
name: all-networks
|
||||||
title: Deploy with All Networks Enabled
|
title: Deploy with All Networks Enabled
|
||||||
|
@ -75,18 +77,6 @@ environments:
|
||||||
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
|
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
|
||||||
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-all.yaml
|
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-all.yaml
|
||||||
children:
|
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
|
name: all-networks-public-bond
|
||||||
title: Deploy with All Networks Enabled and Two Public Interfaces
|
title: Deploy with All Networks Enabled and Two Public Interfaces
|
||||||
|
@ -98,32 +88,6 @@ environments:
|
||||||
resource_registry:
|
resource_registry:
|
||||||
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
|
OS::OVB::BaremetalNetworks: ../templates/baremetal-networks-all.yaml
|
||||||
OS::OVB::BaremetalPorts: ../templates/baremetal-ports-public-bond.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
|
name: create-private-network
|
||||||
title: Create a Private Network
|
title: Create a Private Network
|
||||||
|
@ -220,3 +184,68 @@ environments:
|
||||||
- bmc_use_cache
|
- bmc_use_cache
|
||||||
sample_values:
|
sample_values:
|
||||||
bmc_use_cache: True
|
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
|
||||||
|
|
||||||
|
|
|
@ -117,3 +117,5 @@ outputs:
|
||||||
storage_net: {get_resource: storage_network}
|
storage_net: {get_resource: storage_network}
|
||||||
storage_mgmt_net: {get_resource: storage_mgmt_network}
|
storage_mgmt_net: {get_resource: storage_mgmt_network}
|
||||||
tenant_net: {get_resource: tenant_network}
|
tenant_net: {get_resource: tenant_network}
|
||||||
|
routers_addresses:
|
||||||
|
value: {}
|
||||||
|
|
|
@ -3,3 +3,5 @@ heat_template_version: 2014-10-16
|
||||||
outputs:
|
outputs:
|
||||||
networks:
|
networks:
|
||||||
value: {}
|
value: {}
|
||||||
|
routers_addresses:
|
||||||
|
value: {}
|
||||||
|
|
|
@ -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]}
|
|
@ -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}}
|
|
|
@ -1,17 +1,12 @@
|
||||||
heat_template_version: 2014-10-16
|
heat_template_version: 2015-10-15
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
|
|
||||||
baremetal_prefix:
|
baremetal_prefix:
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
|
|
||||||
public_net:
|
|
||||||
type: string
|
|
||||||
description: Name of external network
|
|
||||||
default: public
|
|
||||||
|
|
||||||
suffix:
|
suffix:
|
||||||
type: string
|
type: string
|
||||||
|
@ -46,7 +41,8 @@ resources:
|
||||||
- ''
|
- ''
|
||||||
- - {get_param: baremetal_prefix}
|
- - {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: provision_net}
|
network: {get_param: [networks, provision]}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
internal_port:
|
internal_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -58,6 +54,7 @@ resources:
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: overcloud_internal_net}
|
network: {get_param: overcloud_internal_net}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
storage_port:
|
storage_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -69,6 +66,7 @@ resources:
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: overcloud_storage_net}
|
network: {get_param: overcloud_storage_net}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
storage_mgmt_port:
|
storage_mgmt_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -80,6 +78,7 @@ resources:
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: overcloud_storage_mgmt_net}
|
network: {get_param: overcloud_storage_mgmt_net}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
tenant_port:
|
tenant_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -91,6 +90,7 @@ resources:
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: overcloud_tenant_net}
|
network: {get_param: overcloud_tenant_net}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
public_port:
|
public_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -101,7 +101,8 @@ resources:
|
||||||
- - public_
|
- - public_
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: public_net}
|
network: {get_param: [networks, public]}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
ports:
|
ports:
|
||||||
|
|
|
@ -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}}
|
|
|
@ -1,17 +1,12 @@
|
||||||
heat_template_version: 2014-10-16
|
heat_template_version: 2015-10-15
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
|
|
||||||
baremetal_prefix:
|
baremetal_prefix:
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
|
|
||||||
public_net:
|
|
||||||
type: string
|
|
||||||
description: Name of external network
|
|
||||||
default: public
|
|
||||||
|
|
||||||
suffix:
|
suffix:
|
||||||
type: string
|
type: string
|
||||||
|
@ -26,7 +21,8 @@ resources:
|
||||||
- ''
|
- ''
|
||||||
- - {get_param: baremetal_prefix}
|
- - {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: provision_net}
|
network: {get_param: [networks, provision]}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
ports:
|
ports:
|
||||||
|
|
|
@ -5,13 +5,8 @@ parameters:
|
||||||
baremetal_prefix:
|
baremetal_prefix:
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
|
|
||||||
public_net:
|
|
||||||
type: string
|
|
||||||
description: Name of external network
|
|
||||||
default: public
|
|
||||||
|
|
||||||
private_net:
|
private_net:
|
||||||
type: string
|
type: string
|
||||||
|
@ -62,7 +57,7 @@ resources:
|
||||||
- ''
|
- ''
|
||||||
- - {get_param: baremetal_prefix}
|
- - {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: provision_net}
|
network: {get_param: [networks, provision]}
|
||||||
port_security_enabled: False
|
port_security_enabled: False
|
||||||
|
|
||||||
public_port:
|
public_port:
|
||||||
|
@ -74,7 +69,7 @@ resources:
|
||||||
- - public_
|
- - public_
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: public_net}
|
network: {get_param: [networks, public]}
|
||||||
port_security_enabled: False
|
port_security_enabled: False
|
||||||
|
|
||||||
extra_node_fip:
|
extra_node_fip:
|
|
@ -5,13 +5,8 @@ parameters:
|
||||||
baremetal_prefix:
|
baremetal_prefix:
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
|
|
||||||
public_net:
|
|
||||||
type: string
|
|
||||||
description: Name of external network
|
|
||||||
default: public
|
|
||||||
|
|
||||||
private_net:
|
private_net:
|
||||||
type: string
|
type: string
|
||||||
|
@ -59,7 +54,7 @@ resources:
|
||||||
- ''
|
- ''
|
||||||
- - {get_param: baremetal_prefix}
|
- - {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: provision_net}
|
network: {get_param: [networks, provision]}
|
||||||
port_security_enabled: False
|
port_security_enabled: False
|
||||||
|
|
||||||
public_port:
|
public_port:
|
||||||
|
@ -71,7 +66,7 @@ resources:
|
||||||
- - public_
|
- - public_
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: public_net}
|
network: {get_param: [networks, public]}
|
||||||
port_security_enabled: False
|
port_security_enabled: False
|
||||||
|
|
||||||
outputs:
|
outputs:
|
|
@ -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}}
|
|
|
@ -1,17 +1,12 @@
|
||||||
heat_template_version: 2014-10-16
|
heat_template_version: 2015-10-15
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
|
|
||||||
baremetal_prefix:
|
baremetal_prefix:
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
|
|
||||||
public_net:
|
|
||||||
type: string
|
|
||||||
description: Name of external network
|
|
||||||
default: public
|
|
||||||
|
|
||||||
suffix:
|
suffix:
|
||||||
type: string
|
type: string
|
||||||
|
@ -46,7 +41,8 @@ resources:
|
||||||
- ''
|
- ''
|
||||||
- - {get_param: baremetal_prefix}
|
- - {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: provision_net}
|
network: {get_param: [networks, provision]}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
internal_port:
|
internal_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -58,6 +54,7 @@ resources:
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: overcloud_internal_net}
|
network: {get_param: overcloud_internal_net}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
storage_port:
|
storage_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -69,6 +66,7 @@ resources:
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: overcloud_storage_net}
|
network: {get_param: overcloud_storage_net}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
storage_mgmt_port:
|
storage_mgmt_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -80,6 +78,7 @@ resources:
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: overcloud_storage_mgmt_net}
|
network: {get_param: overcloud_storage_mgmt_net}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
tenant_port:
|
tenant_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -91,6 +90,7 @@ resources:
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: overcloud_tenant_net}
|
network: {get_param: overcloud_tenant_net}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
public_port:
|
public_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -101,7 +101,8 @@ resources:
|
||||||
- - public_
|
- - public_
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: public_net}
|
network: {get_param: [networks, public]}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
public_bond_port:
|
public_bond_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -112,7 +113,8 @@ resources:
|
||||||
- - public_
|
- - public_
|
||||||
- {get_param: baremetal_prefix}
|
- {get_param: baremetal_prefix}
|
||||||
- {get_param: suffix}
|
- {get_param: suffix}
|
||||||
network: {get_param: public_net}
|
network: {get_param: [networks, public]}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
ports:
|
ports:
|
||||||
|
|
|
@ -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]}
|
|
|
@ -1,4 +1,4 @@
|
||||||
heat_template_version: 2014-10-16
|
heat_template_version: 2015-10-15
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ resources:
|
||||||
- - 'utility'
|
- - 'utility'
|
||||||
- {get_param: bmc_prefix}
|
- {get_param: bmc_prefix}
|
||||||
network: {get_param: private_net}
|
network: {get_param: private_net}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
port:
|
port:
|
||||||
|
|
|
@ -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}
|
|
@ -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
|
|
|
@ -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
|
# Template that wraps virtual-baremetal.yaml and does some additional environment
|
||||||
# setup automatically:
|
# setup automatically:
|
||||||
|
@ -49,36 +49,6 @@ parameters:
|
||||||
default: external
|
default: external
|
||||||
description: An external network from which floating ips can be provisioned
|
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:
|
bmc_prefix:
|
||||||
type: string
|
type: string
|
||||||
default: bmc
|
default: bmc
|
||||||
|
@ -171,37 +141,17 @@ parameters:
|
||||||
ignored by Heat, but used by build-nodes-json.
|
ignored by Heat, but used by build-nodes-json.
|
||||||
default: ''
|
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:
|
resources:
|
||||||
provision_network:
|
undercloud_networks:
|
||||||
type: OS::Neutron::Net
|
type: OS::OVB::UndercloudNetworks
|
||||||
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
|
|
||||||
|
|
||||||
private_network:
|
private_network:
|
||||||
type: OS::OVB::PrivateNetwork
|
type: OS::OVB::PrivateNetwork
|
||||||
|
@ -211,7 +161,7 @@ resources:
|
||||||
|
|
||||||
undercloud_env:
|
undercloud_env:
|
||||||
type: OS::OVB::UndercloudEnvironment
|
type: OS::OVB::UndercloudEnvironment
|
||||||
depends_on: [provision_subnet, public_subnet]
|
depends_on: [undercloud_networks, private_network]
|
||||||
properties:
|
properties:
|
||||||
undercloud_flavor: {get_param: undercloud_flavor}
|
undercloud_flavor: {get_param: undercloud_flavor}
|
||||||
undercloud_image: {get_param: undercloud_image}
|
undercloud_image: {get_param: undercloud_image}
|
||||||
|
@ -220,21 +170,19 @@ resources:
|
||||||
undercloud_user_data_format: {get_param: undercloud_user_data_format}
|
undercloud_user_data_format: {get_param: undercloud_user_data_format}
|
||||||
undercloud_user_data: {get_param: undercloud_user_data}
|
undercloud_user_data: {get_param: undercloud_user_data}
|
||||||
private_net: {get_attr: [private_network, private_net]}
|
private_net: {get_attr: [private_network, private_net]}
|
||||||
provision_net: {get_resource: provision_network}
|
networks: {get_attr: [undercloud_networks, networks]}
|
||||||
public_net: {get_resource: public_network}
|
|
||||||
external_net: {get_param: external_net}
|
external_net: {get_param: external_net}
|
||||||
|
|
||||||
baremetal_env:
|
baremetal_env:
|
||||||
type: OS::OVB::BaremetalEnvironment
|
type: OS::OVB::BaremetalEnvironment
|
||||||
depends_on: [provision_subnet, public_subnet]
|
depends_on: undercloud_networks
|
||||||
properties:
|
properties:
|
||||||
baremetal_flavor: {get_param: baremetal_flavor}
|
baremetal_flavor: {get_param: baremetal_flavor}
|
||||||
baremetal_image: {get_param: baremetal_image}
|
baremetal_image: {get_param: baremetal_image}
|
||||||
key_name: {get_param: key_name}
|
key_name: {get_param: key_name}
|
||||||
node_count: {get_param: node_count}
|
node_count: {get_param: node_count}
|
||||||
public_net: {get_resource: public_network}
|
|
||||||
private_net: {get_attr: [private_network, private_net]}
|
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_flavor: {get_param: bmc_flavor}
|
||||||
bmc_prefix: {get_param: bmc_prefix}
|
bmc_prefix: {get_param: bmc_prefix}
|
||||||
bmc_image: {get_param: bmc_image}
|
bmc_image: {get_param: bmc_image}
|
||||||
|
@ -247,6 +195,7 @@ resources:
|
||||||
os_user_domain: {get_param: os_user_domain}
|
os_user_domain: {get_param: os_user_domain}
|
||||||
os_project_domain: {get_param: os_project_domain}
|
os_project_domain: {get_param: os_project_domain}
|
||||||
cloud_data: {get_param: cloud_data}
|
cloud_data: {get_param: cloud_data}
|
||||||
|
dhcp_ips: {get_param: dhcp_ips}
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
undercloud_host_floating_ip:
|
undercloud_host_floating_ip:
|
||||||
|
@ -257,3 +206,10 @@ outputs:
|
||||||
description: "ip of the undercloud instance on the private network"
|
description: "ip of the undercloud instance on the private network"
|
||||||
value:
|
value:
|
||||||
get_attr: [undercloud_env, undercloud_host_private_ip]
|
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]
|
||||||
|
|
|
@ -8,3 +8,5 @@ resource_registry:
|
||||||
OS::OVB::BaremetalPorts: baremetal-ports-default.yaml
|
OS::OVB::BaremetalPorts: baremetal-ports-default.yaml
|
||||||
OS::OVB::BMCPort: bmc-port.yaml
|
OS::OVB::BMCPort: bmc-port.yaml
|
||||||
OS::OVB::UndercloudPorts: undercloud-ports.yaml
|
OS::OVB::UndercloudPorts: undercloud-ports.yaml
|
||||||
|
OS::OVB::UndercloudNetworks: undercloud-networks.yaml
|
||||||
|
OS::OVB::DHCPRelay: OS::Heat::None
|
||||||
|
|
|
@ -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
|
|
@ -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]}
|
|
@ -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]}
|
|
@ -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
|
|
@ -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}}
|
|
|
@ -1,4 +1,4 @@
|
||||||
heat_template_version: 2014-10-16
|
heat_template_version: 2015-10-15
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
|
|
||||||
|
@ -8,11 +8,8 @@ parameters:
|
||||||
private_net:
|
private_net:
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
|
|
||||||
public_net:
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
undercloud_sg:
|
undercloud_sg:
|
||||||
|
@ -53,7 +50,8 @@ resources:
|
||||||
- '_'
|
- '_'
|
||||||
- - {get_param: undercloud_name}
|
- - {get_param: undercloud_name}
|
||||||
- 'provision'
|
- 'provision'
|
||||||
network: {get_param: provision_net}
|
network: {get_param: [networks, provision]}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
public_undercloud_port:
|
public_undercloud_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
|
@ -63,7 +61,8 @@ resources:
|
||||||
- '_'
|
- '_'
|
||||||
- - {get_param: undercloud_name}
|
- - {get_param: undercloud_name}
|
||||||
- 'public'
|
- 'public'
|
||||||
network: {get_param: public_net}
|
network: {get_param: [networks, public]}
|
||||||
|
port_security_enabled: False
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
ports:
|
ports:
|
||||||
|
|
|
@ -19,10 +19,8 @@ parameters:
|
||||||
description: The size of the volume for the undercloud instance
|
description: The size of the volume for the undercloud instance
|
||||||
private_net:
|
private_net:
|
||||||
type: string
|
type: string
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
public_net:
|
|
||||||
type: string
|
|
||||||
external_net:
|
external_net:
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
|
@ -32,8 +30,7 @@ resources:
|
||||||
properties:
|
properties:
|
||||||
undercloud_name: {get_param: undercloud_name}
|
undercloud_name: {get_param: undercloud_name}
|
||||||
private_net: {get_param: private_net}
|
private_net: {get_param: private_net}
|
||||||
provision_net: {get_param: provision_net}
|
networks: {get_param: networks}
|
||||||
public_net: {get_param: public_net}
|
|
||||||
|
|
||||||
undercloud_volume:
|
undercloud_volume:
|
||||||
type: OS::Cinder::Volume
|
type: OS::Cinder::Volume
|
||||||
|
|
|
@ -15,10 +15,8 @@ parameters:
|
||||||
type: string
|
type: string
|
||||||
private_net:
|
private_net:
|
||||||
type: string
|
type: string
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
public_net:
|
|
||||||
type: string
|
|
||||||
external_net:
|
external_net:
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
|
@ -28,8 +26,7 @@ resources:
|
||||||
properties:
|
properties:
|
||||||
undercloud_name: {get_param: undercloud_name}
|
undercloud_name: {get_param: undercloud_name}
|
||||||
private_net: {get_param: private_net}
|
private_net: {get_param: private_net}
|
||||||
provision_net: {get_param: provision_net}
|
networks: {get_param: networks}
|
||||||
public_net: {get_param: public_net}
|
|
||||||
|
|
||||||
undercloud_server:
|
undercloud_server:
|
||||||
type: OS::Nova::Server
|
type: OS::Nova::Server
|
||||||
|
|
|
@ -14,11 +14,8 @@ parameters:
|
||||||
baremetal_prefix:
|
baremetal_prefix:
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
|
|
||||||
public_net:
|
|
||||||
type: string
|
|
||||||
|
|
||||||
suffix:
|
suffix:
|
||||||
type: string
|
type: string
|
||||||
|
@ -30,8 +27,7 @@ resources:
|
||||||
properties:
|
properties:
|
||||||
suffix: {get_param: suffix}
|
suffix: {get_param: suffix}
|
||||||
baremetal_prefix: {get_param: baremetal_prefix}
|
baremetal_prefix: {get_param: baremetal_prefix}
|
||||||
provision_net: {get_param: provision_net}
|
networks: {get_param: networks}
|
||||||
public_net: {get_param: public_net}
|
|
||||||
|
|
||||||
baremetal_server:
|
baremetal_server:
|
||||||
type: OS::Nova::Server
|
type: OS::Nova::Server
|
||||||
|
|
|
@ -45,22 +45,15 @@ parameters:
|
||||||
default: 1
|
default: 1
|
||||||
description: Number of baremetal nodes to deploy
|
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:
|
private_net:
|
||||||
type: string
|
type: string
|
||||||
default: private
|
default: private
|
||||||
description: Name of a private network which can have floating ips associated with it
|
description: Name of a private network which can have floating ips associated with it
|
||||||
|
|
||||||
provision_net:
|
networks:
|
||||||
type: string
|
type: json
|
||||||
default: provision
|
default: {"private": "private", "provision": "provision"}
|
||||||
description: Name of a network that will be used for provisioning traffic
|
description: A map of networks to their names.
|
||||||
|
|
||||||
bmc_prefix:
|
bmc_prefix:
|
||||||
type: string
|
type: string
|
||||||
|
@ -121,6 +114,14 @@ parameters:
|
||||||
default: '{}'
|
default: '{}'
|
||||||
hidden: true
|
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
|
# Ignored parameters for compatibility with QuintupleO env files
|
||||||
undercloud_image:
|
undercloud_image:
|
||||||
type: string
|
type: string
|
||||||
|
@ -162,6 +163,15 @@ resources:
|
||||||
- _%index%
|
- _%index%
|
||||||
network: {get_param: private_net}
|
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:
|
bmc_server:
|
||||||
type: OS::Nova::Server
|
type: OS::Nova::Server
|
||||||
depends_on: [openstack_baremetal_servers, bmc_other_ports, bmc_port]
|
depends_on: [openstack_baremetal_servers, bmc_other_ports, bmc_port]
|
||||||
|
@ -190,6 +200,7 @@ resources:
|
||||||
$private_net: {get_param: private_net}
|
$private_net: {get_param: private_net}
|
||||||
$openstackbmc_script: {get_file: ../bin/openstackbmc}
|
$openstackbmc_script: {get_file: ../bin/openstackbmc}
|
||||||
$cloud_data: {get_param: cloud_data}
|
$cloud_data: {get_param: cloud_data}
|
||||||
|
$signal_command: {get_attr: [bmc_handle, curl_cli]}
|
||||||
template: {get_file: ../bin/install_openstackbmc.sh}
|
template: {get_file: ../bin/install_openstackbmc.sh}
|
||||||
|
|
||||||
baremetal_networks:
|
baremetal_networks:
|
||||||
|
@ -206,7 +217,16 @@ resources:
|
||||||
baremetal_flavor: {get_param: baremetal_flavor}
|
baremetal_flavor: {get_param: baremetal_flavor}
|
||||||
baremetal_image: {get_param: baremetal_image}
|
baremetal_image: {get_param: baremetal_image}
|
||||||
key_name: {get_param: key_name}
|
key_name: {get_param: key_name}
|
||||||
provision_net: {get_param: provision_net}
|
networks: {get_param: networks}
|
||||||
public_net: {get_param: public_net}
|
|
||||||
suffix: _%index%
|
suffix: _%index%
|
||||||
baremetal_prefix: {get_param: baremetal_prefix}
|
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]}
|
||||||
|
|
|
@ -7,5 +7,5 @@ testtools>=0.9.36,!=1.2.0
|
||||||
mock>=1.0
|
mock>=1.0
|
||||||
|
|
||||||
# docs
|
# docs
|
||||||
sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3
|
sphinx>=1.6
|
||||||
sphinx_rtd_theme==0.1.7
|
sphinx_rtd_theme
|
||||||
|
|
Loading…
Reference in New Issue