diff options
| -rw-r--r-- | ansible/group_vars/all/nova.yml | 15 | ||||
| -rw-r--r-- | ansible/roles/loadbalancer/tasks/precheck.yml | 1 | ||||
| -rw-r--r-- | ansible/roles/nova-cell/defaults/main.yml | 2 | ||||
| -rw-r--r-- | ansible/roles/nova-cell/tasks/loadbalancer.yml | 6 | ||||
| -rw-r--r-- | ansible/roles/nova-cell/templates/nova.conf.j2 | 11 | ||||
| -rw-r--r-- | doc/source/reference/compute/nova-guide.rst | 15 | ||||
| -rw-r--r-- | releasenotes/notes/expose-additional-spice-configuration-6ea8eedf4545ff04.yaml | 9 |
7 files changed, 49 insertions, 10 deletions
diff --git a/ansible/group_vars/all/nova.yml b/ansible/group_vars/all/nova.yml index f1996cd73..4b116200a 100644 --- a/ansible/group_vars/all/nova.yml +++ b/ansible/group_vars/all/nova.yml @@ -58,12 +58,19 @@ nova_novncproxy_fqdn: "{{ kolla_external_fqdn }}" nova_novncproxy_port: "6080" nova_novncproxy_listen_port: "{{ nova_novncproxy_port }}" nova_novncproxy_public_port: "{{ haproxy_single_external_frontend_public_port if haproxy_single_external_frontend | bool else nova_novncproxy_port }}" -nova_spicehtml5proxy_fqdn: "{{ kolla_external_fqdn }}" -nova_spicehtml5proxy_port: "6082" -nova_spicehtml5proxy_listen_port: "{{ nova_spicehtml5proxy_port }}" -nova_spicehtml5proxy_public_port: "{{ haproxy_single_external_frontend_public_port if haproxy_single_external_frontend | bool else nova_spicehtml5proxy_port }}" nova_serialproxy_fqdn: "{{ kolla_external_fqdn }}" nova_serialproxy_port: "6083" nova_serialproxy_listen_port: "{{ nova_serialproxy_port }}" nova_serialproxy_public_port: "{{ haproxy_single_external_frontend_public_port if haproxy_single_external_frontend | bool else nova_serialproxy_port }}" nova_serialproxy_protocol: "{{ 'wss' if kolla_enable_tls_external | bool else 'ws' }}" + +nova_spicehtml5proxy_fqdn: "{{ kolla_external_fqdn }}" +nova_spicehtml5proxy_port: "6082" +nova_spicehtml5proxy_listen_port: "{{ nova_spicehtml5proxy_port }}" +nova_spicehtml5proxy_public_port: "{{ haproxy_single_external_frontend_public_port if haproxy_single_external_frontend | bool else nova_spicehtml5proxy_port }}" +nova_spice_html5: true +nova_spice_image_compression: "auto_glz" +nova_spice_jpeg_compression: "auto" +nova_spice_zlib_compression: "auto" +nova_spice_playback_compression: true +nova_spice_streaming_mode: "filter" diff --git a/ansible/roles/loadbalancer/tasks/precheck.yml b/ansible/roles/loadbalancer/tasks/precheck.yml index f9b7a63c8..73e3a1566 100644 --- a/ansible/roles/loadbalancer/tasks/precheck.yml +++ b/ansible/roles/loadbalancer/tasks/precheck.yml @@ -608,6 +608,7 @@ when: - enable_nova | bool - nova_console == 'spice' + - nova_spice_html5 | bool - inventory_hostname in groups['loadbalancer'] - haproxy_stat.find('nova_spicehtml5proxy') == -1 - haproxy_vip_prechecks diff --git a/ansible/roles/nova-cell/defaults/main.yml b/ansible/roles/nova-cell/defaults/main.yml index ce66c7015..6979408e9 100644 --- a/ansible/roles/nova-cell/defaults/main.yml +++ b/ansible/roles/nova-cell/defaults/main.yml @@ -33,7 +33,7 @@ nova_cell_services: container_name: "nova_spicehtml5proxy" group: "{{ nova_cell_spicehtml5proxy_group }}" image: "{{ nova_spicehtml5proxy_image_full }}" - enabled: "{{ nova_console == 'spice' }}" + enabled: "{{ nova_console == 'spice' and (nova_spice_html5 | bool) }}" volumes: "{{ nova_spicehtml5proxy_default_volumes + nova_spicehtml5proxy_extra_volumes }}" dimensions: "{{ nova_spicehtml5proxy_dimensions }}" healthcheck: "{{ nova_spicehtml5proxy_healthcheck }}" diff --git a/ansible/roles/nova-cell/tasks/loadbalancer.yml b/ansible/roles/nova-cell/tasks/loadbalancer.yml index 33919f749..5c18a37c4 100644 --- a/ansible/roles/nova-cell/tasks/loadbalancer.yml +++ b/ansible/roles/nova-cell/tasks/loadbalancer.yml @@ -73,10 +73,10 @@ cell_proxy_project_services: nova-spicehtml5proxy: group: "{{ nova_cell_spicehtml5proxy_group }}" - enabled: "{{ hostvars[groups[cell_proxy_group][0]]['nova_console'] == 'spice' }}" + enabled: "{{ hostvars[groups[cell_proxy_group][0]]['nova_console'] == 'spice' and (nova_spice_html5 | bool) }}" haproxy: nova_spicehtml5proxy: - enabled: "{{ hostvars[groups[cell_proxy_group][0]]['nova_console'] == 'spice' }}" + enabled: "{{ hostvars[groups[cell_proxy_group][0]]['nova_console'] == 'spice' and (nova_spice_html5 | bool) }}" mode: "http" external: false port: "{{ hostvars[groups[cell_proxy_group][0]]['nova_spicehtml5proxy_port'] }}" @@ -84,7 +84,7 @@ backend_http_extra: - "timeout tunnel {{ haproxy_nova_spicehtml5_proxy_tunnel_timeout }}" nova_spicehtml5proxy_external: - enabled: "{{ hostvars[groups[cell_proxy_group][0]]['nova_console'] == 'spice' }}" + enabled: "{{ hostvars[groups[cell_proxy_group][0]]['nova_console'] == 'spice' and (nova_spice_html5 | bool) }}" mode: "http" external: true external_fqdn: "{{ hostvars[groups[cell_proxy_group][0]]['nova_spicehtml5proxy_fqdn'] }}" diff --git a/ansible/roles/nova-cell/templates/nova.conf.j2 b/ansible/roles/nova-cell/templates/nova.conf.j2 index 5e98a8c9f..4f5c2f88d 100644 --- a/ansible/roles/nova-cell/templates/nova.conf.j2 +++ b/ansible/roles/nova-cell/templates/nova.conf.j2 @@ -62,12 +62,19 @@ enabled = false [spice] enabled = true server_listen = {{ api_interface_address }} +image_compression = {{ nova_spice_image_compression }} +jpeg_compression = {{ nova_spice_jpeg_compression }} +zlib_compression = {{ nova_spice_zlib_compression }} +playback_compression = {{ nova_spice_playback_compression }} +streaming_mode = {{ nova_spice_streaming_mode }} +{% if nova_spice_html5 | bool %} server_proxyclient_address = {{ api_interface_address }} -{% if inventory_hostname in groups[nova_cell_compute_group] %} +{% if inventory_hostname in groups[nova_cell_compute_group] %} html5proxy_base_url = {{ nova_spicehtml5proxy_fqdn | kolla_url(public_protocol, nova_spicehtml5proxy_public_port, '/spice_auto.html') }} -{% endif %} +{% endif %} html5proxy_host = {{ api_interface_address }} html5proxy_port = {{ nova_spicehtml5proxy_listen_port }} +{% endif %} {% elif nova_console == 'none' %} [vnc] enabled = false diff --git a/doc/source/reference/compute/nova-guide.rst b/doc/source/reference/compute/nova-guide.rst index 8e083f241..87757f930 100644 --- a/doc/source/reference/compute/nova-guide.rst +++ b/doc/source/reference/compute/nova-guide.rst @@ -45,6 +45,21 @@ Valid options are ``none``, ``novnc`` and ``spice``. Additionally, serial console support can be enabled by setting ``enable_nova_serialconsole_proxy`` to ``yes``. +``spice`` consoles have additional configuration options used by Kolla Ansible: + +* nova_spice_html5: configures whether the HTML5 transcoding proxy used by + Horizon is enabled, and defaults to ``true``. +* nova_spice_image_compression: which compression algorithm to use for images + when using the SPICE console type. Defaults to ``auto_glz``. +* nova_spice_jpeg_compression: whether or not to use JPEG compression with + SPICE consoles. Defaults to ``auto``. +* nova_spice_zlib_compression: whether or not to use zlib compression with + SPICE consoles. Defaults to ``auto``. +* nova_spice_playback_compression: whether or not to use compression for video + playback. Defaults to ``true``. +* nova_spice_streaming_mode: what streaming mode to use with SPICE consoles. + Defaults to ``filter``. + Cells ===== diff --git a/releasenotes/notes/expose-additional-spice-configuration-6ea8eedf4545ff04.yaml b/releasenotes/notes/expose-additional-spice-configuration-6ea8eedf4545ff04.yaml new file mode 100644 index 000000000..c03b60e0d --- /dev/null +++ b/releasenotes/notes/expose-additional-spice-configuration-6ea8eedf4545ff04.yaml @@ -0,0 +1,9 @@ +--- +other: + - | + This release exposes additional configuration options for OpenStack + Compute consoles which utilize the SPICE protocol. These configuration + options have been defaulted to the previous implied values, so do not + need to be set if you're happy with the current behavior. The + Kolla-Ansible Nova guide has been updated with further details of these + new configuration options. |
