aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker/firstboot/start_docker_agents.sh5
-rw-r--r--environments/net-bond-with-vlans-no-external.yaml26
-rw-r--r--environments/net-single-nic-with-vlans-no-external.yaml25
-rw-r--r--environments/network-isolation-no-tunneling.yaml37
-rwxr-xr-xextraconfig/tasks/yum_update.sh102
-rw-r--r--net-config-linux-bridge.yaml73
-rw-r--r--network/config/bond-with-vlans/README.md12
-rw-r--r--network/config/bond-with-vlans/controller-no-external.yaml114
-rw-r--r--network/config/single-nic-vlans/README.md12
-rw-r--r--network/config/single-nic-vlans/controller-no-external.yaml99
-rw-r--r--network/endpoints/endpoint.yaml60
-rw-r--r--network/endpoints/endpoint_map.yaml450
-rw-r--r--os-apply-config/controller.yaml1
-rw-r--r--overcloud-resource-registry-puppet.yaml4
-rw-r--r--overcloud-resource-registry.yaml4
-rw-r--r--overcloud-without-mergepy.yaml52
-rw-r--r--puppet/cinder-storage.yaml22
-rw-r--r--puppet/compute.yaml47
-rw-r--r--puppet/controller.yaml86
-rw-r--r--puppet/manifests/overcloud_controller.pp2
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp18
21 files changed, 1103 insertions, 148 deletions
diff --git a/docker/firstboot/start_docker_agents.sh b/docker/firstboot/start_docker_agents.sh
index caf511bd..88759a5d 100644
--- a/docker/firstboot/start_docker_agents.sh
+++ b/docker/firstboot/start_docker_agents.sh
@@ -52,9 +52,10 @@ echo nameserver 8.8.8.8 > /etc/resolv.conf
HOSTNAME=$(hostname)
echo "127.0.0.1 $HOSTNAME.localdomain $HOSTNAME" >> /etc/hosts
-# Another hack.. we need latest docker..
+# Another hack.. we need a different docker version
+# (should obviously be dropped once the atomic image contains docker 1.8.2)
/usr/bin/systemctl stop docker.service
-/bin/curl -o /tmp/docker https://get.docker.com/builds/Linux/x86_64/docker-latest
+/bin/curl -o /tmp/docker https://get.docker.com/builds/Linux/x86_64/docker-1.8.2
/bin/mount -o remount,rw /usr
/bin/rm /bin/docker
/bin/cp /tmp/docker /bin/docker
diff --git a/environments/net-bond-with-vlans-no-external.yaml b/environments/net-bond-with-vlans-no-external.yaml
new file mode 100644
index 00000000..0da119d9
--- /dev/null
+++ b/environments/net-bond-with-vlans-no-external.yaml
@@ -0,0 +1,26 @@
+# This template configures each role to use a pair of bonded nics (nic2 and
+# nic3) and configures an IP address on each relevant isolated network
+# for each role.
+
+# This template assumes use of network-isolation.yaml and should be specified
+# last on the CLI as a Heat environment so as to override specific
+# registry settings in the network-isolation registry.
+#
+# FIXME: if/when we add functionality to heatclient to include heat
+# environment files we should think about using it here to automatically
+# include network-isolation.yaml.
+resource_registry:
+
+ # Set external ports to noop
+ OS::TripleO::Network::External: ../network/noop.yaml
+ OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/noop.yaml
+
+ OS::TripleO::BlockStorage::Net::SoftwareConfig: ../network/config/bond-with-vlans/cinder-storage.yaml
+ OS::TripleO::Compute::Net::SoftwareConfig: ../network/config/bond-with-vlans/compute.yaml
+ OS::TripleO::Controller::Net::SoftwareConfig: ../network/config/bond-with-vlans/controller-no-external.yaml
+ OS::TripleO::ObjectStorage::Net::SoftwareConfig: ../network/config/bond-with-vlans/swift-storage.yaml
+ OS::TripleO::CephStorage::Net::SoftwareConfig: ../network/config/bond-with-vlans/ceph-storage.yaml
+
+# NOTE: with no external interface we should be able to use the
+# default Neutron l3_agent.ini setting for the external bridge (br-ex)
+# i.e. No need to set: NeutronExternalNetworkBridge: "''"
diff --git a/environments/net-single-nic-with-vlans-no-external.yaml b/environments/net-single-nic-with-vlans-no-external.yaml
new file mode 100644
index 00000000..a173df4e
--- /dev/null
+++ b/environments/net-single-nic-with-vlans-no-external.yaml
@@ -0,0 +1,25 @@
+# This template configures each role to use Vlans on a single nic for
+# each isolated network.
+# This template assumes use of network-isolation.yaml and should be specified
+# last on the CLI as a Heat environment so as to override specific
+# registry settings in the network-isolation registry.
+#
+# FIXME: if/when we add functionality to heatclient to include heat
+# environment files we should think about using it here to automatically
+# include network-isolation.yaml.
+resource_registry:
+
+ # Set external ports to noop
+ OS::TripleO::Network::External: ../network/noop.yaml
+ OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/noop.yaml
+
+ # Configure other ports as normal
+ OS::TripleO::BlockStorage::Net::SoftwareConfig: ../network/config/single-nic-vlans/cinder-storage.yaml
+ OS::TripleO::Compute::Net::SoftwareConfig: ../network/config/single-nic-vlans/compute.yaml
+ OS::TripleO::Controller::Net::SoftwareConfig: ../network/config/single-nic-vlans/controller-no-external.yaml
+ OS::TripleO::ObjectStorage::Net::SoftwareConfig: ../network/config/single-nic-vlans/swift-storage.yaml
+ OS::TripleO::CephStorage::Net::SoftwareConfig: ../network/config/single-nic-vlans/ceph-storage.yaml
+
+# NOTE: with no external interface we should be able to use the
+# default Neutron l3_agent.ini setting for the external bridge (br-ex)
+# i.e. No need to set: NeutronExternalNetworkBridge: "''"
diff --git a/environments/network-isolation-no-tunneling.yaml b/environments/network-isolation-no-tunneling.yaml
new file mode 100644
index 00000000..5d2a915b
--- /dev/null
+++ b/environments/network-isolation-no-tunneling.yaml
@@ -0,0 +1,37 @@
+# Enable the creation of Neutron networks for isolated Overcloud
+# traffic and configure each role to assign ports (related
+# to that role) on these networks. This version of the environment
+# has no dedicated VLAN for tunneling, for deployments that use
+# VLAN mode, flat provider networks, etc.
+resource_registry:
+ OS::TripleO::Network::External: ../network/external.yaml
+ OS::TripleO::Network::InternalApi: ../network/internal_api.yaml
+ OS::TripleO::Network::StorageMgmt: ../network/storage_mgmt.yaml
+ OS::TripleO::Network::Storage: ../network/storage.yaml
+
+ # Port assignments for the controller role
+ OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external.yaml
+ OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api.yaml
+ OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage.yaml
+ OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
+
+ # Port assignments for the compute role
+ OS::TripleO::Compute::Ports::InternalApiPort: ../network/ports/internal_api.yaml
+ OS::TripleO::Compute::Ports::StoragePort: ../network/ports/storage.yaml
+
+ # Port assignments for the ceph storage role
+ OS::TripleO::CephStorage::Ports::StoragePort: ../network/ports/storage.yaml
+ OS::TripleO::CephStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
+
+ # Port assignments for the swift storage role
+ OS::TripleO::SwiftStorage::Ports::InternalApiPort: ../network/ports/internal_api.yaml
+ OS::TripleO::SwiftStorage::Ports::StoragePort: ../network/ports/storage.yaml
+ OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
+
+ # Port assignments for the block storage role
+ OS::TripleO::BlockStorage::Ports::InternalApiPort: ../network/ports/internal_api.yaml
+ OS::TripleO::BlockStorage::Ports::StoragePort: ../network/ports/storage.yaml
+ OS::TripleO::BlockStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
+
+ # Port assignments for service virtual IPs for the controller role
+ OS::TripleO::Controller::Ports::RedisVipPort: ../network/ports/vip.yaml
diff --git a/extraconfig/tasks/yum_update.sh b/extraconfig/tasks/yum_update.sh
index 9125ca07..3ba13f23 100755
--- a/extraconfig/tasks/yum_update.sh
+++ b/extraconfig/tasks/yum_update.sh
@@ -43,6 +43,108 @@ fi
pacemaker_status=$(systemctl is-active pacemaker)
if [[ "$pacemaker_status" == "active" ]] ; then
+ echo "Checking for and adding missing constraints"
+
+ if ! pcs constraint order show | grep "start openstack-nova-novncproxy-clone then start openstack-nova-api-clone"; then
+ pcs constraint order start openstack-nova-novncproxy-clone then openstack-nova-api-clone
+ fi
+
+ if ! pcs constraint order show | grep "start rabbitmq-clone then start openstack-keystone-clone"; then
+ pcs constraint order start rabbitmq-clone then openstack-keystone-clone
+ fi
+
+ if ! pcs constraint order show | grep "promote galera-master then start openstack-keystone-clone"; then
+ pcs constraint order promote galera-master then openstack-keystone-clone
+ fi
+
+ if ! pcs constraint order show | grep "start haproxy-clone then start openstack-keystone-clone"; then
+ pcs constraint order start haproxy-clone then openstack-keystone-clone
+ fi
+
+ if ! pcs constraint order show | grep "start memcached-clone then start openstack-keystone-clone"; then
+ pcs constraint order start memcached-clone then openstack-keystone-clone
+ fi
+
+ if ! pcs constraint order show | grep "promote redis-master then start openstack-ceilometer-central-clone"; then
+ pcs constraint order promote redis-master then start openstack-ceilometer-central-clone require-all=false
+ fi
+
+ if ! pcs resource defaults | grep "resource-stickiness: INFINITY"; then
+ pcs resource defaults resource-stickiness=INFINITY
+ fi
+
+ echo "Setting resource start/stop timeouts"
+
+ # timeouts for non-openstack services and special cases
+ pcs resource update haproxy op start timeout=100s
+ pcs resource update haproxy op stop timeout=100s
+ # mongod start timeout is also higher, setting only stop timeout
+ pcs resource update mongod op stop timeout=100s
+ # rabbit start timeout is already 100s
+ pcs resource update rabbitmq op stop timeout=100s
+ pcs resource update memcached op start timeout=100s
+ pcs resource update memcached op stop timeout=100s
+ pcs resource update httpd op start timeout=100s
+ pcs resource update httpd op stop timeout=100s
+ # neutron-netns-cleanup stop timeout is 300s, setting only start timeout
+ pcs resource update neutron-netns-cleanup op start timeout=100s
+ # neutron-ovs-cleanup stop timeout is 300s, setting only start timeout
+ pcs resource update neutron-ovs-cleanup op start timeout=100s
+
+ # timeouts for openstack services
+ pcs resource update neutron-dhcp-agent op start timeout=100s
+ pcs resource update neutron-dhcp-agent op stop timeout=100s
+ pcs resource update neutron-l3-agent op start timeout=100s
+ pcs resource update neutron-l3-agent op stop timeout=100s
+ pcs resource update neutron-metadata-agent op start timeout=100s
+ pcs resource update neutron-metadata-agent op stop timeout=100s
+ pcs resource update neutron-openvswitch-agent op start timeout=100s
+ pcs resource update neutron-openvswitch-agent op stop timeout=100s
+ pcs resource update neutron-server op start timeout=100s
+ pcs resource update neutron-server op stop timeout=100s
+ pcs resource update openstack-ceilometer-alarm-evaluator op start timeout=100s
+ pcs resource update openstack-ceilometer-alarm-evaluator op stop timeout=100s
+ pcs resource update openstack-ceilometer-alarm-notifier op start timeout=100s
+ pcs resource update openstack-ceilometer-alarm-notifier op stop timeout=100s
+ pcs resource update openstack-ceilometer-api op start timeout=100s
+ pcs resource update openstack-ceilometer-api op stop timeout=100s
+ pcs resource update openstack-ceilometer-central op start timeout=100s
+ pcs resource update openstack-ceilometer-central op stop timeout=100s
+ pcs resource update openstack-ceilometer-collector op start timeout=100s
+ pcs resource update openstack-ceilometer-collector op stop timeout=100s
+ pcs resource update openstack-ceilometer-notification op start timeout=100s
+ pcs resource update openstack-ceilometer-notification op stop timeout=100s
+ pcs resource update openstack-cinder-api op start timeout=100s
+ pcs resource update openstack-cinder-api op stop timeout=100s
+ pcs resource update openstack-cinder-scheduler op start timeout=100s
+ pcs resource update openstack-cinder-scheduler op stop timeout=100s
+ pcs resource update openstack-cinder-volume op start timeout=100s
+ pcs resource update openstack-cinder-volume op stop timeout=100s
+ pcs resource update openstack-glance-api op start timeout=100s
+ pcs resource update openstack-glance-api op stop timeout=100s
+ pcs resource update openstack-glance-registry op start timeout=100s
+ pcs resource update openstack-glance-registry op stop timeout=100s
+ pcs resource update openstack-heat-api op start timeout=100s
+ pcs resource update openstack-heat-api op stop timeout=100s
+ pcs resource update openstack-heat-api-cfn op start timeout=100s
+ pcs resource update openstack-heat-api-cfn op stop timeout=100s
+ pcs resource update openstack-heat-api-cloudwatch op start timeout=100s
+ pcs resource update openstack-heat-api-cloudwatch op stop timeout=100s
+ pcs resource update openstack-heat-engine op start timeout=100s
+ pcs resource update openstack-heat-engine op stop timeout=100s
+ pcs resource update openstack-keystone op start timeout=100s
+ pcs resource update openstack-keystone op stop timeout=100s
+ pcs resource update openstack-nova-api op start timeout=100s
+ pcs resource update openstack-nova-api op stop timeout=100s
+ pcs resource update openstack-nova-conductor op start timeout=100s
+ pcs resource update openstack-nova-conductor op stop timeout=100s
+ pcs resource update openstack-nova-consoleauth op start timeout=100s
+ pcs resource update openstack-nova-consoleauth op stop timeout=100s
+ pcs resource update openstack-nova-novncproxy op start timeout=100s
+ pcs resource update openstack-nova-novncproxy op stop timeout=100s
+ pcs resource update openstack-nova-scheduler op start timeout=100s
+ pcs resource update openstack-nova-scheduler op stop timeout=100s
+
echo "Pacemaker running, stopping cluster node and doing full package update"
node_count=$(pcs status xml | grep -o "<nodes_configured.*/>" | grep -o 'number="[0-9]*"' | grep -o "[0-9]*")
if [[ "$node_count" == "1" ]] ; then
diff --git a/net-config-linux-bridge.yaml b/net-config-linux-bridge.yaml
new file mode 100644
index 00000000..0646ffab
--- /dev/null
+++ b/net-config-linux-bridge.yaml
@@ -0,0 +1,73 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config for a simple bridge.
+
+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
+ ControlPlaneDefaultRoute: # Override this via parameter_defaults
+ description: The default route of the control plane network.
+ type: string
+ default: '192.0.2.1'
+ EC2MetadataIp: # Override this via parameter_defaults
+ description: The IP address of the EC2 metadata server.
+ type: string
+ default: '169.254.169.254/32'
+
+
+resources:
+ OsNetConfigImpl:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ os_net_config:
+ network_config:
+ -
+ type: linux_bridge
+ name: {get_input: bridge_name}
+ addresses:
+ -
+ ip_netmask: {get_param: ControlPlaneIp}
+ members:
+ -
+ type: interface
+ name: {get_input: interface_name}
+ # force the MAC address of the bridge to this interface
+ primary: true
+ routes:
+ -
+ ip_netmask: 0.0.0.0/0
+ next_hop: {get_param: ControlPlaneDefaultRoute}
+ default: true
+ -
+ ip_netmask: {get_param: EC2MetadataIp}
+ next_hop: {get_param: ControlPlaneDefaultRoute}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/bond-with-vlans/README.md b/network/config/bond-with-vlans/README.md
index 1679df3c..98879b4f 100644
--- a/network/config/bond-with-vlans/README.md
+++ b/network/config/bond-with-vlans/README.md
@@ -1,6 +1,12 @@
This directory contains Heat templates to help configure
Vlans on a bonded pair of NICs for each Overcloud role.
+There are two versions of the controller role template, one with
+an external network interface, and another without. If the
+external network interface is not configured the ctlplane address
+ranges will be used for external (public) network traffic.
+
+
Configuration
-------------
@@ -13,3 +19,9 @@ something like this:
OS::TripleO::Controller::Net::SoftwareConfig: network/config/bond-with-vlans/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: network/config/bond-with-vlans/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: network/config/bond-with-vlans/ceph-storage.yaml
+
+Configuration with no External Network
+--------------------------------------
+Same as above except set the following value for the controller role:
+
+ OS::TripleO::Controller::Net::SoftwareConfig: network/config/bond-with-vlans/controller-no-external.yaml
diff --git a/network/config/bond-with-vlans/controller-no-external.yaml b/network/config/bond-with-vlans/controller-no-external.yaml
new file mode 100644
index 00000000..22579e8f
--- /dev/null
+++ b/network/config/bond-with-vlans/controller-no-external.yaml
@@ -0,0 +1,114 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config with 2 bonded nics on a bridge
+ with VLANs attached for the controller role.
+
+parameters:
+ 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
+ BondInterfaceOvsOptions:
+ default: ''
+ 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
+ ExternalInterfaceDefaultRoute:
+ default: '10.0.0.1'
+ description: default route for the external network
+ type: string
+
+resources:
+ OsNetConfigImpl:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ os_net_config:
+ network_config:
+ -
+ type: ovs_bridge
+ name: {get_input: bridge_name}
+ members:
+ -
+ type: ovs_bond
+ name: bond1
+ ovs_options: {get_param: BondInterfaceOvsOptions}
+ members:
+ -
+ type: interface
+ name: nic2
+ primary: true
+ -
+ type: interface
+ name: nic3
+ -
+ type: vlan
+ device: bond1
+ vlan_id: {get_param: InternalApiNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ -
+ type: vlan
+ device: bond1
+ vlan_id: {get_param: StorageNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: vlan
+ device: bond1
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+ -
+ type: vlan
+ device: bond1
+ vlan_id: {get_param: TenantNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: TenantIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/single-nic-vlans/README.md b/network/config/single-nic-vlans/README.md
index e3e16574..6f128650 100644
--- a/network/config/single-nic-vlans/README.md
+++ b/network/config/single-nic-vlans/README.md
@@ -1,6 +1,11 @@
This directory contains Heat templates to help configure
Vlans on a single NICs for each Overcloud role.
+There are two versions of the controller role template, one with
+an external network interface, and another without. If the
+external network interface is not configured the ctlplane address
+ranges will be used for external (public) network traffic.
+
Configuration
-------------
@@ -17,3 +22,10 @@ something like this:
Or use this Heat environment file:
environments/net-single-nic-with-vlans.yaml
+
+
+Configuration with no External Network
+--------------------------------------
+Same as above except set the following value for the controller role:
+
+ OS::TripleO::Controller::Net::SoftwareConfig: network/config/single-nic-vlans/controller-no-external.yaml
diff --git a/network/config/single-nic-vlans/controller-no-external.yaml b/network/config/single-nic-vlans/controller-no-external.yaml
new file mode 100644
index 00000000..faf9e9c2
--- /dev/null
+++ b/network/config/single-nic-vlans/controller-no-external.yaml
@@ -0,0 +1,99 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure VLANs for the
+ controller role. No external IP is configured.
+
+parameters:
+ 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
+ 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
+ ExternalInterfaceDefaultRoute:
+ default: '10.0.0.1'
+ description: default route for the external network
+ type: string
+
+resources:
+ OsNetConfigImpl:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ os_net_config:
+ network_config:
+ -
+ type: ovs_bridge
+ name: {get_input: bridge_name}
+ use_dhcp: true
+ members:
+ -
+ type: interface
+ name: nic1
+ # force the MAC address of the bridge to this interface
+ primary: true
+ -
+ type: vlan
+ vlan_id: {get_param: InternalApiNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: TenantNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: TenantIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/endpoints/endpoint.yaml b/network/endpoints/endpoint.yaml
new file mode 100644
index 00000000..6246cfdd
--- /dev/null
+++ b/network/endpoints/endpoint.yaml
@@ -0,0 +1,60 @@
+heat_template_version: 2015-04-30
+
+description: >
+ OpenStack Endpoint
+
+parameters:
+ EndpointName:
+ type: string
+ description: The name of the Endpoint being evaluated
+ EndpointMap:
+ type: json
+ default: {}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ IP:
+ type: string
+ description: The IP address of the Neutron Port that the endpoint is attached to
+ UriSuffix:
+ type: string
+ default: ''
+ description: A suffix attached to the URL
+ CloudName:
+ type: string
+ default: ''
+ description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
+
+outputs:
+ endpoint:
+ description: >
+ A Hash containing a mapping of service endpoints to ports, protocols, uris
+ assigned IPs, and hostnames for a specific endpoint
+ value:
+ port: {get_param: [EndpointMap, {get_param: EndpointName }, port] }
+ protocol: {get_param: [EndpointMap, {get_param: EndpointName }, protocol] }
+ ip: {get_param: IP}
+ host:
+ str_replace:
+ template: {get_param: [EndpointMap, {get_param: EndpointName }, host]}
+ params: {IP_ADDRESS: {get_param: IP}, CLOUDNAME: {get_param: CloudName}}
+ uri:
+ list_join:
+ - ''
+ - - {get_param: [EndpointMap, {get_param: EndpointName }, protocol] }
+ - '://'
+ - str_replace:
+ template: {get_param: [EndpointMap, {get_param: EndpointName }, host]}
+ params: {IP_ADDRESS: {get_param: IP}, CLOUDNAME: {get_param: CloudName }}
+ - ':'
+ - {get_param: [EndpointMap, {get_param: EndpointName }, port] }
+ - {get_param: UriSuffix }
+ uri_no_suffix:
+ list_join:
+ - ''
+ - - {get_param: [EndpointMap, {get_param: EndpointName }, protocol] }
+ - '://'
+ - str_replace:
+ template: {get_param: [EndpointMap, {get_param: EndpointName }, host]}
+ params: {IP_ADDRESS: {get_param: IP}, CLOUDNAME: {get_param: CloudName} }
+ - ':'
+ - {get_param: [EndpointMap, {get_param: EndpointName }, port] }
diff --git a/network/endpoints/endpoint_map.yaml b/network/endpoints/endpoint_map.yaml
new file mode 100644
index 00000000..05214011
--- /dev/null
+++ b/network/endpoints/endpoint_map.yaml
@@ -0,0 +1,450 @@
+heat_template_version: 2015-04-30
+
+description: >
+ A Map of OpenStack Endpoints
+
+parameters:
+ CeilometerApiVirtualIP:
+ type: string
+ default: ''
+ CinderApiVirtualIP:
+ type: string
+ default: ''
+ GlanceApiVirtualIP:
+ type: string
+ default: ''
+ GlanceRegistryVirtualIP:
+ type: string
+ default: ''
+ HeatApiVirtualIP:
+ type: string
+ default: ''
+ KeystoneAdminApiVirtualIP:
+ type: string
+ default: ''
+ KeystonePublicApiVirtualIP:
+ type: string
+ default: ''
+ MysqlVirtualIP:
+ type: string
+ default: ''
+ NeutronApiVirtualIP:
+ type: string
+ default: ''
+ NovaApiVirtualIP:
+ type: string
+ default: ''
+ PublicVirtualIP:
+ type: string
+ default: ''
+ SwiftProxyVirtualIP:
+ type: string
+ default: ''
+ EndpointMap:
+ type: json
+ default:
+ CeilometerAdmin: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+ CeilometerInternal: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+ CeilometerPublic: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+ CinderAdmin: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
+ CinderInternal: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
+ CinderPublic: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
+ GlanceAdmin: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
+ GlanceInternal: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
+ GlancePublic: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
+ GlanceRegistryAdmin: {protocol: 'http', port: '9191', host: 'IP_ADDRESS'}
+ GlanceRegistryInternal: {protocol: 'http', port: '9191', host: 'IP_ADDRESS'}
+ GlanceRegistryPublic: {protocol: 'http', port: '9191', host: 'IP_ADDRESS'}
+ HeatAdmin: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
+ HeatInternal: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
+ HeatPublic: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
+ HorizonPublic: {protocol: 'http', port: '80', host: 'IP_ADDRESS'}
+ KeystoneAdmin: {protocol: 'http', port: '35357', host: 'IP_ADDRESS'}
+ KeystoneInternal: {protocol: 'http', port: '5000', host: 'IP_ADDRESS'}
+ KeystonePublic: {protocol: 'http', port: '5000', host: 'IP_ADDRESS'}
+ NeutronAdmin: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
+ NeutronInternal: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
+ NeutronPublic: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
+ NovaAdmin: {protocol: 'http', port: '8774', host: 'IP_ADDRESS'}
+ NovaInternal: {protocol: 'http', port: '8774', host: 'IP_ADDRESS'}
+ NovaPublic: {protocol: 'http', port: '8774', host: 'IP_ADDRESS'}
+ NovaEC2Admin: {protocol: 'http', port: '8773', host: 'IP_ADDRESS'}
+ NovaEC2Internal: {protocol: 'http', port: '8773', host: 'IP_ADDRESS'}
+ NovaEC2Public: {protocol: 'http', port: '8773', host: 'IP_ADDRESS'}
+ SwiftAdmin: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
+ SwiftInternal: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
+ SwiftPublic: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ CloudName:
+ type: string
+ default: ''
+ description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
+
+resources:
+
+ CeilometerInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CeilometerInternal
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CeilometerApiVirtualIP}
+ CeilometerPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CeilometerPublic
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: PublicVirtualIP}
+ CeilometerAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CeilometerAdmin
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CeilometerApiVirtualIP}
+
+ CinderInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderInternal
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CinderApiVirtualIP}
+ UriSuffix: '/v1/%(tenant_id)s'
+ CinderPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderPublic
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: PublicVirtualIP}
+ UriSuffix: '/v1/%(tenant_id)s'
+ CinderAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderAdmin
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CinderApiVirtualIP}
+ UriSuffix: '/v1/%(tenant_id)s'
+
+ CinderV2Internal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderInternal
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CinderApiVirtualIP}
+ UriSuffix: '/v2/%(tenant_id)s'
+ CinderV2Public:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderPublic
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: PublicVirtualIP}
+ UriSuffix: '/v2/%(tenant_id)s'
+ CinderV2Admin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderAdmin
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CinderApiVirtualIP}
+ UriSuffix: '/v2/%(tenant_id)s'
+
+ GlanceInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlanceInternal
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: GlanceApiVirtualIP}
+ GlancePublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlancePublic
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: PublicVirtualIP}
+ GlanceAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlanceAdmin
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: GlanceApiVirtualIP}
+ GlanceRegistryInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlanceInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: GlanceRegistryVirtualIP}
+ GlanceRegistryPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlancePublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ GlanceRegistryAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlanceAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: GlanceRegistryVirtualIP}
+
+ HeatInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: HeatInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: HeatApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/%(tenant_id)s'
+ HeatPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: HeatPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/%(tenant_id)s'
+ HeatAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: HeatAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: HeatApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/%(tenant_id)s'
+
+ HorizonPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: HeatPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/dashboard'
+
+ KeystoneInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: KeystoneInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: KeystonePublicApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2.0'
+ KeystonePublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: KeystonePublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2.0'
+ KeystoneAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: KeystoneAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: KeystoneAdminApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2.0'
+ KeystoneEC2:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: KeystoneInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: KeystonePublicApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2.0/ec2tokens'
+
+ NeutronInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NeutronInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NeutronApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ NeutronPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NeutronPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ NeutronAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NeutronAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NeutronApiVirtualIP}
+ CloudName: {get_param: CloudName}
+
+ NovaInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2/%(tenant_id)s'
+ NovaPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2/%(tenant_id)s'
+ NovaAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2/%(tenant_id)s'
+ NovaV3Internal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v3'
+ NovaV3Public:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v3'
+ NovaV3Admin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v3'
+
+ NovaEC2Internal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaEC2Internal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/services/Cloud'
+ NovaEC2Public:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaEC2Public
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/services/Cloud'
+ NovaEC2Admin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaEC2Admin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/services/Admin'
+
+ SwiftInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: SwiftProxyVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/AUTH_%(tenant_id)s'
+ SwiftPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/AUTH_%(tenant_id)s'
+ SwiftAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: SwiftProxyVirtualIP}
+ CloudName: {get_param: CloudName}
+ # No Suffix for the Admin interface
+ SwiftS3Internal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: SwiftProxyVirtualIP}
+ CloudName: {get_param: CloudName}
+ SwiftS3Public:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ SwiftS3Admin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: SwiftProxyVirtualIP}
+ CloudName: {get_param: CloudName}
+
+outputs:
+ endpoint_map:
+ value:
+ CeilometerInternal: {get_attr: [ CeilometerInternal, endpoint] }
+ CeilometerPublic: {get_attr: [ CeilometerPublic, endpoint] }
+ CeilometerAdmin: {get_attr: [ CeilometerAdmin, endpoint] }
+ CinderInternal: {get_attr: [ CinderInternal, endpoint] }
+ CinderPublic: {get_attr: [ CinderPublic, endpoint] }
+ CinderAdmin: {get_attr: [ CinderAdmin, endpoint] }
+ CinderV2Internal: {get_attr: [ CinderV2Internal, endpoint] }
+ CinderV2Public: {get_attr: [ CinderV2Public, endpoint] }
+ CinderV2Admin: {get_attr: [ CinderV2Admin, endpoint] }
+ GlanceInternal: {get_attr: [ GlanceInternal, endpoint] }
+ GlancePublic: {get_attr: [ GlancePublic, endpoint] }
+ GlanceAdmin: {get_attr: [ GlanceAdmin, endpoint] }
+ GlanceRegistryInternal: {get_attr: [ GlanceRegistryInternal, endpoint] }
+ GlanceRegistryPublic: {get_attr: [ GlanceRegistryPublic, endpoint] }
+ GlanceRegistryAdmin: {get_attr: [ GlanceRegistryAdmin, endpoint] }
+ HeatInternal: {get_attr: [ HeatInternal, endpoint] }
+ HeatPublic: {get_attr: [ HeatPublic, endpoint] }
+ HeatAdmin: {get_attr: [ HeatAdmin, endpoint] }
+ HorizonPublic: {get_attr: [ HorizonPublic, endpoint] }
+ KeystoneInternal: {get_attr: [ KeystoneInternal, endpoint] }
+ KeystonePublic: {get_attr: [ KeystonePublic, endpoint] }
+ KeystoneAdmin: {get_attr: [ KeystoneAdmin, endpoint] }
+ KeystoneEC2: {get_attr: [ KeystoneEC2, endpoint] }
+ NeutronInternal: {get_attr: [ NeutronInternal, endpoint] }
+ NeutronPublic: {get_attr: [ NeutronPublic, endpoint] }
+ NeutronAdmin: {get_attr: [ NeutronAdmin, endpoint] }
+ NovaInternal: {get_attr: [ NovaInternal, endpoint] }
+ NovaPublic: {get_attr: [ NovaPublic, endpoint] }
+ NovaAdmin: {get_attr: [ NovaAdmin, endpoint] }
+ NovaV3Internal: {get_attr: [ NovaV3Internal, endpoint] }
+ NovaV3Public: {get_attr: [ NovaV3Public, endpoint] }
+ NovaV3Admin: {get_attr: [ NovaV3Admin, endpoint] }
+ NovaEC2Internal: {get_attr: [ NovaEC2Internal, endpoint] }
+ NovaEC2Public: {get_attr: [ NovaEC2Public, endpoint] }
+ NovaEC2Admin: {get_attr: [ NovaEC2Admin, endpoint] }
+ SwiftInternal: {get_attr: [ SwiftInternal, endpoint] }
+ SwiftPublic: {get_attr: [ SwiftPublic, endpoint] }
+ SwiftAdmin: {get_attr: [ SwiftAdmin, endpoint] }
+ SwiftS3Internal: {get_attr: [ SwiftS3Internal, endpoint] }
+ SwiftS3Public: {get_attr: [ SwiftS3Public, endpoint] }
+ SwiftS3Admin: {get_attr: [ SwiftS3Admin, endpoint] }
diff --git a/os-apply-config/controller.yaml b/os-apply-config/controller.yaml
index 6248f280..f84bf5b3 100644
--- a/os-apply-config/controller.yaml
+++ b/os-apply-config/controller.yaml
@@ -678,6 +678,7 @@ resources:
debug: {get_input: debug}
host: {get_input: controller_virtual_ip}
port: {get_input: glance_port}
+ uri: {get_input: glance_uri}
protocol: {get_input: glance_protocol}
service-password: {get_input: glance_password}
swift-store-user: service:glance
diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml
index 7e65d4b1..4cfed6b4 100644
--- a/overcloud-resource-registry-puppet.yaml
+++ b/overcloud-resource-registry-puppet.yaml
@@ -89,6 +89,10 @@ resource_registry:
# Port assignments for service virtual IPs for the controller role
OS::TripleO::Controller::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
+ # Service Endpoint Mappings
+ OS::TripleO::Endpoint: network/endpoints/endpoint.yaml
+ OS::TripleO::EndpointMap: network/endpoints/endpoint_map.yaml
+
# validation resources
OS::TripleO::AllNodes::Validation: all-nodes-validation.yaml
diff --git a/overcloud-resource-registry.yaml b/overcloud-resource-registry.yaml
index d6eb97f9..ed02551b 100644
--- a/overcloud-resource-registry.yaml
+++ b/overcloud-resource-registry.yaml
@@ -72,5 +72,9 @@ resource_registry:
# Port assignments for service virtual IPs for the controller role
OS::TripleO::Controller::Ports::RedisVipPort: network/ports/noop.yaml
+ # Service Endpoint Mappings
+ OS::TripleO::Endpoint: network/endpoints/endpoint.yaml
+ OS::TripleO::EndpointMap: network/endpoints/endpoint_map.yaml
+
# validation resources
OS::TripleO::AllNodes::Validation: os-apply-config/all-nodes-validation.yaml
diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml
index 40576bb0..35a473cc 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
@@ -79,14 +79,6 @@ parameters:
default: ''
description: Set to True to enable debugging on all services.
type: string
- GlancePort:
- default: "9292"
- description: Glance port.
- type: string
- GlanceProtocol:
- default: http
- description: Protocol to use when connecting to glance, set to https for SSL.
- type: string
HAProxySyslogAddress:
default: /dev/log
description: Syslog address where HAproxy will send its log
@@ -714,6 +706,12 @@ parameters:
description: >
Setting to a previously unused value during stack-update will trigger
package update on all nodes
+ DeployIdentifier:
+ default: ''
+ type: string
+ description: >
+ Setting this to a unique value will re-run any deployment tasks which
+ perform configuration on a Heat stack-update.
# If you want to remove a specific node from a resource group, you can pass
# the node name or id as a <Group>RemovalPolicies parameter, for example:
@@ -765,6 +763,23 @@ resources:
properties:
length: 10
+ EndpointMap:
+ type: OS::TripleO::EndpointMap
+ properties:
+ CloudName: {get_param: CloudName}
+ CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
+ CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
+ GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
+ GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
+ HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
+ KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
+ KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
+ MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
+ NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
+ NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
+ SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
+ PublicVirtualIP: {get_attr: [VipMap, net_ip_map, external]}
+
Controller:
type: OS::Heat::ResourceGroup
depends_on: Networks
@@ -798,8 +813,6 @@ resources:
ExtraConfig: {get_param: ExtraConfig}
FencingConfig: {get_param: FencingConfig}
Flavor: {get_param: OvercloudControlFlavor}
- GlancePort: {get_param: GlancePort}
- GlanceProtocol: {get_param: GlanceProtocol}
GlancePassword: {get_param: GlancePassword}
GlanceBackend: {get_param: GlanceBackend}
GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
@@ -874,6 +887,7 @@ resources:
VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
PublicVirtualIP: {get_attr: [PublicVirtualIP, ip_address]}
ServiceNetMap: {get_param: ServiceNetMap}
+ EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
@@ -911,8 +925,6 @@ resources:
ExtraConfig: {get_param: ExtraConfig}
Flavor: {get_param: OvercloudComputeFlavor}
GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
- GlancePort: {get_param: GlancePort}
- GlanceProtocol: {get_param: GlanceProtocol}
Image: {get_param: NovaImage}
ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
KeyName: {get_param: KeyName}
@@ -956,6 +968,7 @@ resources:
SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
ServiceNetMap: {get_param: ServiceNetMap}
+ EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
UpdateIdentifier: {get_param: UpdateIdentifier}
Hostname:
str_replace:
@@ -982,8 +995,6 @@ resources:
KeyName: {get_param: KeyName}
Flavor: {get_param: OvercloudBlockStorageFlavor}
VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
- GlancePort: {get_param: GlancePort}
- GlanceProtocol: {get_param: GlanceProtocol}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
RabbitPassword: {get_param: RabbitPassword}
RabbitUserName: {get_param: RabbitUserName}
@@ -997,6 +1008,7 @@ resources:
params:
'%stackname%': {get_param: 'OS::stack_name'}
ServiceNetMap: {get_param: ServiceNetMap}
+ EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
ExtraConfig: {get_param: ExtraConfig}
BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
@@ -1382,6 +1394,7 @@ resources:
NodeConfigIdentifiers:
allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
controller_config: {get_attr: [Controller, attributes, config_identifier]}
+ deployment_identifier: {get_param: DeployIdentifier}
ComputeNodesPostDeployment:
type: OS::TripleO::ComputePostDeployment
@@ -1391,6 +1404,7 @@ resources:
NodeConfigIdentifiers:
allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
compute_config: {get_attr: [Compute, attributes, config_identifier]}
+ deployment_identifier: {get_param: DeployIdentifier}
ObjectStorageNodesPostDeployment:
type: OS::TripleO::ObjectStoragePostDeployment
@@ -1400,6 +1414,7 @@ resources:
NodeConfigIdentifiers:
allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
objectstorage_config: {get_attr: [ObjectStorage, attributes, config_identifier]}
+ deployment_identifier: {get_param: DeployIdentifier}
BlockStorageNodesPostDeployment:
type: OS::TripleO::BlockStoragePostDeployment
@@ -1409,6 +1424,7 @@ resources:
NodeConfigIdentifiers:
allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
blockstorage_config: {get_attr: [BlockStorage, attributes, config_identifier]}
+ deployment_identifier: {get_param: DeployIdentifier}
CephStorageNodesPostDeployment:
type: OS::TripleO::CephStoragePostDeployment
@@ -1418,16 +1434,12 @@ resources:
NodeConfigIdentifiers:
allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
cephstorage_config: {get_attr: [CephStorage, attributes, config_identifier]}
+ deployment_identifier: {get_param: DeployIdentifier}
outputs:
KeystoneURL:
description: URL for the Overcloud Keystone service
- value:
- list_join:
- - ''
- - - http://
- - {get_attr: [PublicVirtualIP, ip_address]}
- - :5000/v2.0/
+ value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
KeystoneAdminVip:
description: Keystone Admin VIP endpoint
value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
diff --git a/puppet/cinder-storage.yaml b/puppet/cinder-storage.yaml
index 239c2026..b536418d 100644
--- a/puppet/cinder-storage.yaml
+++ b/puppet/cinder-storage.yaml
@@ -44,14 +44,6 @@ parameters:
type: string
constraints:
- custom_constraint: nova.flavor
- GlancePort:
- default: "9292"
- description: Glance port.
- type: string
- GlanceProtocol:
- default: http
- description: Protocol to use when connecting to glance, set to https for SSL.
- type: string
KeyName:
default: default
description: Name of an existing EC2 KeyPair to enable SSH access to the instances
@@ -104,6 +96,11 @@ parameters:
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry.
type: json
+ EndpointMap:
+ default: {}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
GlanceApiVirtualIP:
type: string
default: ''
@@ -201,14 +198,7 @@ resources:
cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
cinder_iscsi_helper: {get_param: CinderISCSIHelper}
cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
- glance_api_servers:
- list_join:
- - ''
- - - {get_param: GlanceProtocol}
- - '://'
- - {get_param: GlanceApiVirtualIP}
- - ':'
- - {get_param: GlancePort}
+ glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
rabbit_username: {get_param: RabbitUserName}
rabbit_password: {get_param: RabbitPassword}
rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
diff --git a/puppet/compute.yaml b/puppet/compute.yaml
index 52a856f0..c147a0f7 100644
--- a/puppet/compute.yaml
+++ b/puppet/compute.yaml
@@ -51,14 +51,6 @@ parameters:
GlanceHost:
type: string
default: '' # Has to be here because of the ignored empty value bug
- GlancePort:
- default: "9292"
- description: Glance port.
- type: string
- GlanceProtocol:
- default: http
- description: Protocol to use when connecting to glance, set to https for SSL.
- type: string
Image:
type: string
default: overcloud-compute
@@ -267,6 +259,11 @@ parameters:
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry.
type: json
+ EndpointMap:
+ default: {}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
UpdateIdentifier:
default: ''
type: string
@@ -412,7 +409,7 @@ resources:
nova::glance_api_servers: {get_input: glance_api_servers}
neutron::debug: {get_input: debug}
neutron::rabbit_password: {get_input: rabbit_password}
- neutron::rabbit_user: {get_input: rabbit_user}
+ neutron::rabbit_user: {get_input: rabbit_username}
neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
neutron::rabbit_port: {get_input: rabbit_client_port}
neutron_flat_networks: {get_input: neutron_flat_networks}
@@ -430,7 +427,7 @@ resources:
neutron_physical_bridge: {get_input: neutron_physical_bridge}
neutron_public_interface: {get_input: neutron_public_interface}
nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
- nova::network::neutron::neutron_url: {get_input: neutron_url}
+ nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
neutron_router_distributed: {get_input: neutron_router_distributed}
neutron_agent_mode: {get_input: neutron_agent_mode}
@@ -465,22 +462,10 @@ resources:
ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
ceilometer_password: {get_param: CeilometerPassword}
ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
- ceilometer_agent_auth_url:
- list_join:
- - ''
- - - 'http://'
- - {get_param: KeystonePublicApiVirtualIP}
- - ':5000/v2.0'
+ ceilometer_agent_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri]}
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
- glance_api_servers:
- list_join:
- - ''
- - - {get_param: GlanceProtocol}
- - '://'
- - {get_param: GlanceHost}
- - ':'
- - {get_param: GlancePort}
+ glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
neutron_flat_networks: {get_param: NeutronFlatNetworks}
neutron_host: {get_param: NeutronHost}
neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
@@ -538,18 +523,8 @@ resources:
- {get_param: NeutronTypeDrivers}
neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
- neutron_url:
- list_join:
- - ''
- - - 'http://'
- - {get_param: NeutronHost}
- - ':9696'
- neutron_admin_auth_url:
- list_join:
- - ''
- - - 'http://'
- - {get_param: KeystoneAdminApiVirtualIP}
- - ':35357/v2.0'
+ neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
+ neutron_admin_auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri]}
admin_password: {get_param: AdminPassword}
rabbit_username: {get_param: RabbitUserName}
rabbit_password: {get_param: RabbitPassword}
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
index 3c6c4eeb..6aabe572 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -170,14 +170,6 @@ parameters:
description: The password for the glance service and db account, used by the glance services.
type: string
hidden: true
- GlancePort:
- default: "9292"
- description: Glance port.
- type: string
- GlanceProtocol:
- default: http
- description: Protocol to use when connecting to glance, set to https for SSL.
- type: string
GlanceBackend:
default: swift
description: The short name of the Glance backend to use. Should be one
@@ -596,6 +588,11 @@ parameters:
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry.
type: json
+ EndpointMap:
+ default: {}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
UpdateIdentifier:
default: ''
type: string
@@ -766,7 +763,7 @@ resources:
- '@'
- {get_param: MysqlVirtualIP}
- '/cinder'
- glance_port: {get_param: GlancePort}
+ glance_port: {get_param: [EndpointMap, GlanceInternal, port]}
glance_password: {get_param: GlancePassword}
glance_backend: {get_param: GlanceBackend}
glance_file_pcmk_device: {get_param: GlanceFilePcmkDevice}
@@ -793,7 +790,6 @@ resources:
- '@'
- {get_param: MysqlVirtualIP}
- '/heat'
- keystone_auth_address: {list_join: ['', ['http://', {get_param: KeystonePublicApiVirtualIP} , ':5000/v2.0']]}
keystone_ca_certificate: {get_param: KeystoneCACertificate}
keystone_signing_key: {get_param: KeystoneSigningKey}
keystone_signing_certificate: {get_param: KeystoneSigningCertificate}
@@ -809,36 +805,11 @@ resources:
- '@'
- {get_param: MysqlVirtualIP}
- '/keystone'
- keystone_identity_uri:
- list_join:
- - ''
- - - 'http://'
- - {get_param: KeystoneAdminApiVirtualIP}
- - ':35357'
- keystone_auth_uri:
- list_join:
- - ''
- - - 'http://'
- - {get_param: KeystonePublicApiVirtualIP}
- - ':5000/v2.0/'
- keystone_public_url:
- list_join:
- - ''
- - - 'http://'
- - {get_param: PublicVirtualIP}
- - ':5000'
- keystone_internal_url:
- list_join:
- - ''
- - - 'http://'
- - {get_param: KeystonePublicApiVirtualIP}
- - ':5000'
- keystone_ec2_uri:
- list_join:
- - ''
- - - 'http://'
- - {get_param: KeystonePublicApiVirtualIP}
- - ':5000/v2.0/ec2tokens'
+ keystone_identity_uri: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
+ keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
+ keystone_public_url: { get_param: [EndpointMap, KeystonePublic, uri_no_suffix] }
+ keystone_internal_url: { get_param: [EndpointMap, KeystoneInternal, uri_no_suffix] }
+ keystone_ec2_uri: { get_param: [EndpointMap, KeystoneEC2, uri] }
enable_fencing: {get_param: EnableFencing}
enable_galera: {get_param: EnableGalera}
enable_ceph_storage: {get_param: EnableCephStorage}
@@ -918,18 +889,10 @@ resources:
- '@'
- {get_param: MysqlVirtualIP}
- '/ovs_neutron?charset=utf8'
- neutron_url:
- list_join:
- - ''
- - - 'http://'
- - {get_param: NeutronApiVirtualIP}
- - ':9696'
- neutron_admin_auth_url:
- list_join:
- - ''
- - - 'http://'
- - {get_param: KeystoneAdminApiVirtualIP}
- - ':35357/v2.0'
+ neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
+ neutron_public_url: { get_param: [ EndpointMap, NeutronPublic, uri ] }
+ neutron_admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
+ neutron_admin_auth_url: { get_param: [ EndpointMap, KeystoneAdmin, uri ] }
ceilometer_backend: {get_param: CeilometerBackend}
ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
ceilometer_password: {get_param: CeilometerPassword}
@@ -991,14 +954,7 @@ resources:
cinder_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
glance_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
glance_registry_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
- glance_api_servers:
- list_join:
- - ''
- - - {get_param: GlanceProtocol}
- - '://'
- - {get_param: GlanceApiVirtualIP}
- - ':'
- - {get_param: GlancePort}
+ glance_api_servers: { get_param: [EndpointMap, GlanceInternal, uri]}
glance_registry_host: {get_param: GlanceRegistryVirtualIP}
heat_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
@@ -1132,7 +1088,7 @@ resources:
glance::registry::auth_uri: {get_input: keystone_auth_uri}
glance::registry::identity_uri: {get_input: keystone_identity_uri}
glance::registry::debug: {get_input: debug}
- glance::backend::swift::swift_store_auth_address: {get_input: keystone_auth_address}
+ glance::backend::swift::swift_store_auth_address: {get_input: keystone_auth_uri}
glance::backend::swift::swift_store_user: service:glance
glance::backend::swift::swift_store_key: {get_input: glance_password}
glance_backend: {get_input: glance_backend}
@@ -1205,7 +1161,7 @@ resources:
# Neutron
neutron::bind_host: {get_input: neutron_api_network}
neutron::rabbit_password: {get_input: rabbit_password}
- neutron::rabbit_user: {get_input: rabbit_user}
+ neutron::rabbit_user: {get_input: rabbit_username}
neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
neutron::rabbit_port: {get_input: rabbit_client_port}
neutron::debug: {get_input: debug}
@@ -1259,7 +1215,7 @@ resources:
ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
- ceilometer::agent::auth::auth_url: {get_input: keystone_auth_address}
+ ceilometer::agent::auth::auth_url: {get_input: keystone_auth_uri}
ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
ceilometer::db::mysql::password: {get_input: ceilometer_password}
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
@@ -1280,7 +1236,7 @@ resources:
nova::glance_api_servers: {get_input: glance_api_servers}
nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
- nova::network::neutron::neutron_url: {get_input: neutron_url}
+ nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
nova::vncproxy::host: {get_input: nova_api_network}
nova::db::mysql::password: {get_input: nova_password}
@@ -1297,6 +1253,8 @@ resources:
rabbitmq::node_ip_address: {get_input: rabbitmq_network}
rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
rabbitmq::file_limit: {get_input: rabbit_fd_limit}
+ rabbitmq::default_user: {get_input: rabbit_username}
+ rabbitmq::default_pass: {get_input: rabbit_password}
# Redis
redis::bind: {get_input: redis_network}
redis_vip: {get_input: redis_vip}
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
index f1c24f0d..34be39f3 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -381,7 +381,7 @@ if hiera('step') >= 3 {
package {'nfs-utils': } ->
cinder::backend::nfs { $cinder_nfs_backend :
nfs_servers => hiera('cinder_nfs_servers'),
- nfs_mount_options => hiera('cinder_nfs_mount_options'),
+ nfs_mount_options => hiera('cinder_nfs_mount_options',''),
nfs_shares_config => '/etc/cinder/shares-nfs.conf',
}
}
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index 4f0dd72a..b9623714 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -74,11 +74,11 @@ if hiera('step') >= 1 {
Class['tripleo::fencing'] -> Class['pacemaker::stonith']
}
- # FIXME(gfidente): sets 95secs as default start timeout op
+ # FIXME(gfidente): sets 100secs as default start timeout op
# param; until we can use pcmk global defaults we'll still
# need to add it to every resource which redefines op params
Pacemaker::Resource::Service {
- op_params => 'start timeout=95s stop timeout=95s',
+ op_params => 'start timeout=100s stop timeout=100s',
}
# Only configure RabbitMQ in this step, don't start it yet to
@@ -344,7 +344,7 @@ if hiera('step') >= 2 {
if downcase(hiera('ceilometer_backend')) == 'mongodb' {
pacemaker::resource::service { $::mongodb::params::service_name :
- op_params => 'start timeout=120s stop timeout=95s',
+ op_params => 'start timeout=120s stop timeout=100s',
clone_params => true,
require => Class['::mongodb::server'],
}
@@ -757,7 +757,7 @@ if hiera('step') >= 3 {
package { 'nfs-utils': } ->
cinder::backend::nfs { $cinder_nfs_backend:
nfs_servers => hiera('cinder_nfs_servers'),
- nfs_mount_options => hiera('cinder_nfs_mount_options'),
+ nfs_mount_options => hiera('cinder_nfs_mount_options',''),
nfs_shares_config => '/etc/cinder/shares-nfs.conf',
}
}
@@ -1186,24 +1186,24 @@ if hiera('step') >= 4 {
# Nova
pacemaker::resource::service { $::nova::params::api_service_name :
clone_params => 'interleave=true',
- op_params => 'start timeout=95s stop timeout=95s monitor start-delay=10s',
+ op_params => 'start timeout=100s stop timeout=100s monitor start-delay=10s',
}
pacemaker::resource::service { $::nova::params::conductor_service_name :
clone_params => 'interleave=true',
- op_params => 'start timeout=95s stop timeout=95s monitor start-delay=10s',
+ op_params => 'start timeout=100s stop timeout=100s monitor start-delay=10s',
}
pacemaker::resource::service { $::nova::params::consoleauth_service_name :
clone_params => 'interleave=true',
- op_params => 'start timeout=95s stop timeout=95s monitor start-delay=10s',
+ op_params => 'start timeout=100s stop timeout=100s monitor start-delay=10s',
require => Pacemaker::Resource::Service[$::keystone::params::service_name],
}
pacemaker::resource::service { $::nova::params::vncproxy_service_name :
clone_params => 'interleave=true',
- op_params => 'start timeout=95s stop timeout=95s monitor start-delay=10s',
+ op_params => 'start timeout=100s stop timeout=100s monitor start-delay=10s',
}
pacemaker::resource::service { $::nova::params::scheduler_service_name :
clone_params => 'interleave=true',
- op_params => 'start timeout=95s stop timeout=95s monitor start-delay=10s',
+ op_params => 'start timeout=100s stop timeout=100s monitor start-delay=10s',
}
pacemaker::constraint::base { 'keystone-then-nova-consoleauth-constraint':