
Add support to enable the UI to use paths via mod_proxy to access API endpoints instead of connecting to each endpoint directly on a port other than where the UI is served from. This is necessary to prevent certificate acceptance errors from non-Chrome browsers which take exception to connections made to other ports on the same hostname, using one SSL certificate. This change extends the UI's Apache configuration to create one mod_proxy location for each of the API endpoints that UI calls upon. These mod_proxy (using ProxyPass, ProxyPassReverse) endpoints are configured using new heira variables provided in the dependent commit. Additionally, this change modifies the default UI configuration file to include endpoint URLs formatted to use the new endpoint paths that are created. Removed puppet variables which were previously used to generate the contents of the tripleo_ui_config.js template, since they are no longer used to generate this file, replaced with the new endpoint URLs formatted to use the new endpoint paths that are created. Change-Id: I55e375ad462fa98e181277ec0bd88658e620e8ad Implements: blueprint proxy-undercloud-api-services Depends-On: Ib20f4b0891563ae90ec80675635a64c39bd2fdb7
177 lines
4.6 KiB
Puppet
177 lines
4.6 KiB
Puppet
# Copyright 2016 Red Hat, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
# == Class: tripleo::ui
|
|
#
|
|
# Configure TripleO UI.
|
|
#
|
|
# === Parameters:
|
|
#
|
|
# [*servername*]
|
|
# The servername for the virtualhost.
|
|
# Optional. Defaults to $::fqdn
|
|
#
|
|
# [*bind_host*]
|
|
# The host/ip address Apache will listen on.
|
|
# Optional. Defaults to hiera('controller_host')
|
|
#
|
|
# [*ui_port*]
|
|
# The port on which the UI is listening.
|
|
# Defaults to 3000
|
|
#
|
|
# [*endpoint_proxy_keystone*]
|
|
# The keystone proxy endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_config_keystone*]
|
|
# The keystone config endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_proxy_heat*]
|
|
# The heat proxy endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_config_heat*]
|
|
# The heat config endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_proxy_ironic*]
|
|
# The ironic proxy endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_config_ironic*]
|
|
# The ironic config endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_proxy_mistral*]
|
|
# The mistral proxy endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_config_mistral*]
|
|
# The mistral config endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_proxy_swift*]
|
|
# The swift proxy endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_config_swift*]
|
|
# The swift config endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_proxy_zaqar*]
|
|
# The zaqar proxy endpoint url
|
|
# Defaults to undef
|
|
#
|
|
# [*endpoint_config_zaqar*]
|
|
# The zaqar config endpoint url
|
|
# Defaults to undf
|
|
#
|
|
# [*zaqar_default_queue*]
|
|
# The zaqar default queue
|
|
# A string.
|
|
# Defaults to 'tripleo'
|
|
#
|
|
class tripleo::ui (
|
|
$servername = $::fqdn,
|
|
$bind_host = hiera('controller_host'),
|
|
$ui_port = 3000,
|
|
$zaqar_default_queue = 'tripleo',
|
|
$endpoint_proxy_zaqar = undef,
|
|
$endpoint_proxy_keystone = undef,
|
|
$endpoint_proxy_heat = undef,
|
|
$endpoint_proxy_ironic = undef,
|
|
$endpoint_proxy_mistral = undef,
|
|
$endpoint_proxy_swift = undef,
|
|
$endpoint_config_zaqar = undef,
|
|
$endpoint_config_keystone = undef,
|
|
$endpoint_config_heat = undef,
|
|
$endpoint_config_ironic = undef,
|
|
$endpoint_config_mistral = undef,
|
|
$endpoint_config_swift = undef,
|
|
|
|
) {
|
|
|
|
include ::apache::mod::proxy
|
|
include ::apache::mod::proxy_http
|
|
include ::apache::mod::proxy_wstunnel
|
|
|
|
::apache::vhost { 'tripleo-ui':
|
|
ensure => 'present',
|
|
servername => $servername,
|
|
ip => $bind_host,
|
|
port => $ui_port,
|
|
docroot => '/var/www/openstack-tripleo-ui/dist',
|
|
options => ['Indexes', 'FollowSymLinks'],
|
|
fallbackresource => '/index.html',
|
|
proxy_pass => [
|
|
{
|
|
'path' => '/zaqar',
|
|
'url' => $endpoint_proxy_zaqar
|
|
},
|
|
{
|
|
'path' => '/keystone',
|
|
'url' => $endpoint_proxy_keystone,
|
|
'reverse_urls' => $endpoint_proxy_keystone
|
|
},
|
|
{
|
|
'path' => '/heat',
|
|
'url' => $endpoint_proxy_heat,
|
|
'reverse_urls' => $endpoint_proxy_heat
|
|
},
|
|
{
|
|
'path' => '/ironic',
|
|
'url' => $endpoint_proxy_ironic,
|
|
'reverse_urls' => $endpoint_proxy_ironic
|
|
},
|
|
{
|
|
'path' => '/mistral',
|
|
'url' => $endpoint_proxy_mistral,
|
|
'reverse_urls' => $endpoint_proxy_mistral
|
|
},
|
|
{
|
|
'path' => '/swift',
|
|
'url' => $endpoint_proxy_swift,
|
|
'reverse_urls' => $endpoint_proxy_swift
|
|
},
|
|
],
|
|
|
|
}
|
|
|
|
# We already use apache::vhost to generate our own
|
|
# configuration file, let's clean the configuration
|
|
# embedded within the package
|
|
file { "${apache::confd_dir}/openstack-tripleo-ui.conf" :
|
|
ensure => present,
|
|
content => "#
|
|
# This file has been cleaned by Puppet.
|
|
#
|
|
# OpenStack TripleO UI configuration has been moved to:
|
|
# - 25-tripleo-ui.conf
|
|
#",
|
|
require => Package['openstack-tripleo-ui'],
|
|
before => Service[$::apache::params::service_name],
|
|
}
|
|
|
|
file { '/var/www/openstack-tripleo-ui/dist/tripleo_ui_config.js' :
|
|
ensure => file,
|
|
content => template('tripleo/ui/tripleo_ui_config.js.erb'),
|
|
owner => 'root',
|
|
group => 'root',
|
|
mode => '0644',
|
|
}
|
|
|
|
}
|