Add a novnc container running the novnc-proxy.

All VNC-specific configuration bits are moved from nova-api-base to
nova-compute and the new nova-novncproxy and nova-consoleauth
containers. The compose specification has been updated to reflect this.

A future patch will make the desired backend configurable (spice/vnc).

Change-Id: I8b64abf125fd1ecd7d3463515e3717dd9bd60420
Blueprint: novnc-container
This commit is contained in:
Harm Weites 2015-05-05 00:37:23 +02:00
parent d19adb6a6b
commit 5ffc66cd69
11 changed files with 95 additions and 7 deletions

View File

@ -24,3 +24,19 @@ novascheduler:
restart: always restart: always
env_file: env_file:
- openstack.env - openstack.env
novaconsoleauth:
image: kollaglue/centos-rdo-nova-consoleauth:juno
name: nova-consoleauth
net: "host"
restart: always
env_file:
- openstack.env
novanovncproxy:
image: kollaglue/centos-rdo-nova-novncproxy:juno
name: nova-novncproxy
net: "host"
restart: always
env_file:
- openstack.env

View File

@ -45,8 +45,6 @@ crudini --set $cfg DEFAULT service_down_time 60
crudini --set $cfg DEFAULT rootwrap_config /etc/nova/rootwrap.conf crudini --set $cfg DEFAULT rootwrap_config /etc/nova/rootwrap.conf
crudini --set $cfg DEFAULT auth_strategy keystone crudini --set $cfg DEFAULT auth_strategy keystone
crudini --set $cfg DEFAULT use_forwarded_for False crudini --set $cfg DEFAULT use_forwarded_for False
crudini --set $cfg DEFAULT novncproxy_host 0.0.0.0
crudini --set $cfg DEFAULT novncproxy_port 6080
crudini --set $cfg DEFAULT glance_api_servers ${GLANCE_API_SERVICE_HOST}:9292 crudini --set $cfg DEFAULT glance_api_servers ${GLANCE_API_SERVICE_HOST}:9292
crudini --set $cfg DEFAULT cpu_allocation_ratio 16.0 crudini --set $cfg DEFAULT cpu_allocation_ratio 16.0
crudini --set $cfg DEFAULT ram_allocation_ratio 1.5 crudini --set $cfg DEFAULT ram_allocation_ratio 1.5
@ -54,10 +52,6 @@ crudini --set $cfg DEFAULT scheduler_default_filters RetryFilter,AvailabilityZon
crudini --set $cfg DEFAULT compute_driver nova.virt.libvirt.LibvirtDriver crudini --set $cfg DEFAULT compute_driver nova.virt.libvirt.LibvirtDriver
crudini --set $cfg DEFAULT vif_plugging_is_fatal True crudini --set $cfg DEFAULT vif_plugging_is_fatal True
crudini --set $cfg DEFAULT vif_plugging_timeout 300 crudini --set $cfg DEFAULT vif_plugging_timeout 300
crudini --set $cfg DEFAULT novncproxy_base_url http://${PUBLIC_IP}:6080/vnc_auto.html
crudini --set $cfg DEFAULT vncserver_listen 0.0.0.0
crudini --set $cfg DEFAULT vncserver_proxyclient_address ${PUBLIC_IP}
crudini --set $cfg DEFAULT vnc_enabled True
crudini --set $cfg DEFAULT volume_api_class nova.volume.cinder.API crudini --set $cfg DEFAULT volume_api_class nova.volume.cinder.API
crudini --set $cfg DEFAULT image_service nova.image.glance.GlanceImageService crudini --set $cfg DEFAULT image_service nova.image.glance.GlanceImageService
crudini --set $cfg DEFAULT osapi_volume_listen 0.0.0.0 crudini --set $cfg DEFAULT osapi_volume_listen 0.0.0.0

View File

@ -5,6 +5,16 @@
cfg=/etc/nova/nova.conf cfg=/etc/nova/nova.conf
check_required_vars NOVA_NOVNC_PROXYCLIENT_IP
# Configures novnc to listen on all interfaces and instructs nova-compute to
# announce PROXYCLIENT_IP to the nova-vncproxy. Clients like Horizon will
# connect with this address.
# As such, PROXYCLIENT_IP is unique per compute node.
crudini --set $cfg DEFAULT vnc_enabled "True"
crudini --set $cfg DEFAULT vncserver_listen "0.0.0.0"
crudini --set $cfg DEFAULT vncserver_proxyclient_address "${NOVA_NOVNC_PROXYCLIENT_IP}"
# configure logging # configure logging
crudini --set $cfg DEFAULT log_file "${NOVA_COMPUTE_LOG_FILE}" crudini --set $cfg DEFAULT log_file "${NOVA_COMPUTE_LOG_FILE}"

View File

@ -0,0 +1,8 @@
FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%nova-base:%%KOLLA_TAG%%
MAINTAINER Kolla Project (https://launchpad.net/kolla)
RUN yum -y install openstack-nova-console && yum clean all
ADD start.sh /start.sh
CMD ["/start.sh"]

View File

@ -0,0 +1 @@
../../../tools/build-docker-image

View File

@ -0,0 +1,13 @@
#!/bin/bash
set -e
. /opt/kolla/config-nova.sh
cfg=/etc/nova/nova.conf
check_required_vars NOVA_CONSOLEAUTH_LOG_FILE
crudini --set $cfg DEFAULT log_file "${NOVA_CONSOLEAUTH_LOG_FILE}"
echo Starting nova-consoleauth
exec /usr/bin/nova-consoleauth

View File

@ -0,0 +1,10 @@
FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%nova-base:%%KOLLA_TAG%%
MAINTAINER Kolla Project (https://launchpad.net/kolla)
RUN yum -y install \
novnc openstack-nova-novncproxy && \
yum clean all
ADD start.sh /start.sh
CMD ["/start.sh"]

View File

@ -0,0 +1 @@
../../../tools/build-docker-image

View File

@ -0,0 +1,23 @@
#!/bin/bash
set -e
. /opt/kolla/kolla-common.sh
cfg=/etc/nova/nova.conf
check_required_vars PUBLIC_IP NOVA_NOVNC_PROXY_SERVICE_HOST NOVA_NOVNC_PROXY_PORT \
NOVA_NOVNC_BASE_ADDRESS NOVA_NOVNCPROXY_LOG_FILE
crudini --set $cfg DEFAULT log_file "${NOVA_NOVNCPROXY_LOG_FILE}"
# Listen on all interfaces on port $NOVA_NOVNC_PROXY_PORT for incoming novnc
# requests.
# The base_url is given to clients to connect to, like Horizon, so this could
# very well be fancy DNS name.
echo Configuring VNC...
crudini --set $cfg DEFAULT vnc_enabled "True"
crudini --set $cfg DEFAULT novncproxy_host "${NOVA_NOVNC_PROXY_SERVICE_HOST}"
crudini --set $cfg DEFAULT novncproxy_port "${NOVA_NOVNC_PROXY_PORT}"
crudini --set $cfg DEFAULT novncproxy_base_url "http://${NOVA_NOVNC_BASE_ADDRESS}:${NOVA_NOVNC_PROXY_PORT}/vnc_auto.html"
echo Starting nova-novncproxy
exec /usr/bin/nova-novncproxy

View File

@ -40,6 +40,8 @@ NOVA_API_LOG_FILE=
NOVA_CONDUCTOR_LOG_FILE= NOVA_CONDUCTOR_LOG_FILE=
NOVA_SCHEDULER_LOG_FILE= NOVA_SCHEDULER_LOG_FILE=
NOVA_COMPUTE_LOG_FILE= NOVA_COMPUTE_LOG_FILE=
NOVA_CONSOLEAUTH_LOG_FILE=
NOVA_NOVNCPROXY_LOG_FILE=
NEUTRON_SERVER_LOG_FILE= NEUTRON_SERVER_LOG_FILE=
NEUTRON_L3_AGENT_LOG_FILE= NEUTRON_L3_AGENT_LOG_FILE=
NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE= NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE=
@ -83,6 +85,10 @@ NOVA_PUBLIC_INTERFACE=$MY_DEV
NOVA_FLAT_INTERFACE=eth1 NOVA_FLAT_INTERFACE=eth1
ENABLED_APIS=ec2,osapi_compute,metadata ENABLED_APIS=ec2,osapi_compute,metadata
METADATA_HOST=$HOST_IP METADATA_HOST=$HOST_IP
NOVA_NOVNC_PROXY_PORT=6080
NOVA_NOVNC_PROXY_SERVICE_HOST=0.0.0.0
NOVA_NOVNC_BASE_ADDRESS=${PUBLIC_IP}
NOVA_NOVNC_PROXYCLIENT_IP=${PUBLIC_IP}
# Neutron # Neutron
NEUTRON_DB_NAME=neutron NEUTRON_DB_NAME=neutron
@ -127,6 +133,8 @@ NOVA_API_LOG_FILE=$NOVA_API_LOG_FILE
NOVA_CONDUCTOR_LOG_FILE=$NOVA_CONDUCTOR_LOG_FILE NOVA_CONDUCTOR_LOG_FILE=$NOVA_CONDUCTOR_LOG_FILE
NOVA_SCHEDULER_LOG_FILE=$NOVA_SCHEDULER_LOG_FILE NOVA_SCHEDULER_LOG_FILE=$NOVA_SCHEDULER_LOG_FILE
NOVA_COMPUTE_LOG_FILE=$NOVA_COMPUTE_LOG_FILE NOVA_COMPUTE_LOG_FILE=$NOVA_COMPUTE_LOG_FILE
NOVA_CONSOLEAUTH_LOG_FILE=$NOVA_CONSOLEAUTH_LOG_FILE
NOVA_NOVNCPROXY_LOG_FILE=$NOVA_NOVNCPROXY_LOG_FILE
NEUTRON_SERVER_LOG_FILE=$NEUTRON_SERVER_LOG_FILE NEUTRON_SERVER_LOG_FILE=$NEUTRON_SERVER_LOG_FILE
NEUTRON_L3_AGENT_LOG_FILE=$NEUTRON_L3_AGENT_LOG_FILE NEUTRON_L3_AGENT_LOG_FILE=$NEUTRON_L3_AGENT_LOG_FILE
NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE=$NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE=$NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE
@ -166,6 +174,10 @@ NOVA_EC2_API_SERVICE_HOST=$NOVA_EC2_SERVICE_HOST
NOVA_EC2_SERVICE_HOST=$NOVA_EC2_SERVICE_HOST NOVA_EC2_SERVICE_HOST=$NOVA_EC2_SERVICE_HOST
NOVA_KEYSTONE_PASSWORD=$NOVA_KEYSTONE_PASSWORD NOVA_KEYSTONE_PASSWORD=$NOVA_KEYSTONE_PASSWORD
NOVA_KEYSTONE_USER=$NOVA_KEYSTONE_USER NOVA_KEYSTONE_USER=$NOVA_KEYSTONE_USER
NOVA_NOVNC_PROXY_SERVICE_HOST=$NOVA_NOVNC_PROXY_SERVICE_HOST
NOVA_NOVNC_PROXY_PORT=$NOVA_NOVNC_PROXY_PORT
NOVA_NOVNC_BASE_ADDRESS=${NOVA_NOVNC_BASE_ADDRESS}
NOVA_NOVNC_PROXYCLIENT_IP=${NOVA_NOVNC_PROXYCLIENT_IP}
NEUTRON_SHARED_SECRET=$NEUTRON_SHARED_SECRET NEUTRON_SHARED_SECRET=$NEUTRON_SHARED_SECRET
NEUTRON_DB_NAME=$NEUTRON_DB_NAME NEUTRON_DB_NAME=$NEUTRON_DB_NAME
NEUTRON_DB_USER=$NEUTRON_DB_USER NEUTRON_DB_USER=$NEUTRON_DB_USER

View File

@ -28,7 +28,7 @@ function process_all {
process mariadb process mariadb
process keystone process keystone
process glance-api-registry process glance-api-registry
process nova-api-conductor-scheduler process nova-api-conductor-scheduler-consoleauth-novncproxy
if [[ "${NETWORK_MANAGER}" == "nova" ]] ; then if [[ "${NETWORK_MANAGER}" == "nova" ]] ; then
process nova-compute-network process nova-compute-network
else else